Docker Mysql主從同步配置搭建Demo


 進行Docker操作前,先建立目錄,我的路徑是d:/docker/mysql,目錄結構如下:

1 --mysql
2    --master
3       --data  
4       --conf
5          --my.cnf     
6    --slaver
7       --data  
8       --conf
9          --my.cnf   
View Code

1、主從配置文件

Master: my.cnf   

 1 [mysqld]
 2 
 3 server_id = 1
 4 
 5 log-bin= mysql-bin
 6 
 7 read-only=0
 8 
 9 binlog-do-db=blogging
10 
11 replicate-ignore-db=mysql
12 
13 replicate-ignore-db=sys
14 
15 replicate-ignore-db=information_schema
16 
17 replicate-ignore-db=performance_schema
18 
19  
20 
21 !includedir /etc/mysql/conf.d/
22 
23 !includedir /etc/mysql/mysql.conf.d/ 
View Code

 Slaver: my.cnf

 1 [mysqld]
 2 
 3 server_id = 2
 4 
 5 log-bin= mysql-bin
 6 
 7 read-only=1
 8 
 9 binlog-do-db=blogging
10 
11 replicate-ignore-db=mysql
12 
13 replicate-ignore-db=sys
14 
15 replicate-ignore-db=information_schema
16 
17 replicate-ignore-db=performance_schema
18 
19  
20 
21 !includedir /etc/mysql/conf.d/
22 
23 !includedir /etc/mysql/mysql.conf.d/
View Code

說明: log-bin :需要啟用二進制日志 server_id : 用於標識不同的數據庫服務器,而且唯一

binlog-do-db : 需要記錄到二進制日志的數據庫 binlog-ignore-db : 忽略記錄二進制日志的數據庫 auto-increment-offset :該服務器自增列的初始值 auto-increment-increment :該服務器自增列增量

replicate-do-db :指定復制的數據庫 replicate-ignore-db :不復制的數據庫 relay_log :從庫的中繼日志,主庫日志寫到中繼日志,中繼日志再重做到從庫 log-slave-updates :該從庫是否寫入二進制日志,如果需要成為多主則可啟用。只讀可以不需要

如果為多主的話注意設置 auto-increment-offset 和 auto-increment-increment 如上面為雙主的設置: 服務器 152 自增列顯示為:1,3,5,7,……(offset=1,increment=2) 服務器 153 自增列顯示為:2,4,6,8,……(offset=2,increment=2)

2、啟動創建主從容器

 1 //獲取基礎鏡像
 2 
 3 docker pull mysql
 4 
 5  
 6 
 7 //創建並啟動主從容器;
 8 
 9 //master
10 
11 docker run --name mastermysql -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=anech -v d:/docker/mysql/master/data:/var/lib/mysql -v d:/docker/mysql/master/conf/my.cnf:/etc/mysql/my.cnf  mysql
12 
13  
14 
15 //slaver
16 
17 docker run --name slavermysql -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=anech -v d:/docker/mysql/slaver/data:/var/lib/mysql -v d:/docker/mysql/slaver/conf/my.cnf:/etc/mysql/my.cnf  mysql
View Code

  這里為了方便查看數據,把Docker的端口都與本機進行了映射,對應的本地master/data文件夾和slaver/data文件夾下也能看到同步的數據庫文件

3、Master和Slaver設置

 1 //進入master容器
 2 
 3 docker exec -it mastermysql bash
 4 
 5  
 6 
 7 //啟動mysql命令,剛在創建窗口時我們把密碼設置為:anech
 8 
 9 mysql -u root -p
10 
11  
12 
13 //創建一個用戶來同步數據
14 
15 GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';
16 
17 //這里表示創建一個slaver同步賬號backup,允許訪問的IP地址為%,%表示通配符
18 
19 //例如:192.168.0.%表示192.168.0.0-192.168.0.255的slaver都可以用backup用戶登陸到master上
20 
21  
22 
23 //查看狀態,記住File、Position的值,在Slaver中將用到
24 
25 show master status;
View Code
 1 //進入slaver容器
 3 docker exec -it slavermysql bash
 4 
 7 //啟動mysql命令,剛在創建窗口時我們把密碼設置為:anech
 9 mysql -u root -p
10 
13 //設置主庫鏈接
15 change master to master_host='172.17.0.2',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3306;
16 
19 //啟動從庫同步
21 start slave;
22 
25 //查看狀態
27 show slave status\G;
View Code

說明:

master_host:主庫地址

master_user:主庫創建的同步賬號

master_password:主庫創建的同步密碼

master_log_file:主庫產生的日志

master_log_pos:主庫日志記錄偏移量

master_port:主庫使用的端口,默認為3306


免責聲明!

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



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