…生活與工作…個人的生活雜記….

使用PHPMyAdmin建立 MySQL Replication (主從備援)

大致上

1.建立Master 的設定

2.建立Slave的設定

3.使用者與資料庫權限

4.重啟MySQL伺服器並確認運行

適用phpmyadmin 3.3以上版本與MySQL 5.1以上步驟

登入進phpmyadmin後選擇備援進入設定

圖片 2

在備援中可以看到主要(Master)與次要(Slave)的設定

圖片 3

主要(Master)備援伺服器設定:

主要備援伺服器的設定只需要把你想備援的資料庫(或是想忽略的資料庫)圈選起來

圖片 4

並把下方列出的設定copy到my.cnf中(若是windows則為my.ini )並重新啟動伺服器就可以了.

圖片 6

重新啟動MySQL伺服器並且重新點選備援後即可看到主要(Master)伺服器已經啟動,並且有3個選項可供點選

圖片 15

點選顯示狀態則可以看見Master的狀態

圖片 16

接著我們要設定可以連接到這台主機的使用者,這個同步的帳號我們不建議使用root或是主機本身已有的帳號來使用.

帳號:備援使用者帳號

主機:允許連線的主機IP,衣班會指定伺服器的IP,因為無法使用localhost

密碼:備援使用者密碼

14

新增使用者之後的資料表權限最好只設定並啟用要備援的那一個資料表就好

圖片 17

這樣,Master端的設定就算是完成了,接著就可以開始設定Slave端了

 

次要(Slave)備援伺服器設定:

點選次要(Slave)備援伺服器的設定按鈕

圖片 3

並且修改my.cnf或是my.ini

加入server-id  (注意!!server-id不能於Master的相同)

並將剛剛Master端設定的使用者帳號輸入在欄位中

圖片 7

若輸入錯誤或是主要(Master)伺服器無法連接(防火牆,主機掛了)的話,就會出現以下畫面

圖片 8

成功的話就是這樣啦~ 圖片 10

次要伺服器的設定簡單多了吧..

 

若是出現下面的訊息,只需要重新啟動次要伺服器就可以了

從”控制slace伺服器”點進去,選擇”重設次要(slave)伺服器”

圖片 11 圖片 12

正常啟動時可以從”查看從伺服器狀態”看到

Slave_IO_Running   Yes
Slave_SQL_Running  Yes

 

這2個訊息

圖片 18

 

 

另外,主從式伺服器會有資料庫不同步的狀況,可以透過maatkit加以修正

wget http://maatkit.googlecode.com/files/maatkit-7540.tar.gz
tar zxvf maatkit-7540.tar.gz
cd maatkit-7540
perl Makefile.PL
make;make install
mk-table-sync --execute --print --no-check-slave --databases xxxxxx  h=xxx.xxx.xxx.xxx,u=xxx,p=xxx h=xxx.xxx.xxx.xxx,u=xxx,p=xxx
mk-table-sync --execute --print --sync-to-master--databases xxxxxx  h=xxx.xxx.xxx.xxx,u=xxx,p=xxx

 

還有使用InnoDB在 Replication 時 Slave 太慢的話
可以修改my.cnf

[mysqld]
innodb_flush_log_at_trx_commit = 0
innodb_buffer_pool_size = 512M

就可以了

要取消Slave的話就執行下列SQL

stop slave;
change master to master_host=' ';
reset slave;

 

備註已知問題

若使用–sync-to-master參數 在資料缺少unique index的情況 將無法與master同步.
使用者須有SUPER / PROCESS / REPLICATION CLIENT / REPLICATION SLAVE 四項權限