MySQL主從複製配置(Docker容器內配置)

主從工做原理:mysql

 

 

配置介紹:sql

MASTER:172.17.0.2數據庫

SLAVE:172.17.0.3vim

 

MASTER內數據庫:服務器

 

僅僅同步以上兩個庫(在configerdata庫中建立了wu2表)測試

 

SLAVE庫:spa

 

空空如也線程

 

一、將MASTER庫的數據庫導入到SLAVE庫中3d

1)使用mysqldump備份MASTER庫rest

備份前最好將服務中止,防止有數據在設置過程當中寫入

#將configerdata userdata兩個庫的結構與數據所有備份到/root/baksql.sql中
mysqldump -h 127.0.0.1 -uroot -proot1 --databases configerdata userdata > /root/baksql.sql

--all-databases    #備份全部的數據庫
--databases        #備份指定庫,多個庫用空格隔開
--database 數據庫名 表1 表2     #備份指定庫的表,多個表用空格隔開
--database 庫名 | gzip         #備份庫時進行壓縮

mysqldump -h 127.0.0.1 -uroot -proot1 --databases configerdata userdata > /root/baksql.sql

 

 

2)將導出的庫文件傳輸到SLAVE中(scp、lrzsz都可)

 

 

3)將.sql文件導入到SLAVE數據庫中

進入輸入庫,執行:

source /root/baksql.sql

 

查看SLAVE庫內有無MASTER中的表

 

ok,導入成功

 

二、修改MySQL配置文件使用bin-log進行同步

(1)通常在配置文件是/etc/my.cnf,個人是apt-get裝,因此位置不一樣

vim /etc/mysql/mysql.conf.d/mysqld.cnf

mysqld參數下添加:

log-bin = mysql-bin
server-id =1

replicate-do-db=configerdata    #指定同步的數據庫(若需將全部數據庫同步,則不需加此配置項)
replicate-do-db=userdata     #指定同步的數據庫
#replicate-ignore-db=mysql    此配置爲指定不一樣步的數據庫

 

service mysql restart #重啓mysql 

 

(2)進入MASTER mysql中,建立用於SLAVE的用戶

GRANT ALL  ON *.* TO liu@172.17.0.3 IDENTIFIED BY 'liu1';    #賦予liu用戶全部數據庫全部權限
GRANT ALL PRIVILEGES ON *.* TO fan@172.17.0.3 IDENTIFIED BY 'fan1';    #在SLAVE中建立在MASTER有全部特殊權限的用戶
FLUSH PRIVILEGES; #刷新權限

 

 

 

3)前往SLAVE主機測試登陸剛剛建立的用戶

 

顯示沒法鏈接,可是網是通的

問題在於MASTER配置文件中限制了其餘主機登陸,修改如下配置重啓便可:

 

如今鏈接:

 

ok,鏈接成功

 

三、從節點配置訪問主節點的參數信息

1)首先編輯從機配置文件,添加以下配置:

server-id=2

 

service mysql restart #重啓mysql

2)賦予權限

查看主服務器的節點

show master status\G;

 

在從服務中配置:

首先關閉SLAVE線程;STOP SLAVE;

而後再執行:

CHANGE MASTER TO MASTER_HOST='172.17.0.2',MASTER_USER='fan',MASTER_PASSWORD='fan1', MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=594;

特別注意:MASTER_LOG_FILE= MASTER_LOG_POS=  必須和MASTER一致

 

 

查看SLAVE狀態,已經同步成功

 

 

 

開啓SLAVE線程:

 

 

 

四、測試數據是否同步

MASTER中添加數據

 

 

 

SLAVE庫中查有無同步

 

ok,已同步。

 

相關文章
相關標籤/搜索