dokcer搭建mysql主从集群
| master | 192.128.1.146 |
| salave | 192.168.1.245 |
- master搭建
1.拉取镜像:docker pull mysql:5.7.19
2.运行:docker run -p 3306:3306 --name mysql -v /mysql/conf:/etc/mysql/conf.d -v /mysql/data:/var/lib/mysql -v /mysql/bin-log:/logs -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.19
3.修改root账户允许远程连接:docker exec -it containerId /bin/sh 进入docker内部,执行mysql -uroot -p,输入密码,进入mysql命令行操作界面。
GRANT ALL ON *.* TO 'root'@'%';
flush privileges;4.修改my.cnf文件开启二进制日志: 服务器/mysql/conf目录创建my.cnf配置文件
[mysqld]
log-bin=/logs/mysql-bin #开启二进制日志,master节点必须开启
server-id=1 #设置server-id
master-info-repository=table # 能够使用set global 动态改动
relay-log-info-repository=table # 能够使用setglobal 动态改动
relay-log-recovery=1 # 仅仅读參数,必须改动my.cnf重新启动mysql
enforce_gtid_consistency = warn
enforce_gtid_consistency = on
gtid_mode = off_permissive
gtid_mode = on_permissive
gtid_mode = onlower_case_table_names=1 #0:区分大小写,1:不区分大小写
default-time_zone = '+8:00'
5.重启mysql服务
6.创建数据同步账户CREATE USER 'repL'@'%' IDENTIFIED BY 'slavepass';#创建用户
GRANT REPLICATION SLAVE ON *.* TO 'repL'@'%';#分配权限
flush privileges; #刷新权限
SHOW MASTER STATUS; - slave搭建
1.拉取镜像:docker pull mysql:5.7.19
2.运行:docker run -p 3306:3306 --name mysql -v /mysql/conf:/etc/mysql/conf.d -v /mysql/data:/var/lib/mysql -v /mysql/bin-log:/logs -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.19
3.修改root账户允许远程连接:docker exec -it containerId /bin/sh 进入docker内部,执行mysql -uroot -p,输入密码,进入mysql命令行操作界面。
GRANT ALL ON *.* TO 'root'@'%';
flush privileges;4.修改my.cnf文件: 服务器/mysql/conf目录创建my.cnf配置文件
[mysqld]
server-id=2 #设置server-id,必须唯一master-info-repository=table # 能够使用set global 动态改动
relay-log-info-repository=table # 能够使用setglobal 动态改动
relay-log-recovery=1 # 仅仅读參数,必须改动my.cnf重新启动mysql
enforce_gtid_consistency = warn
enforce_gtid_consistency = on
gtid_mode = off_permissive
gtid_mode = on_permissive
gtid_mode = onlower_case_table_names=1 #0:区分大小写,1:不区分大小写
default-time_zone = '+8:00'
5.重启mysql服务
6.执行同步脚本CHANGE MASTER TO MASTER_HOST='192.168.1.146',MASTER_USER='repL',MASTER_PASSWORD='slavepass',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=1382;
MASTER_LOG_FILE与MASTER_LOG_POS根据master查询得到
START SLAVE;
SHOW SLAVE STATUS;
slave_io_running与slave_sql_running均为yes表示同步成功。7.如果主库有数据则需要先把数据导入从库。 执行FLUSH TABLES WITH READ LOCK,锁住主库数据,从库导入完成之后,执行UNLOCK TABLES解锁。

浙公网安备 33010602011771号