實作版本
OS: CentOS 5.3
mysql : 5.1.37
實作目標:
Slave server 資料與 Master server 同步.
設定步驟:
1. 修改 Master Server my.cnf 檔:
#vi /etc/my.cnf
(預設路徑)
[mysqld]
.
.
server-id = 1 #設定id(與slave server區別)
log-slave-updates #啟動覆寫機制
log-bin=dba-master-bin #設定repilation binlog 檔名
存檔跳出後 restart mysql
2. 設定mysql replication 的帳號權限:
#mysql -uroot -p
(登入mysql console)
mysql> grant replication slave on *.* to userrepl@'172.16.%'identified by 'password';
( 帳號 userrepl 密碼 password, 允許172.16.0.0/16的區段連線 )
mysql> flush privileges;
(使帳號權限生效)
3. Master Server 的 lock DB 與dump DB:
3.1 lock DB:
#mysql -uroot -p
( 登入mysql console)
mysql> flush tables with read lock;
(lock db 確保來源檔案在dump的過程中不會再異動)
3.2 查看master log position資訊:
mysql> show master status\G;
*************************** 1. row ***************************
File: dba-master-bin.000005
Position: 845
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
ERROR:No query specified
(上面資訊把binlog的檔名:dba-master-bin.000005及位置:845記下來)
3.3 dump DB:
( system console)
#mysqldump -uroot -p --all-database --master-data > ALL_DB.sql
( 將lock中的DB全部dump到ALL_DB.sql)
再把ALL_DB.sql 傳送到slave server上
4. 修改 Slave Server my.cnf 檔:
#vi /etc/my.cnf
(預設路徑)
[mysqld]
.
.
server-id = 2 #設定id(與master server區別)
存檔跳出後 restart mysql
5. Store DB file:
#mysql -uroot -p < ALL_DB.sql ( 將master 的sql檔 store進slave server)
6. Slave mysql setting:
#mysql -uroot -p ( 登入slave mysql console)
mysql> CHANGE MASTER TO
MASTER_HOST='172.16.1.2', ( 示範的master server IP 位置)
MASTER_USER='userrepl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='dba-master-bin.000005',
MASTER_LOG_POS=845;
mysql> slave start;
( 啟動replication )
7. unlock master db:
回到master server 的mysql console
mysql>unlock tables;
(讓db可以正常寫入)
8. 檢查replication是否正常:
到slave server的mysql console
mysql>show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event .
.
.
Last_Errno: 0
Last_Error: ( 沒有錯誤訊息, 正常運作中 )
.
.
如果發生幾個不重要的query錯誤造成停止,
可使用下面命令跳過該query, 繼續運作replication.
mysql>slave stop; (先停止replication)
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; (跳過的query數)
mysql>slave start; (重啟replication)


沒有留言:
張貼留言