標 題:MySQL 5.0.37 Replication Master to Slave
記錄時間:2008.09.07
---------------------------------------------------------
以下指令顏色標記
語法:藍色 註解:綠色 預設環境/指定名稱:橙色
---------------------------------------------------------
預設環境:(依個人設定環境不同)
MySQL版本:5.0.37
Master IP:125.224.35.17
Slave IP:114.46.0.31
要進行同步的資料庫名稱:dblogtest
Mysql安裝位置:/var/lib/mysql
啟動檔位置:/etc/rc.d/init.d/mysqld
註:(1) 查詢MySQL版本指令
進入mysql後,鍵入 # select version();
(2) Host IP查詢指令 ,鍵入 # ifconfig
---------------------------------------------------------
安裝流程
1. 在Master上開一個帳號給Slave
2. 關閉 Master 的 MySQL
3. 備份要同步化的資料庫
4. 編輯 /etc/my.cnf 檔
5. 啟動 Master 的MySQL
6. 查看Master 是否有設定正確
7. 將備份的資料庫檔 scp 到 Slave
8. 關閉 Slave 的 MySQL
9. 編輯 /etc/my.cnf 檔
10. 解開備份資料庫檔案
11. 啟動 Slave 的 MySQL
12. 測試同步化是否成功
---------------------------------------------------------
一、Master的設定:
1. 開放一個帳號給Slave使用連結使用
確定啟動MySQL # /etc/rc.d/init.d/mysqld start
進入MySQL # mysql -u root –p
開放Slave帳號、密碼
# GRANT REPLICATION SLAVE on *.* to dbslave@114.46.0.31 identified by 'dbslave# quit
註:(1) dbslave為Master開放給slave的帳號(2) 114.46.0.31為slave的IP
(3) dbslave123為Master開放給slave的密碼
2. 將MySQL關閉
# /etc/rc.d/init.d/mysqld stop
3. 備份要同步化的資料庫
到MySQL的目錄下 # cd /var/lib/mysql
將資料庫資料打包 # tar –zcpf dblogtest.tar.gz dblogtest/
註:(1) dblogtest.tar.gz為所要壓縮成的檔案名稱
(2) dblogtest為要壓縮的目錄名稱
(3) tar中的p是指連同權限設定一起打包
4. 編輯/etc/my.cnf
註:如果/etc沒有底下my.cnf檔,
可以從/usr/local/mysql/share/mysql下複製*.cnf到/etc/my.cnf
語法如下:
# cp /usr/local/mysql/share/mysql/my-small.cnf/etc/my.cnf # vi /etc/my.cnf
在[mysqld]區段下加入:
server-id=1
log-bin=mysql-bin
binlog-do-db=dblogtest
註:(1) server-id=為主機編號,一般習慣來說優先設1
(2) mysql-bin=為將儲存紀錄檔的目錄名稱
(3) binlog-do-db=為指定要同步化的資料庫名稱
5. 啟動MySQL:
# /etc/rc.d/init.d/mysqld start
6. 檢視Master是否設定成功:
進入MySQL # mysql –u root –p
顯示Master設定狀態表 # show master status;
註:若Binlog-do-db有出現指定的資料庫名稱dblogtest
表示Master正在同步化此資料庫7. 將備份的dblogtest資料庫,傳送到Slave server
到MySQL的目錄下 # cd /var/lib/mysql
# scp dblogtest.tar.gz root@114.46.0.31:/tmp
註:(1) scp為透過一個安全且加密的連線在主機間傳輸檔案的語法
(2) dblogtest.tar.gz 為欲傳送的檔案
(3) root為接受端電腦(Slave server)的使用者帳號
(4) /tmp 為指定傳送到的目錄
(5) 輸入scp指令後,需要輸入密碼,
請輸入Slave server端的Linux使用者密碼
二、Slave的設定:
1. 將Mysql關閉
#/etc/rc.d/init.d/mysqld stop
2. 編輯/etc/my.cnf
在[mysqld]區段下加入:
server-id=3
log-bin=mysql-bin
relay-log=mysql-relay-bin
replicate-do-db=dblogtest
replicate-same-server-id
binlog-do-db=dblogtest
master-host=125.224.35.17
master-user=dbslave
master-password=dbslave123
master-port=3306
master-connect-retry=30
註:(1) server-id=主機編號(須避免與Master server-id相同)
(2) log-bin=將儲存紀錄檔的目錄名稱
(3) relay-log=將儲存替代紀錄檔的目錄名稱
(4) replicate-do-db=指定同步化的資料庫名稱
(5) replicate-same-server-id
為若遇相同的server-id則以預設0值來取代,
避免忽略其中一個server
(6) binlog-do-db=指定要記錄的同步化資料庫(7) master-host=Master主機位址
(8) master-user=Master開放給Slave的帳號
(9) master-password= Master開放給Slave帳號的密碼
(10) master-port 設定傳輸的阜號
(11) master-connect-retry=若連線失敗,要重試的間隔秒數
3. 解開Master備份傳輸過來檔案
到MySQL目錄底下 # cd /var/lib/mysql
解壓縮在tmp目錄下Mastern傳送的檔案
# tar –zxvf /tmp/dblogtest.tar.gz
4.啟動mysql
#/etc/rc.d/init.d/mysqld start
三、檢測是否同步成功:
進入mysql後,鍵入# show slave staus \g;
若slave-IO-Running:yes,slave-SQL-Running:yes則表示成功
接下來則可以在Master新增資料表,然後確認Slaver是否同步更新。
---------------------------------------------------
參考:http://blog.shian.tw/mysql-5122-replication-master-to-slave.html
---------------------------------------------------
(補充)同步的原理:
MySQL同步的執行方式,其實是藉由Master在MySQL下新增修改所記錄的log-bin檔案當媒介,說明如下:
當Master開放一個帳號給Slave使用時,Slave就藉由此帳號連線到Master主機,而Slave會持續讀取Master主機的log-bin檔案,當Master新增修改資料庫時,log-bin檔案會即時記錄步驟,而當Slave發現Master主機的log-bin檔案有更動時,Slave會在本機執行Master's log-bin目錄內新紀錄的步驟檔案,藉此達到同步的功能。
沒有留言:
張貼留言