在開始進行master/slave同步時,請務必記得要同步兩邊的資料庫,如果不一致
需要先將master DB dump出來,import到slave中
DB server O.S : CentOS 7
master : 192.168.10.91
slave : 192.168.10.92
1. 安裝兩台mysql ,並設定好DB root密碼
yum install mariadb-server -y
systemctl start mariadb
mysqladmin -u root password '你的密碼'
2. 在master資料庫中
vi /etc/my.cnf 在[mysqld]區塊中加入以下
log_bin = master_bin
server_id = 1
systemctl restart mariadb <--------修改完要重啟mariadb
3. 在slave資料庫中
vi /etc/my.cnf 在slave[mysqld]區塊下加入以下,此處的id務必不同於master
log_bin = slave_bin
server_id = 2
log-slave-updates
expire_logs_days = 10
systemctl restart mariadb <--------修改完要重啟mariadb
4. 啟動mysql DB
systemctl start mariadb
mysql -uroot -p
mysql> show variables like 'log_bin'; 查看binlog功能有無開啟
mysql> show variables like "server_id"; 查看server_id是不是剛剛設置好的
5. 在master DB中新增一個同步帳號 : rep
mysql> grant replication slave on *.* to 'rep'@'192.168.10.%' identified by 'password'; <----保險起見也可以只輸入slave IP'rep'@'192.168.10.92'
mysql> flush privileges;
mysql> show grants for rep@'192.168.10.%'; 查看指定帳號權限
mysql> show master status; 查看目前索引位置
6. 在slave DB中開啟同步
# mysql -uroot -p
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.10.91', master IP
-> MASTER_PORT=3306, DB port
-> MASTER_USER='rep', sync account
-> MASTER_PASSWORD='password', sync account password
-> MASTER_LOG_FILE='master_bin.000001', Binlog id請參考以下圖片file的數字
-> MASTER_LOG_POS=474; Binlog 請參考以下圖片的Position數字
7. 開啟slave同步功能
mysql> start slave;
8. 在master資料庫新增一個DB並且檢查slave是否也一樣新增了
在master 上新建DB testdb111
# mysql -uroot -p
mysql> create database testdb111;
在slave上看有無sync
# mysql -uroot -p
mysql> show databases;
testdb111在slave上有新增了
在master 上刪除DB testdb111
# mysql -uroot -p
mysql> drop database testdb111;
在slave上看有無sync
# mysql -uroot -p
mysql> show databases;
testdb111在slave上也消失了
9. 如果要加入第二台slave DB,只要將master DB資料庫完整打包匯入,並記錄下來目前bin log index
編輯/etc/my.cnf
vi /etc/my.cnf 加入以下
log_bin = slave1_bin
server_id = 3
systemctl restart mariadb <--------修改完要重啟mariadb
在master DB確認目前binlog index
# mysql -uroot -p
mysql> show variables like 'log_bin';
10. 在第二台slave DB上修改檔案
# mysql -uroot -padmin
mysql> CHANGE MASTER TO
-> MASTER_HOST='10.0.1.7', master IP
-> MASTER_PORT=3306, DB port
-> MASTER_USER='rep', sync account
-> MASTER_PASSWORD='password', sync account password
-> MASTER_LOG_FILE='master_bin.000003', Binlog id
-> MASTER_LOG_POS=120; Binlog 目前位置是多少
11. 第二台slave DB啟動同步
mysql> start slave;