Mysql
有沒有辦法在不使用轉儲的情況下創建 MySQL/Percona Slave?
我找不到任何東西,所以我確定答案是*否定的,你是什麼,菜鳥?*但我覺得還是有必要問:)
是否有一個簡單的實用程序可以允許在現有主伺服器上啟動新的從伺服器,而無需在主伺服器上執行轉儲?
我已經多次以傳統方式設置奴隸,所以我不是不知道這個過程,但我很好奇是否有人和我有同樣的感覺,一定有更簡單的方法。
我希望這樣的實用程序會使用類似於 Percona 的 Xtrabackup 的東西,但不是輸出到轉儲文件,而是將輸出直接流式傳輸到從站,然後在提要結束後自動啟用從站關係。
這是現實的嗎?
我注意到 Xtrabackup 中的流式傳輸選項,但除了在另一台伺服器上保存 tar 的能力之外找不到範例,這不是我想要的。我想要一個可以直接流入目標數據庫而不需要使用轉儲文件的解決方案。這在處理大型數據集時特別方便。
可以用
mysqldump
. 您可以將其輸出直接流式傳輸到從站。# mysqldump -h master -A --master-data --single-transaction --quick | mysql -h slave
mysqldump
將添加CHANGE MASTER TO
到輸出中。但是,它不包括MASTER_HOST
,MASTER_USER
和MASTER_PASSWORD
。它必須單獨配置。# mysql -h slave -e "CHANGE MASTER TO MASTER_HOST='master', MASTER_USER='repl', MASTER_PASSWORD='replpass'; START SLAVE;"
附加條款:
- 您可以在主伺服器、從伺服器或任何其他主機上執行上述命令。注意 和 中的
-h
選項。請參閱mysql 選項。mysqldump``mysql
- 當你轉儲時,主人沒有倒下。
- 不會有任何 binlog ID 問題,因為無論你在哪裡執行
mysqldump -h master
,轉儲都來自 master。分別,binlog座標會指向master上的binlog。- 預設值將導致 InnoDB 表被表鎖定,除非
--single-transaction
指定它否定了一致轉儲的表鎖定要求。- 使用
--quick
將確保大表一次讀取一行,而不是在記憶體中緩衝整個行集,這更有利於這種類型的流轉儲。