linux mysql雙機熱備與win mysql雙機熱備略有不同,至少在win下面很快就OK.
本例使用的是mysql5.1.45編譯安裝
一、linux下熱備修改/etc/my.cnf
具體修改如下(截圖)

彩色部分内容為需要配置的地方
其中紫色本身配置檔案中已寫入,青色部分為後寫入。紅線為需要注意的地方,與另一台資料庫的機器(庫)不可以相同。
另一台機器配置與上相似,隻需要修改server-id及ip即可。
二、在2個MYSQL上都要建立用于同步的賬号
1、
Mysql>GRANT FILE , REPLICATION SLAVE ON *.* TO backup@'192.168.8.181' IDENTIFIED BY '123456'
mysql> GRANT ALL PRIVILEGES ON *.* TO backup@'192.168.8.181' IDENTIFIED BY '123456'
2.重新開機2個MYSQL服務
3.在2個MYSQL上都啟動同步服務
Mysql>slave start;
4.在2台伺服器上檢視備份線程狀态
Mysql>show slave status;
*如果結果中Slave_IO_Running 和 Slave_SQL_Runing 的值都是Yes,Seconds_Behind_Master的值是0說明配置成功
三、問題與解決
1. 現象:Slave_SQL_Running為No,Seconds_Behind_Master為null
原因:a.程式可能在slave上進行了寫操作
b.也可能是slave機器重起後,事務復原造成的.
解決:
a. 假設在MYSQL_1上出現這種情況
b. 在MYSQL_2上檢視主伺服器狀态:
Mysql>show master status;
+----------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | backup_db | |
+----------------------+----------+--------------+------------------+
c. 在MYSQL_1 上停止同步線程:
Mysql>slave stop;
d. 在MYSQL_1上手動執行同步
Mysql>change master to
>master_host=’192.168.8.181’,
>master_user=’backup’,
>master_password=’123456’,
>master_port=3307,
>master_log_file=’mysql-bin.000001’,
>master_log_pos=106;
e. 啟動同步服務
mysql>slave start;
f. 通過show slave status 檢視Slave_SQL_Running為Yes, Seconds_Behind_Master為0即為正常。
2. 現象:Slave_IO_Running為No, Seconds_Behind_Master為null
解決:
a. 假設在MYSQL_1上出現這種情況
b. 重新開機主資料庫(MYSQL_2)
c. 在MYSQL_2上檢視主伺服器狀态:
Mysql>show master status;
+----------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | backup_db | |
+----------------------+----------+--------------+------------------+
d. 在MYSQL_1上停止同步服務
Mysql>slave stop;
e. 在MYSQL_1上執行下列指令
Mysql>change master to
>master_log_file=’mysql-bin.000001’,
>master_log_pos=106;
f. 在MYSQL_1上重新啟動同步服務
Mysql>slave start;