Docker下 创建主从复制的Mysql数据库

in 分享 with 0 comment

Docker下 创建主从复制的Mysql数据库

0. 初始化网络

docker swarm init

1. 创建 overlay 网络

docker network create --driver overlay common-network --attachable

2. 编辑两个配置文件 master.cnf 与 slave.cnf

3. 启动 :mysql-master 、mysql-slave

4. 添加从库repl用于复制的用户

  docker run -it --rm --network common-network mysql mysql -hmysql-master -uroot -p你的root密码 -e "CREATE USER '你的主从复制账户'@'%' IDENTIFIED BY 'password' REQUIRE SSL; " -e "GRANT REPLICATION SLAVE ON *.* TO '你的主从复制账户'@'%';"

5. 连接 master & slave

  docker run -it --rm --network common-network mysql mysql -hmysql-slave -uroot -p你的root密码 -e "CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_PORT=3306, MASTER_USER='你的主从复制账户', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1, MASTER_SSL=1;" -e "START SLAVE;" 

6.验证 slave 状态

如下状态为正常:

Slave_IO_Running: Yes Slave_SQL_Running: Yes

  docker run -it --rm --network common-network mysql mysql -hmysql-slave -uroot -p你的root密码 -e "show slave status\G"

7. 验证数据同步

在 master 创建数据库 tzzxz

  docker run -it --rm --network common-network mysql mysql -hmysql-master -uroot -p你的root密码  -e "create database tzzxz default character set utf8mb4 collate utf8mb4_general_ci;"

在 slave 查看数据库列表

  docker run -it --rm --network common-network mysql mysql -hmysql-slave -uroot -p你的root密码 -e "show databases;"

slave信息如下,同步成功

   mysql: [Warning] Using a password on the command line interface can be insecure.
  +--------------------+
  | Database |
  +--------------------+
  | tzzxz |
  | information_schema |
  | mysql |
  | performance_schema |
  | sys |
  +--------------------+