Mysql-Replication

具有大量數據庫的 MySQL 從站設置

  • June 2, 2011

我發現自己需要在具有 4000 多個數據庫的 MySQL 伺服器和它的第一個從伺服器之間設置主從複製。

數據庫目前正在處理生產工作負載,並且必須在不導致停機的情況下啟動複製。

是否有任何工具或經過實戰考驗的程序可以做到這一點?(以最小的鎖定轉儲所有數據並完全準確地保存主二進制日誌位置?)

到目前為止,我一直在思考的是在保存 binlog 位置的同時一個一個地轉儲數據庫,將數據載入到從屬設備中,然後使用 replication-do-db 啟動從屬設備,並載入所有數據庫,一旦從屬設備停止複制已經趕上,沖洗並重複……但我不是100%確定這是最好的方法。

謝謝你,稀有

稍後編輯:表主要是 MyISAM,但也有一些 InnoDB。

我創建了一個 bash 腳本,該腳本增量地從主伺服器轉儲數據庫並將它們載入到從伺服器中,同時跟踪 replication_do_db。

感謝Domas Mituzas這篇文章,它讓我可以即時更新 replicate_do_db。我還從轉儲的 sql 中提取 master_log_file 和 master_log_pos 以發出 START SLAVE UNTIL 和 SELECT MASTER_POS_WAIT 以便在正確的點載入數據。

稍後編輯:為了使其按預期工作,基於行的複制是必須的。

你的 MySQL 數據庫是純粹的 InnoDB 還是它還包括 MyISAM?如果是 InnoDB,您可以使用帶有選項“–single-transaction –master-data”的 mysqldump 來為您的複制從站獲取可靠的轉儲。

如果不幸的是您有 MyISAM 以獲得可靠的轉儲,它必須鎖定伺服器上的所有事務,直到整個備份完成.. 並且該時間取決於以 GB 為單位的數據庫大小和總行數的組合。

引用自:https://serverfault.com/questions/276203