可先查看第一篇《Docker Mysql数据库主从同步配置方法》介绍
二、具体操作1、创建目录(~/test/mysql_test1):
--mysql --mone --data --conf --my.cnf --mtwo --data --conf --my.cnf
2、主主配置文件
Mone: my.cnf
[mysqld] server_id = 1 log-bin= mysql-bin replicate-ignore-db=mysql replicate-ignore-db=sys replicate-ignore-db=information_schema replicate-ignore-db=performance_schema read-only=0 relay_log=mysql-relay-bin log-slave-updates=on auto-increment-offset=1 auto-increment-increment=2 !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/
Mtwo: my.cnf
[mysqld] server_id = 2 log-bin= mysql-bin replicate-ignore-db=mysql replicate-ignore-db=sys replicate-ignore-db=information_schema replicate-ignore-db=performance_schema read-only=0 relay_log=mysql-relay-bin log-slave-updates=on auto-increment-offset=2 auto-increment-increment=2 !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/
3、创建容器
//创建并启动主从容器; //mone docker run --name monemysql -d -p 3317:3306 -e MYSQL_ROOT_PASSWORD=root -v ~/test/mysql_test1/mone/data:/var/lib/mysql -v ~/test/mysql_test1/mone/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7 //mtwo docker run --name mtwomysql -d -p 3318:3306 -e MYSQL_ROOT_PASSWORD=root -v ~/test/mysql_test1/mtwo/data:/var/lib/mysql -v ~/test/mysql_test1/mtwo/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7
4、容器设置详细
mone容器设置:
//进入mone容器 docker exec -it monemysql mysql -u root -p //启动mysql命令,刚在创建窗口时我们把密码设置为:root //创建一个用户来同步数据 //这里表示创建一个slave同步账号slave,允许访问的IP地址为%,%表示通配符 GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456'; //查看状态,记住File、Position的值,在mtwo中将用到 show master status;
小技巧:
查看容器IP:
docker inspect monemysql | grep IPA
mtwo容器设置:
//进入mtwo容器 docker exec -it mtwomysql mysql -u root -p //启动mysql命令,刚在创建窗口时我们把密码设置为:root //设置主库链接,master_host即为容器IP,master_log_file和master_log_pos即为在mone容器中,通过show master status查出来的值; change master to master_host='172.17.0.11',master_user='slave',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=154,master_port=3306; //创建一个用户来同步数据 GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456'; //启动同步 start slave ; //查看状态 show master status;
设置完后,再次进入Mone容器
//进入mone容器 //启动mysql命令,刚在创建窗口时我们把密码设置为:root docker exec -it monemysql mysql -u root -p //设置mtwo主库链接,参数详细说明同上 change master to master_host='172.17.0.12',master_user='slave',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=443,master_port=3306; //启动同步 start slave ;
配置完成之后,可以验证双主配置是否正确
在mone容器中,查看:
show slave status\G;
在mtwo容器中,查看:
show slave status\G;
当红框两个Running状态都为Yes时,说明双主配置成功了~
三、验证
1、在mone库中操作:
create database mone_demo; use mone_demo; create table userinfo(username varchar(50),age int); insert into userinfo values('Tom',18); select * from userinfo;
2、在mone库操作完后,在mtwo库中查看验证
首先查看数据库,发现数据库已经同步过来了,继续验证:
发现表的数据也同步过来了。
3、在mtwo库中,在此库,此表中,新增记录
insert into userinfo values('mtwo',20);
在mone库中查看,发现在mtwo库中新增的记录,确实也同步到mone库中来了哦~
4、继续走一波验证,在mtwo库中,新增一个数据库,看是否同步到mone库中
create database mtwo_demo;
在mone库中,查看验证,查看数据库:
发现在mtwo库新增的数据库,已经同步到了mone容器中来了
到此为止,Mysql的主从同步和主主同步就介绍结束了,喜欢的,请点赞关注公众号哦~