使用Docker部署MySQL 5.7&8.0主从集群的方法步骤
>部署MySQL5.7集群master&slave(仅测试用)
镜像版本5.7
1、创建overlay网络
dockernetworkcreate--driveroverlaycommon-network--attachable
2、编辑两个配置文件master.cnf与slave.cnf
!includedir/etc/mysql/conf.d/ !includedir/etc/mysql/mysql.conf.d/ [mysqld] log-bin=mysql-bin server-id=1 gtid-mode=ON enforce-gtid-consistency=ON
!includedir/etc/mysql/conf.d/ !includedir/etc/mysql/mysql.conf.d/ [mysqld] server-id=2 gtid-mode=ON enforce-gtid-consistency=ON
3、启动2个MYSQL:mysql-master、mysql-slave
dockerrun-d\ --namemysql-master\ --networkcommon-network\ -eMYSQL_ROOT_PASSWORD=Passw0rd\ -v`pwd`/master.cnf:/etc/mysql/my.cnf\ -p3306:3306\ -dmysql:5.7
dockerrun-d\ --namemysql-slave\ --networkcommon-network\ -eMYSQL_ROOT_PASSWORD=Passw0rd\ -v`pwd`/slave.cnf:/etc/mysql/my.cnf\ -p3307:3306\ -dmysql:5.7
4、添加从库用于复制的用户
dockerrun-it--rm--networkcommon-networkmysqlmysql-hmysql-master-uroot-pPassw0rd\ -e"CREATEUSER'repl'@'%'IDENTIFIEDBY'password'REQUIRESSL;"\ -e"GRANTREPLICATIONSLAVEON*.*TO'repl'@'%';"
5、连接master&slave
dockerrun-it--rm--networkcommon-networkmysqlmysql-hmysql-slave-uroot-pPassw0rd\ -e"CHANGEMASTERTOMASTER_HOST='mysql-master',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='password',MASTER_AUTO_POSITION=1,MASTER_SSL=1;"\ -e"STARTSLAVE;"
6、验证slave状态
dockerrun-it--rm--networkcommon-networkmysqlmysql-hmysql-slave-uroot-pPassw0rd-e"showslavestatus\G"
如下状态为正常:
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
>部署MySQL8.0集群master&slave(仅测试用)
镜像版本mysql:8.0
1、创建overlay网络
dockernetworkcreate--driveroverlaycommon-network--attachable
2、启动2个MYSQL:mysql-master、mysql-slave
dockerrun-d\ --namemysql-master\ --networkcommon-network\ -eMYSQL_ROOT_PASSWORD=Passw0rd\ -p3306:3306\ -dmysql--default-authentication-plugin=mysql_native_password
dockerrun-d\ --namemysql-slave\ --networkcommon-network\ -eMYSQL_ROOT_PASSWORD=Passw0rd\ -p3307:3306\ -dmysql--default-authentication-plugin=mysql_native_password
3、配置master&slave
dockerrun-it--rm--networkcommon-networkmysqlmysql-hmysql-master-uroot-pPassw0rd\ -e"SETPERSISTserver_id=1;"\ -e"SETPERSIST_ONLYgtid_mode=ON;"\ -e"SETPERSIST_ONLYenforce_gtid_consistency=true;"\ -e"CREATEUSER'repl'@'%'IDENTIFIEDBY'password'REQUIRESSL;"\ -e"GRANTREPLICATIONSLAVEON*.*TO'repl'@'%';"
dockerrun-it--rm--networkcommon-networkmysqlmysql-hmysql-slave-uroot-pPassw0rd\ -e"SETPERSISTserver_id=2;"\ -e"SETPERSIST_ONLYgtid_mode=ON;"\ -e"SETPERSIST_ONLYenforce_gtid_consistency=true;"
4、重启master&slave
dockerrestartmysql-mastermysql-slave
5、连接master&slave
dockerrun-it--rm--networkcommon-networkmysqlmysql-hmysql-slave-uroot-pPassw0rd\ -e"CHANGEMASTERTOMASTER_HOST='mysql-master',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='password',MASTER_AUTO_POSITION=1,MASTER_SSL=1;"\ -e"STARTSLAVE;"
6、验证slave状态
dockerrun-it--rm--networkcommon-networkmysqlmysql-hmysql-slave-uroot-pPassw0rd-e"showslavestatus\G"
如下状态为正常:
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
>验证数据同步
在master创建数据库anoyi
dockerrun-it--rm--networkcommon-networkmysqlmysql-hmysql-master-uroot-pPassw0rd\ -e"createdatabaseanoyidefaultcharactersetutf8mb4collateutf8mb4_general_ci;"
在slave查看数据库列表
dockerrun-it--rm--networkcommon-networkmysqlmysql-hmysql-slave-uroot-pPassw0rd\ -e"showdatabases;" mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure. +--------------------+ |Database| +--------------------+ |anoyi| |information_schema| |mysql| |performance_schema| |sys| +--------------------+
相关资料:
mysql5.7:https://dev.mysql.com/doc/refman/5.7/en/replication.html
mysql8.0:https://dev.mysql.com/doc/refman/8.0/en/replication.html
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。