主從工做原理: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,已同步。