mysql雙主互備設置詳細記錄
1.環境詳細信息:
1.1 服務器A
CentOS realse 6.8 final
mysql,5.6.34
192.168.31.133;
1.2 服務器B,
CentOS realse 6.8 final
mysql,5.6.34
192.168.31.132
2.說明
2.1 對於一個mysql服務器,通常有兩個線程來負責複製和被複制,當開啓複製以後:
2.1.1 做爲主服務器Master,會把本身的每一次改動都記錄到二進制日誌binarylog中。(從服務器會負責來讀取這個log, 而後在本身那裏再執行一遍。)
2.1.2 做爲從服務器Slave,會用master上的帳號登錄到master上,讀取master的Binarylog,寫入到本身的中繼日誌 relaylog,而後本身的sql線程會負責讀取這個中繼日誌,並執行一遍。到這裏主服務器上的更改就同步到從服務器上了。
3.設置詳細步驟:
3.1 在服務器A上建立專門用於備份的帳戶,在mysql中執行:
grant replication slave on *.* to 'root_save'@'192.168.31.132' identified by 'root_save';
其中192.168.31.132爲B服務器的IP地址,前面的root_save爲用戶名,後面的root_save爲密碼
3.2 開啓主服務器(A服務器)的binarylog(配置my.cnf文件中的相關參數)
#about master-slave
#開啓二進制日誌
log-bin=mysql-bin
#設置二進制文件模式
binlog_format=mixed
#服務的ID,主從服務須要設置不一樣的值
server-id=1mysql
#設置是否只讀
read-only=0
#設置須要關注的數據庫
#binlog-do-db=i_test
#設置須要忽略的數據庫
#which should be ignored
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
#how many db servers
auto-increment-increment = 10
# 設置增加的初始值
auto-increment-offset=2
#end master-slave
3.3 獲取主服務器(A服務器)狀態,和同步初態。
3.3.1 先鎖定須要同步的數據庫,好比咱們測試的i_test,在mysql中執行:
use i_test;
FLUSH TABLES WITH READ LOCK;
3.3.2 導出數據庫中的數據,在命令行中執行:
mysqldump --master-data -u root -p i_test > i_test.sql
3.3.3 查看A服務器的binary日誌位置,在mysql中執行:
show master status\G;
執行結果以下:
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000007 #該參數在啓動同步設置MASTER_LOG_FILE參數時使用
Position: 2879 #該參數在啓動同步設置MASTER_LOG_POS參數時使用
Binlog_Do_DB:
Binlog_Ignore_DB: mysql,information_schema,performance_schema
Executed_Gtid_Set:
1 row in set (0.00 sec)sql
ERROR:
No query specified數據庫
3.3.4 解鎖數據庫,在mysql中依次執行:
use i_test;
unlock tables;
3.4 設置從服務器(B服務器)須要複製的數據庫(配置my.cnf文件中的相關參數)
#about master to slave
log-bin=mysql-bin
binlog-format=mixed
#服務的ID,主從服務須要設置不一樣的值
server-id=2服務器
#replicate-do-db=i_test
#能夠指定須要複製的數據庫
replicate-ignore-db=mysql
#複製時須要排除的數據庫
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
#中繼日誌的名字
relay_log=mysqld-relay-bin
#中繼日誌執行以後,這些變化是否須要計入本身的binarylog。 當你的B服務器須要做爲另一個服務器的主服務器的時候須要打開。 就是雙主互相備份,或者多主循環備份。
log-slave-updates=ON
#about master to slave
3.5 配置my.cnf文件以後重啓mysql服務
3.6 導入初態,開始同步
在從服務器(B服務器)建立數據庫,i_test,在mysql中執行:
create database i_test;
把剛剛從主服務器(A服務器上)導出的i_test.sql導入到從服務器(B服務器)的i_test數據庫中,在命令行執行:
mysql -u root -p i_test<i_test.sql
3.7 開啓同步
在從服務器(B服務器)上執行
CHANGE MASTER TO
MASTER_HOST='192.***.***.***',#(A服務器IP)
MASTER_USER='repl_user',#(A服務器建立的B服務器訪問帳號)
MASTER_PASSWORD='hj3****',#(A服務器建立的B服務器訪問帳號的密碼)
MASTER_LOG_FILE='mysql-bin.000004',#(A服務器的當前二進制日誌文件的名稱)
MASTER_LOG_POS=7145;#(A服務器的當前二進制日誌文件的位置)
3.8 重啓從服務器(B服務器)的mysql服務
3.9 查看從服務器(B服務器)的slave線程狀況
show slave status\G;
只有在
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
才說明配置成功,其中任意一個爲NO都表示配置不成功,應當查看錯誤日誌,進行查看。
3.10 在主服務器(A服務器)上的i_test數據庫中插入一條記錄,在從服務器(B服務器)上進行查看,就可以正常的查看到了。
3.11 以上完成A-B的複製,即簡單的主從配置,
如今開始配置B-A的複製,即:把B當成主服務器,A當成從服務器,從而實現雙主熱備.
3.12 在B中建立用於複製的帳戶,相似於3.1,在mysql中執行:
grant replication slave on *.* to 'root_save'@'192.168.31.133' identified by 'root_save';
3.13 開啓主服務器(B服務器)的binarylog,相似於3.2
read-only=0
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
auto-increment-increment = 10
auto-increment-offset=6
3.14 查看主服務器(B服務器)的master日誌狀態,相似於3.3.3
show master status\G;
3.15 開啓從服務器(A服務器)的中繼日誌,相似於3.4
#replicate-do-db=i_test
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
relay_log=mysqld-relay-bin
log-slave-updates = ON
3.16 啓動同步,在從服務器(A服務器)的mysql下執行:
change master to
master_host='192.168.31.132',
master_user='root_save',
master_password='root_save',
master_log_file='mysql-bin.000006',
master_log_pos=120;
3.17 查看從服務器(A服務器)的slave狀態是否正常
show slave status\G;
只有在
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
才說明配置成功,其中任意一個爲NO都表示配置不成功,應當查看錯誤日誌,進行查看。
3.18 完成以上操做以後,mysql雙主熱備就實現了。
4.配置過程當中的注意事項:
4.1 注意參數的拼寫,下劃線和中劃線的書寫
4.2 注意查看錯誤日誌
4.3 注意設置的帳號和密碼是否正確
4.4 注意對應端口是否開啓以及防火牆的狀態
4.5 注意在開啓從服務器的同步時,應當是即時查看主服務器的master狀態
4.6 注意設置mysql服務的開機啓動ide