01-上篇-基于Docker 的MySQL的主从分离实现

前言:关于MySQL读写主从实现,分两步:
第一步,需要现有主从的环境,利用docker快速实现; -----上篇,即本文!
第二步,利用已有的环境进行JavaEE的Web项目配置。 -----下篇,基于SpringBoot的SpringDataJpa的实现!

基于Docker 的MySQL的主从分离
使用脚本执行,自动创建MySQL数据库的主从复制
环境信息:
OS:CentOS 7.5 Docker:1.13.1 DB:MySQL5.7.20
mysql用户:root/1234556 repl/repl

步骤:
1.附件中的CreateMySQLMasterSlave.sh脚本以root身份执行

2.下面的这行代码,不报错,但是经检查也没有起作用,需要手动到master容器中执行;
docker exec -it master mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;CREATE USER 'repl'@'%' IDENTIFIED BY 'repl';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';FLUSH PRIVILEGES;"
3.检查slave的状态:
如果slave状态:Slave_IO_State: Waiting for master to send event
且Slave_IO_Running: Yes Slave_SQL_Running: Yes  则成功!
4.测试方式:
在主库创建一个数据库,从库会自动同步创建同样的数据库。

如果发现还有问题,使用yum remove docker*删除docker的组件,重启机器后在执行脚本。
PS:
主:
[mysqld]
port = 3306 #通过配置文件的方式指定端口
# [必须]服务器唯一ID,默认是1,一般取IP最后一段,这里看情况分配
server-id=1 #每个服务器对应不同的id,不要重复!!
# [必须]启用二进制日志
log-bin=/var/lib/mysql/mysql-bin #路径不要配置错误
#不同步的数据库
binlog-ignore-db = mysql #下面的这两个配置项是互斥的,本选项多配少配都可能导致失败!
#设置binglog只对数据库test有效,这里可以不设
#binlog-do-db = db_demo
从:
[mysqld]
port = 3307
# [必须]服务器唯一ID,默认是1,一般取IP最后一段,这里看情况分配
server-id=2
# [必须]启用二进制日志
log-bin=/var/lib/mysql/mysql-bin

Docker MySQL主从复制slave出错不同步时处理 https://blog.csdn.net/seteor/article/details/17264633
a.修改salve节点的mysql的配置文件,通过slave_skip_errors参数来跳所有错误或指定类型的错误
vi /etc/my.cnf
[mysqld]
#跳过指定error no类型的错误,跳过一些不影响数据库数据一致性的错误,让同步尽可能正常工作!
#slave-skip-errors=1062,1051,1053,1146 
#slave-skip-errors=all #跳过所有错误


所有的文件参看附件:

MySQLMasterSlave.zip


参考地址:
其他参考:


猜你喜欢

转载自blog.csdn.net/dusuanyun/article/details/81059472