docker部署mysql主从复制配置详解

1,下载镜像,启动容器
docker pull docker.io/mysql
docker run --name mastermysql -d -p 3301:3306 -e MYSQL_ROOT_PASSWORD=root docker.io/mysql
docker run --name slavemysql -d -p 3302:3306 -e MYSQL_ROOT_PASSWORD=root docker.io/mysql

首先在主从没有生效的时候,要保持两台服务器数据库、表相同,数据相同
master容器上执行:
mysqldump -uroot -p --all-databases >/root/all_database.sql

拷贝到slave容器中,在slave从库上执行:
mysql -uroot -p <all_database.sql

2,修改配置文件
进入到容器内部,修改配置文件/etc/mysql/mysql.conf.d/mysqld.cnf

主库配置
[mysqld]
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
datadir        = /var/lib/mysql
server_id = 1
log-bin = mysql-bin #发送binlog日志给从库
read-only = 0 #读写权限
replicate-ignore-db = mysql
replicate-ignore-db = sys
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
max_binlog_size = 500M
expire_logs_days = 15
#log-error    = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address    = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

从库配置
[mysqld]
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
datadir        = /var/lib/mysql
#log-error    = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address    = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server_id = 2 #数据库唯一标识
read-only=1 #只读权限
replicate-ignore-db=mysql #不同步mysql库
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
#以下开启多线程同步数据
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON

修改完配置后 docker restart 重启容器


3,master容器设置
//进入master容器
docker exec -it mastermysql bash
//启动mysql命令,刚在创建窗口时我们把密码设置为:root
mysql -u root -p
//创建一个用户来同步数据,每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE 权限。
CREATE USER 'slave'@ '%' IDENTIFIED BY '123456';  (其实可省略)
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';
//这里表示创建一个slaver同步账号slave,允许访问的IP地址为%,%表示通配符
//查看状态,记住File、Position的值,在Slave中将用到
show master status/G;

slave容器设置
//进入slaver容器
docker exec -it slavemysql bash
//启动mysql命令,刚在创建窗口时我们把密码设置为:root
mysql -u root -p
//设置主库链接
change master to master_host='172.17.0.2',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3301;
//启动从库同步
start slave;
//查看状态
show slave status\G;

如果 show slave status\G命令结果中出现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两项都为Yes,那说明没问题了。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙门空海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值