MySQL之—如何新增資料庫到MySQL主從複製清單的具體介紹
#MySQL主從複製一般情況下我們會設定需要同步的資料庫,使用參數配置選項,binlog-do-db,可以在master上指定需要同步的資料庫,replicate-do-db在從資料看上指定需要同步的資料庫。 (一般只設定master上的binlog-do-db即可,不需要兩個同時設定。以防萬一,在slave也可以加上replicate-ignore-db)。
今天,我遇到的問題是,在master上面新增了一個資料庫,這個時候如何把新加入的這個資料庫加入到MySQL的主從複製鏈裡? (即不重新複製整個庫的情況下,重新設定主從複製)。
首先,我們列出主從複製的基本步驟,(MySQL主從首先需要在各自伺服器設定好)。
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。
pv < all-db-with-master-data.sql.gz | zcat | mysql
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的資料庫。具體操作如下:
stop slave;
mysqldump --master-data --single-transaction -R --databases newdb > newdb.sql
主伺服器上,修改my.cnf文件,新增庫到binlog-do-db參數,重啟mysql。
在匯出的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頂部位置查找。
mysql < newdb.sql
start slave
其中比較重要的是在主伺服器上匯出新程式庫時的日誌位置(position A),這個點很重要,以此點做為分界線,匯入新庫。
這種方法也同樣適用於某個資料庫或某個資料表不同步的情況,例如主從資料庫有一個表由於某些原因資料不一致,那麼上面的方法只需要去掉重啟資料庫一步,其他的操作基本上都是相同的
以上是MySQL之—如何新增資料庫到MySQL主從複製清單的具體介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!