Docker Mysql數據庫雙主同步配置方法


一、背景

 

可先查看第一篇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的主從同步和主主同步就介紹結束了,喜歡的,請點贊關注公眾號哦~ 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM