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 驗證
原來的主庫已經變成從庫,從庫變成主庫。