主從工作原理:
配置介紹:
MASTER:172.17.0.2
SLAVE:172.17.0.3
MASTER內數據庫:
僅僅同步以上兩個庫(在configerdata庫中創建了wu2表)
SLAVE庫:
空空如也
1、將MASTER庫的數據庫導入到SLAVE庫中
(1)使用mysqldump備份MASTER庫
備份前最好將服務停止,防止有數據在設置過程中寫入
#將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,導入成功
2、修改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,連接成功
3、從節點配置訪問主節點的參數信息
(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線程:
4、測試數據是否同步
在MASTER中添加數據
進SLAVE庫中查有無同步
ok,已同步。
如有轉載請標明出處 謝謝