主頁 > 數據庫技術 > 如何添加新數據庫到MySQL主從復制列表

如何添加新數據庫到MySQL主從復制列表

PDF版本

在LAMP架構中,我們一般使用MySQL作為數據庫,而MySQL主從也是高性能網站架構中必要的環節(如drupal、Wordpress等架構的網站)。本文大概講解一下MySQL主從的復制以及出現的問題。

MySQL主從復制一般情況下我們會設置需要同步的數據庫,使用參數配置選項,binlog-do-db,可以在master上指定需要同步的數據庫,replicate-do-db在從數據看上指定需要同步的數據庫。(一般只設定master上的binlog-do-db即可,不需要兩個同時設定。以防萬一,在slave也可以加上replicate-ignore-db)。
我們遇到的問題是,在master上面新增了一個數據庫,這個時候如何把新加的這個數據庫添加到MySQL的主從復制鏈里?(即不重新復制整個庫的情況下,重新設置主從復制)。


首先,我們大概羅列一下主從復制的基本步驟,(MySQL主從首先需要在各自服務器配置好)。

1. 復制數據庫。

mysqldump --master-data --single-transaction -R --databases [db_name] | gzip -9 - | pv > all-db-with-master-data.sql.gz

注意:innodb用 –single-transaction, myisam需要用 –lock-all-tables。

2. 復制,導入數據。

pv < all-db-with-master-data.sql.gz | zcat | mysql

3. 啟動slave數據庫。

slave start

注意:切換到主的語句已經在導出的sql語句里面了,注意查看。change master to master_log_file=’(binlog name in relay_master_log_file)’, master_log_pos=(exec_master_log_pos number)。

那么,在現有的主從復制結構中,如何增加一個新的數據庫進去?比如我們要增加一個數據庫在master服務器上,比如,名為newdb的數據庫。
具體操作如下:

1. 從服務上,停掉slave數據庫。

stop slave;

2. 主服務器上,導出新數據庫。

mysqldump --master-data --single-transaction -R --databases newdb > newdb.sql

3. 主服務器上,修改my.cnf文件,添加新庫到binlog-do-db參數,重啟mysql。

4. 在導出的newdb.sql里面查找當前的日志文件以及位置(change master to …)
然后讓slave服務器執行到這個位置。

start slave until MASTER_LOG_FILE="mysql-bin.000001", MASTER_LOG_POS=1222220;

其中MASTER_LOG_FILE以及MASTER_LOG_POS在導出的數據庫newdb.sql頂部位置查找。

4. 導入新庫到從服務器上。

mysql < newdb.sql

5. start slave

其中比較重要的是在主服務器上導出新庫時的日志位置(position A),這個點很重要,以這個點做為分界線,導入新庫。

這種方法也同樣適用于某個數據庫或者某個數據表不同步的情況,比如主從數據庫有一個表由于某些原因數據不一致,那么上面的方法只需要去掉重啟數據庫一步,其他的操作基本


聲明: 本站所有文章歡迎轉載,所有文章未說明,均屬于原創,轉載均請注明出處。
本文有效鏈接: http://www.vczhtn.live/2013/06/add-new-database-existing-mysql-master-slave/
版權所有: Drupal與高性能網站架構 http://www.vczhtn.live


, , ,

發表評論

電子郵件地址不會被公開。 必填項已用 * 標注


3 × 四 =

您可以使用這些 HTML 標簽和屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

引用:0

下面所列的是引用到本博客的鏈接
如何添加新數據庫到MySQL主從復制列表 來自 Drupal與高性能網站架構
頂部
安徽福彩15选5走势图