雙機備份的目的是實時在另外一台服務器備份數據庫,兩服務器分為主從,主服務器的寫操作將同步到從服務器,而從服務器的讀寫不影響主服務器,與其說是雙機備份不如說復制更確切,其實官方也將此說成是復制。
首先在兩服務器上安裝MySQL5.1.45,我們首先聲明,將兩台服務器分別命名為A、B,A作為主服務器,B作為從服務器。A和B的IP分別為192.168.0.217和192.168.0.216.
A服務器配置:
1、添加用於復制的帳戶,此帳戶只在主服務器上設置就行了,創建帳戶可以使用管理工具如PHPmyadmin,或直接在MySQL裡操作,注意添加帳戶的權限為grant和replication slave,並設置遠程主機為192.168.0.216。
在MySQL中操作命令為:
grant replication slave on *.* to ‘backup’@’192.168.0.216′ identifIEd by ’123′;
這樣我們就創建了以“backup”命名的密碼為“123”遠程主機為192.168.0.216的帳戶。
2、修改配置文件my.ini,在配置文件的[MySQLd]下面加入
server-id=1
log-bin=”C:/MySQL-bin.log”
保存,使用net stop mysql和net start mysql重新啟動MySQL。
3、鎖定表,讓MySQL暫時不能進行寫操作以便備份數據庫。命令:
flush tables with read lock;
4、取出主機數據庫當前日志名和偏移值,命令:
show master status;
返回結果大致這樣的:
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | | MySQL-bin.000001 | 106 | | |
+——————+———-+————–+——————+
記錄下顯示的當前日志名(MySQL-bin.000001)和偏移值(106)
5、備份數據庫,可以采用MySQLdump的方式或直接復制數據庫data目錄的形式備份數據庫,以便移植到B服務器。
B服務器配置
1、停止mysql服務,net stop MySQL。
2、修改配置文件my.ini,在配置文件的[MySQLd]下面加入如下代碼。
server-id=2
master-host=192.168.0.217
master-user=backup
master-passWord=123
3、啟動mysql服務,net start MySQL。
4、修改mysql的參數,登陸到MySQL命令行,鍵入以下命令:
change master to master_log_file=’MySQL-bin.000001′,master_log_pos=106;
其中的master_log_file=是上面我們記錄的日志名MySQL-bin.000001,master_log_pos=是上面記錄的偏移量106。
5、啟動slave線程,命令:
start slave;
停止slave線程的命令是“stop slave;”。
這樣就配置完畢了,可以查看是否成功。
在主服務器上,MySQL命令:
show processlist;
在Command裡如果狀態是Binlog Dump,說明已經配置成功了。
到此,可以再作測試,在A服務器上添加一條數據,或刪除一個數據庫,再到B上看,如果A服務器上的操作在B服務器上也執行了,說明已經成功。