经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Docker » 查看文章
使用Docker部署MySQL 5.7&8.0主从集群的方法步骤
来源:jb51  时间:2019/3/22 8:39:29  对本文有异议

> 部署 MySQL 5.7 集群 master & slave (仅测试用)

镜像版本 5.7

1、创建 overlay 网络

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

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

  1. !includedir /etc/mysql/conf.d/
  2. !includedir /etc/mysql/mysql.conf.d/
  3.  
  4. [mysqld]
  5. log-bin=mysql-bin
  6. server-id=1
  7. gtid-mode=ON
  8. enforce-gtid-consistency=ON
  1. !includedir /etc/mysql/conf.d/
  2. !includedir /etc/mysql/mysql.conf.d/
  3.  
  4. [mysqld]
  5. server-id=2
  6. gtid-mode=ON
  7. enforce-gtid-consistency=ON

3、启动 2 个 MYSQL:mysql-master 、mysql-slave

  1. docker run -d --name mysql-master --network common-network -e MYSQL_ROOT_PASSWORD=Passw0rd -v `pwd`/master.cnf:/etc/mysql/my.cnf -p 3306:3306 -d mysql:5.7
  1. docker run -d --name mysql-slave --network common-network -e MYSQL_ROOT_PASSWORD=Passw0rd -v `pwd`/slave.cnf:/etc/mysql/my.cnf -p 3307:3306 -d mysql:5.7

4、添加从库用于复制的用户

  1. docker run -it --rm --network common-network mysql mysql -hmysql-master -uroot -pPassw0rd -e "CREATE USER 'repl'@'%' IDENTIFIED BY 'password' REQUIRE SSL; " -e "GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';"

5、连接 master & slave

  1. docker run -it --rm --network common-network mysql mysql -hmysql-slave -uroot -pPassw0rd -e "CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1, MASTER_SSL=1;" -e "START SLAVE;"

6、验证 slave 状态

  1. docker run -it --rm --network common-network mysql mysql -hmysql-slave -uroot -pPassw0rd -e "show slave status\G"

如下状态为正常:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

> 部署 MySQL 8.0 集群 master & slave(仅测试用)

镜像版本 mysql:8.0

1、创建 overlay 网络

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

2、启动 2 个 MYSQL:mysql-master 、mysql-slave

  1. docker run -d --name mysql-master --network common-network -e MYSQL_ROOT_PASSWORD=Passw0rd -p 3306:3306 -d mysql --default-authentication-plugin=mysql_native_password
  1. docker run -d --name mysql-slave --network common-network -e MYSQL_ROOT_PASSWORD=Passw0rd -p 3307:3306 -d mysql --default-authentication-plugin=mysql_native_password

3、配置 master & slave

  1. docker run -it --rm --network common-network mysql mysql -hmysql-master -uroot -pPassw0rd -e "SET PERSIST server_id=1;" -e "SET PERSIST_ONLY gtid_mode=ON;" -e "SET PERSIST_ONLY enforce_gtid_consistency=true; " -e "CREATE USER 'repl'@'%' IDENTIFIED BY 'password' REQUIRE SSL; " -e "GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';"
  1. docker run -it --rm --network common-network mysql mysql -hmysql-slave -uroot -pPassw0rd -e "SET PERSIST server_id=2;" -e "SET PERSIST_ONLY gtid_mode=ON;" -e "SET PERSIST_ONLY enforce_gtid_consistency=true; "

4、重启 master & slave

  1. docker restart mysql-master mysql-slave

5、连接 master & slave

  1. docker run -it --rm --network common-network mysql mysql -hmysql-slave -uroot -pPassw0rd -e "CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1, MASTER_SSL=1;" -e "START SLAVE;"

6、验证 slave 状态

  1. docker run -it --rm --network common-network mysql mysql -hmysql-slave -uroot -pPassw0rd -e "show slave status\G"

如下状态为正常:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

> 验证数据同步

在 master 创建数据库 anoyi

  1. docker run -it --rm --network common-network mysql mysql -hmysql-master -uroot -pPassw0rd -e "create database anoyi default character set utf8mb4 collate utf8mb4_general_ci;"

在 slave 查看数据库列表

  1. docker run -it --rm --network common-network mysql mysql -hmysql-slave -uroot -pPassw0rd -e "show databases;"
  2. mysql: [Warning] Using a password on the command line interface can be insecure.
  3. +--------------------+
  4. | Database |
  5. +--------------------+
  6. | anoyi |
  7. | information_schema |
  8. | mysql |
  9. | performance_schema |
  10. | sys |
  11. +--------------------+

相关资料:

mysql 5.7: https://dev.mysql.com/doc/refman/5.7/en/replication.html
mysql 8.0: https://dev.mysql.com/doc/refman/8.0/en/replication.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号