MYSQL主備複製結構搭建與切換

1 選擇兩個服務器,分別作爲主備數據庫

2 登陸到服務器,安裝相同版本mysql

 yum install mysql ;
 yum install mysql-server;

3 啓動mysql服務器 

service  mysqld start

4 分別root登陸mysql 執行如下命令

增加複製用戶並授權(主備都在192.168.119.*網段,爲了方便主備切換,兩邊都建立)

GRANT  REPLICATION SLAVE,REPLICATION CLIENT on *.* to repl@'192.168.119.%' identified by '1234';

5 配置/etc/my.cnf

第一服務器(主)

log_bin=mysql-bin
server_id=1

第二個服務器(備)

log_bin=mysql-bin
server_id=2
read_only=1
6 重啓兩個mysql服務器

7 登陸主(root)執行

show master status\G;

顯示

File: mysql-bin.000001 
Position: 106

8 登陸備(root) 執行

測試 mysql -urepl -h192.168.119.128 -p1234 是否能連接到主庫,不能需要檢查防火牆或者/etc/my.cnf是否有訪問限制,修改配置

mysql -uroot登陸本地庫執行:

CHANGE MASTER TO 
 MASTER_HOST='192.168.119.128',
 MASTER_USER='repl',
 MASTER_PASSWORD='1234',
 MASTER_LOG_FILE='mysql-bin.000001',
 MASTER_LOG_POS=106;
start slave;
show slave status\G;

9,驗證

     主庫上創建表,備庫上查看,可以看到

      備庫上repl創建表,顯示The MySQL server is running with the --read-only option so it cannot execute this statement

      因爲配置了備庫爲read_only

10,後續關注

    以後重啓主備庫,不用再配置change master。每重啓一次主庫會發現logfile 變成一個新的文件mysql-bin.000004

11 ,主從切換

11.1 修改配置文件/etc/my.cnf

read-only=1(主庫)
#read-only=1(備庫)

11.2 從庫上執行

STOP SLAVE IO_THREAD;
SHOW PROCESSLIST;

system user 線程確保狀態爲:has read all relay log 或者消失

再執行

STOP SLAVE;
RESET MASTER;
RESET SLAVE;
show master status \G;

結果

File: mysql-bin.000001
Position: 106

11.3 主庫上執行

RESET MASTER;
RESET SLAVE;
CHANGE MASTER TO 
MASTER_HOST='192.168.119.129',
MASTER_USER='repl',
MASTER_PASSWORD='1234',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=106;

start slave

11.4 重啓主備庫,注意先重啓新的主庫,再啓動新的備庫

service mysqld restart

11.5 驗證

  原來的主庫已經變成從庫,從庫變成主庫。

發佈了137 篇原創文章 · 獲贊 340 · 訪問量 80萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章