Docker Mysql數(shù)據(jù)庫雙主同步配置方法
一、背景
可先查看第一篇《Docker Mysql數(shù)據(jù)庫主從同步配置方法》介紹
二、具體操作
1、創(chuàng)建目錄(~/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、創(chuàng)建容器
//創(chuàng)建并啟動主從容器;
//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、容器設(shè)置詳細(xì)
mone容器設(shè)置:
//進(jìn)入mone容器
docker exec -it monemysql mysql -u root -p
//啟動mysql命令,剛在創(chuàng)建窗口時我們把密碼設(shè)置為:root
//創(chuàng)建一個用戶來同步數(shù)據(jù)
//這里表示創(chuàng)建一個slave同步賬號slave,允許訪問的IP地址為%,%表示通配符
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';
//查看狀態(tài),記住File、Position的值,在mtwo中將用到
show master status;
小技巧:
查看容器IP:
docker inspect monemysql | grep IPA

mtwo容器設(shè)置:
//進(jìn)入mtwo容器
docker exec -it mtwomysql mysql -u root -p
//啟動mysql命令,剛在創(chuàng)建窗口時我們把密碼設(shè)置為:root
//設(shè)置主庫鏈接,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;
//創(chuàng)建一個用戶來同步數(shù)據(jù)
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';
//啟動同步
start slave ;
//查看狀態(tài)
show master status;
設(shè)置完后,再次進(jìn)入Mone容器
//進(jìn)入mone容器
//啟動mysql命令,剛在創(chuàng)建窗口時我們把密碼設(shè)置為:root
docker exec -it monemysql mysql -u root -p
//設(shè)置mtwo主庫鏈接,參數(shù)詳細(xì)說明同上
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;

當(dāng)紅框兩個Running狀態(tài)都為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庫中查看驗證

首先查看數(shù)據(jù)庫,發(fā)現(xiàn)數(shù)據(jù)庫已經(jīng)同步過來了,繼續(xù)驗證:

發(fā)現(xiàn)表的數(shù)據(jù)也同步過來了。
3、在mtwo庫中,在此庫,此表中,新增記錄
insert into userinfo values('mtwo',20);
在mone庫中查看,發(fā)現(xiàn)在mtwo庫中新增的記錄,確實也同步到mone庫中來了哦~

4、繼續(xù)走一波驗證,在mtwo庫中,新增一個數(shù)據(jù)庫,看是否同步到mone庫中
create database mtwo_demo;
在mone庫中,查看驗證,查看數(shù)據(jù)庫:

發(fā)現(xiàn)在mtwo庫新增的數(shù)據(jù)庫,已經(jīng)同步到了mone容器中來了
到此為止,Mysql的主從同步和主主同步就介紹結(jié)束了,喜歡的,請點贊關(guān)注公眾號哦~
技術(shù)改變世界!
--狂詩絕劍

浙公網(wǎng)安備 33010602011771號