測試環境:
RedHat ES 4 update 3
MYSQL 5.0.15
MYSQL數據同步備份
A服務器: 150.236.66.160 主服務器master
B服務器: 150.236.66.172 副服務器slave
1:A服務器設置上修改/etc/my.cnf
在[mysqld]區段內加入參數
#(要同步的數據庫)
binlog_do_db = gdcu
2:設置能夠訪問A服務器用戶,該用戶能夠做同步操作
#mysql –u root –p
mysql>GRANT FILE ON *.* TO backup@150.236.66.172 IDENTIFIED BY 'orient5757';
grant replication slave,reload,super on *.* to backup@150.236.66.172 identified by 'orient5757'
mysql>FLUSH PRIVILEGES;
3:B服務器設置
設定/etc/my.cnf
在[mysqld]區段加入
#(如果還有slave用戶,他們的ID也隨之增加,如server-id=3)
server-id = 2
master-host = 150.236.66.160
master-user = backup
master-password = orient5757
replicate-do-db = gdcu
master-port=3306
master-connect-retry = 60
log-bin=mysql-bin
4:在 master 上執行命令顯示 master 狀態:
mysql> SHOW MASTER STATUS;
看到信息類似如下:
+—————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————+———-+————–+——————+
| mysql-bin.003 | 73 | gdcu | manual,mysql |
+—————+———-+————–+——————+
記下 LOG FILE 和 Position。
5、把 master 數據庫拷貝到 slave,在slave上執行如下語句,把各個選項的值替換成真實值:實質是設置slave數據從master數據庫讀取數據庫操作的事務。
mysql> STOP SLAVE;
mysql> CHANGE MASTER TO MASTER_HOST=’ 150.236.66.160′,MASTER_USER=’bakcup,MASTER_PASSWORD=’orient5757,MASTER_LOG_FILE=’mysql-bin.000003′,MASTER_LOG_POS=73;
6、啟動 slave 線程,并查看 slave 狀態:
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS;
測試結果:
在master數據庫操作,基本上數據是瞬間同步到slave上。
如果slave數據庫未運行,master 數據庫發生變化,在slave開始運行的時候,會把發生變化的數據同步過來。
雙向備份:
主機
#add for master backup
#log-bin=mysql-bin
server-id=1
binlog_do_db = gdcu
#binlog_ignore_db = mysql,information_schema
#server-id = 2
#攏簍脠鹿沒slave脫祿摟攏盧脣脙碌脛D也脣之脭錄櫻盧脠server-id=3攏漏
master-host = 192.168.1.6
master-user = root
master-password = orient5757
replicate-do-db = gdcu
#replicate-do-db = database2
#log-warnings
master-port=3306
master-connect-retry = 60
#bin-log =
log-bin=mysql-bin
備份機:
server-id = 2
#(如果還有slave用戶,他們的ID也隨之增加,如server-id=3)
master-host = 192.168.1.5
master-user = root
master-password = orient5757
replicate-do-db = gdcu
#replicate-do-db = database2
#log-warnings
master-port=3306
master-connect-retry = 60
#bin-log =
log-bin=mysql-bin
#server-id=1
binlog_do_db = gdcu
在 '192.168.1.6'上操作
stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.1.5',MASTER_USER='root',MASTER_PASSWORD='orient5757',MASTER_LOG_FILE='mysql-bin.000023',MASTER_LOG_POS=98;
在 '192.168.1.5上操作
stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.1.6',MASTER_USER='root',MASTER_PASSWORD='orient5757',MASTER_LOG_FILE='mysql-bin.000054',MASTER_LOG_POS=98;