Docker Mysql主從同步配置搭建Demo

 進行Docker操做前,先創建目錄,個人路徑是d:/docker/mysql,目錄結構以下:mysql

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

一、主從配置文件sql

Master: my.cnf   docker

 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 : 用於標識不一樣的數據庫服務器,並且惟一bash

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

replicate-do-db :指定複製的數據庫 replicate-ignore-db :不復制的數據庫 relay_log :從庫的中繼日誌,主庫日誌寫到中繼日誌,中繼日誌再重作到從庫 log-slave-updates :該從庫是否寫入二進制日誌,若是須要成爲多主則可啓用。只讀能夠不須要ide

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

二、啓動建立主從容器3d

 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文件夾下也能看到同步的數據庫文件日誌

三、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

相關文章
相關標籤/搜索