docker mysql 主从同步

2022/1/3 dockermysql

# docker mysql8 主从同步

# 步骤一

主配置文件 master/my.cnf

[mysqld]
# 主数据库端ID号
server_id = 101
# 开启二进制日志
log-bin = mysql-bin
# 指定slave要复制哪个库
binlog-do-db=mydb
# 不需要复制的数据库名
binlog-ignore-db = mysql
binlog_cache_size=1M
# 二进制日志自动删除的天数,默认值为0,表示“没有自动删除”,启动时和二进制日志循环时可能删除
expire_logs_days = 7
# 将函数复制到slave
log_bin_trust_function_creators = 1
binlog_format=mixed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

从配置文件 slave/my.cnf

[mysqld]
# 从数据库端ID号
server_id = 102
log-bin = mysql-bin
relay_log=replicas-mysql-relay-bin
log-slave-updates = 1
#slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误
#slave-skip-errors=all #跳过所有错误
# 指定slave要复制哪个库
binlog-do-db=mydb
# 不需要复制的数据库名
binlog-ignore-db=mysql
log_bin_trust_function_creators = 1
binlog_format=mixed
read_only=1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 步骤二

把两个my.conf文件放到对应docker的mysql/conf目录里

# 步骤三

先去主库
docker ps 查看 CONTAINER ID
docker exec -it CONTAINER ID bash 进入容器
mysql -u root -p 然后输入密码登陆
grant replication slave on . to 'root'@'从库ip' identified by '从库密码';
mysql 8.0如果失败就执行下面的

create user 'root'@'从库ip' identified by '从库密码';
grant all privileges on . to 'root'@'从库ip' with grant option;

flush privileges;更新
show master status; 拿到对应的 File和Position值 mysql-bin.000001 5042 下面从库要用

# 步骤四

再去从库进行
docker ps 查看 CONTAINER ID
docker exec -it CONTAINER ID bash 进入容器
mysql -u root -p 然后输入密码登陆
CHANGE MASTER TO MASTER_HOST='主库ip', MASTER_USER='root', MASTER_PASSWORD='主库密码', MASTER_LOG_FILE='主库生成的File文件名', MASTER_LOG_POS=Position值;
start slave; 开启同步 reset slave;重启同步出错时可删除重制
show slave status\G; 查看是否成功

最后更新时间: 2022/5/2 10:10:55