簡體   English   中英

MySQL / MariaDB復制:我可以中斷該過程嗎?

[英]MySQL/MariaDB replication: Can I interrupt the process?

我這里有一個復制設置,其中數據從固定主機復制到筆記本。

復制過程分兩個步驟:中繼文件的復制(非常快)和中繼日志事件到數據庫的應用(這往往很慢)。

現在我的問題是:假設從服務器已從主服務器獲取了所有數據,但“導入過程”仍在運行。 我可以安全地關閉從屬主機並恢復復制中仍未完成的部分,而不會以任何方式干擾該過程嗎?

因此,我已連接到主機,說“停止從站”,關閉筆記本計算機,回家,然后再次“啟動從站”,而沒有連接到主機。 我可以期望從屬實例再次恢復導入過程嗎?

您的筆記本電腦永遠是另一台計算機的從機,對嗎? 您只是每天晚上都斷開與Master的網絡連接?

從站上有兩個線程。 I / O線程負責從主服務器上的二進制日志中提取數據,並將這些內容放入從屬服務器上的“中繼日志”中。 如果(何時)網絡消失,則該線程反復重試。 有一些設置可以說明最終放棄的頻率和時間。 考慮調整它們。

SQL線程負責應用中繼日志中的所有內容。 實際上,SQL線程可以一直運行。 無事可做時“什么都不做”是很高興的。

I / O線程根據需要創建新的中繼日志文件。 SQL線程在完成日志后會刪除它。

這些年來,我已經與數十名奴隸打交道。 我不記得任何有關網絡或電源故障的問題。 本質上,您每天晚上至少會造成網絡故障。 如果還關閉了筆記本計算機的電源,請優雅地進行操作。 InnoDB(但不​​是MyISAM)可以從電源故障中很好地恢復,但是請不要碰運氣。

停止/開始從動似乎不必要,但不會造成傷害。 事情應該“恢復”並最終“趕上”。

您的報價談到了Master清除binlog。 好吧,這里有個問題。 Master不會跟蹤存在哪些Slave,因此無法確定您的Slave斷開連接的時間是否長於Master保留二進制日志的時間。

請參閱expires_logs_days 建議您將其設置為高於您可能需要的休假天數。

我對Slave的經驗早於GTID,Galera等。 你會用這樣嗎?

我部分找到了我問題的答案:

MySQL文檔說

如果從服務器在SQL線程執行所有獲取的語句之前停止運行,則I / O線程至少已獲取所有內容,以便將語句的安全副本本地存儲在從服務器的中繼日志中,以備下次使用時執行。奴隸開始。 這使主服務器可以更快地清除其二進制日志,因為它不再需要等待從服務器獲取其內容。

這表明完全有可能恢復導入過程(執行語句),但是仍然不清楚

  1. 如果我需要在描述的事情發生之前start slave ,並且
  2. 如果我start slave如果奴隸找不到主人,會發生什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM