0
点赞
收藏
分享

微信扫一扫

docker 搭建mysql读写分离

沐之轻语 2024-06-07 阅读 13

用Docker搭建MySQL读写分离

在实际项目中,为了提高数据库的性能和可靠性,常常会使用MySQL读写分离的方案。通过搭建MySQL主从复制,可以实现读操作负载均衡和故障恢复。本文将介绍如何使用Docker容器搭建MySQL读写分离,并提供代码示例。

1. 准备工作

首先,我们需要安装Docker和Docker Compose。Docker是一个容器化的平台,可以方便地构建、部署和运行应用程序。Docker Compose是用于定义和运行多个Docker容器的工具。

安装完Docker和Docker Compose后,我们可以开始搭建MySQL读写分离环境。

2. 编写Docker Compose配置文件

在项目根目录下创建一个docker-compose.yml文件,用于定义MySQL主从复制的容器。

```yaml
version: '3.1'

services:
  master:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: myapp
    networks:
      - db
    volumes:
      - master-data:/var/lib/mysql

  slave:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: myapp
      MYSQL_MASTER_HOST: master
      MYSQL_MASTER_USER: root
      MYSQL_MASTER_PASSWORD: password
    networks:
      - db
    volumes:
      - slave-data:/var/lib/mysql

volumes:
  master-data:
  slave-data:

networks:
  db:

3. 启动MySQL容器

在命令行中执行以下命令,启动MySQL主从复制容器:

docker-compose up

4. 配置MySQL主从复制

进入MySQL主容器的命令行,并执行以下SQL语句配置主从复制:

docker exec -it <master_container_id> mysql -uroot -ppassword

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

SHOW MASTER STATUS;

然后,进入MySQL从容器的命令行,执行以下SQL语句配置从节点,并启动从节点复制:

docker exec -it <slave_container_id> mysql -uroot -ppassword

CHANGE MASTER TO
  MASTER_HOST='master',
  MASTER_USER='repl',
  MASTER_PASSWORD='password',
  MASTER_LOG_FILE='<master_log_file>',
  MASTER_LOG_POS=<master_log_pos>;

START SLAVE;

5. 测试读写分离

通过连接MySQL主容器和从容器,可以进行读写分离的测试,主容器处理写操作,从容器处理读操作。

# 连接MySQL主容器
docker exec -it <master_container_id> mysql -uroot -ppassword

# 连接MySQL从容器
docker exec -it <slave_container_id> mysql -uroot -ppassword

6. 总结

通过以上步骤,我们成功搭建了MySQL读写分离的环墧,并进行了简单的测试。使用Docker搭建MySQL读写分离,方便快捷,同时可以有效提高数据库性能和可靠性。希望本文对您有所帮助!

附录

Sequence Diagram

sequenceDiagram
    participant Client
    participant Master
    participant Slave
    Client->>Master: Write Operation
    Master->>Master: Write Data
    Master->>Slave: Replicate Data
    Slave-->>Client: Read Operation

ER Diagram

erDiagram
    MASTER ||--o| SLAVE : Replicate

参考链接

  • [Docker官方文档](
  • [MySQL官方文档](

## 结尾

本文介绍了如何使用Docker搭建MySQL读写分离,通过配置MySQL主从复制实现了读写分离的方案。读写分离可以提高数据库的性能和可靠性,适用于大型应用程序的数据库架构设计。希望本文对您有所帮助,谢谢阅读!
举报

相关推荐

0 条评论