設定之前
1. 設定Master對Slave複製的動作之前,要先確認Mysql版本之間允許複製的相容性條件,參閱這個版本之間相容性的說明。
Master上建立帳號
2. 在Master上設定一個帳號,讓Slave可以透過這個帳號來連結,那個帳號必須要設置REPLICATION SLAVE的權限。
假設你想要創造repl這個帳號,讓Slave可以透過這個帳號來連結到Master。
mysql > GRANT REPLICATION SLAVE ON .
-> TO repl@ IDENTIFIED BY ‘repl’;
此時repl帳號,可以使用密碼repl取得Master上的資源。
複製Master上的資料
3. 將Master上的資料鎖定(如果當時的Mysql有啟動運作,不能shutdown才需要執行此動作)
mysql > FLUSH TABLES WITH READ LOCK;
關閉Slave Mysql(如果Mysql沒有shutdown的話)。
shell> mysqladmin -u root –p shutdown
移動所在目錄到Mysql資料存放的資料夾中,
把想要同步的資料庫給整個tar起來。
shell> tar -cvf webhost.tar.gz webhost
將tar起來的壓縮檔複製到Slave Mysql上資料存放的資料夾中,
然後將資料給解壓縮。
shell> tar -xvf webhost.tar.gz
這樣子的動作是在於Master和Slave之間要同步的資料庫,在啟動Replication之前可以一致。
將Mysql啟動(如果剛才Mysql有shutdown的話)
shell>./mysqld_safe &
觀察目前Master的狀態
mysql > SHOW MASTER STATUS;
+———————-+—————+———————+—————————+
File Position BinlogDoDB BinlogIgnoreDB
+———————-+—————+———————+—————————+
mysql-bin.003 73 test manual,mysql
+———————-+—————+———————+—————————+
File(mysql-bin.003)就是二進制日誌檔的檔名,Position(73)可以說是該日誌檔起始的位移位置,BinlogDoDB(webhost)就是會啟動覆寫對象的資料庫名稱BinlogIgnoreDB(manual,mysql)這些資料庫禁止啟動覆寫對象的資料庫名稱。
設定Master的覆寫機制
4. 打開my.cnf通常是在/etc/my.cnf。如果沒有這個檔案,可以在/usr/share/mysql中挑選一個適合的設定檔,複製到/etc/my.cnf。
在[mysqld]下面補上
log-bin
server-id=1
sql-bin-update-same
binlog-do-db=webhost
最後關閉Master Mysql(如果Mysql沒有shutdown的話)。
shell> mysqladmin -u root –p shutdown
設定Slave的覆寫機制
5. 打開my.cnf通常是在/etc/my.cnf。如果沒有這個檔案,可以在/usr/share/mysql中挑選一個適合的設定檔,複製到/etc/my.cnf。
在[mysqld]下面補上
master-host=192.168.1.180 #Master的IP
master-user=repl #存取的帳號及密碼
master-password=repl
master-port=3306 #Master的port
server-id=2 #編號
master-connect-retry=60 #錯誤發生重試的間隔
replicate-do-db=webhost #指定要覆寫的資料庫
log-slave-updates #啟用串鏈覆寫機制—read-only #成為唯讀的資料庫
啟動Master Mysql
6. 啟動Master Mysql
shell>./mysqld_safe &
鎖定所有表格禁止更新
mysql > FLUSH TABLES WITH READ LOCK;
啟動Slave Mysql
7. 啟動Slave Mysql
shell>./mysqld_safe &
鎖定Slave Mysql的帳號
8. 鎖定Slave Mysql的所有帳號也包含root,只有select的權限,這樣子才能確保覆寫機制的同步性。
設定Slaver機制
9. 設定這些參數到Slave Mysql運作
mysql> CHANGE MASTER TO
MASTERHOST=’192.168.1.180’,
MASTERUSER=’repl’,
MASTERPASSWORD=’repl’,
MASTERLOGFILE=’mysql-bin.003’,
MASTERLOG_POS=73;
啟動Slave機制
mysql> START SLAVE;
解除Master Mysql表格禁止更新
10. 解除Master Mysql表格禁止更新
mysql> UNLOCK TABLES;
收工
注意事項:
A. 整個過程不論Master Mysql是否有shutwown,務必確保Master Mysql不會有資料的異動。
B. Slave Mysql的所有帳號一定要只剩select權限。
沒有留言:
張貼留言