Replication

ALTER TABLE 語句未在所有測試場景中複製 - MariaDB

  • July 26, 2021

概括

技術:mariadb 10.3

問題:一些 ALTER TABLE 更改引擎的嘗試未複製。

測試場景:

  • 使用 PDO 執行 ALTER 語句的命令行 PHP 腳本 -未複製
  • mysql 直接命令行 ALTER 語句 -沒有複製
  • DataGrip 遠端連接 -確實複製了

以上都是使用同一個使用者執行的,所以這不是權限問題。

長版

我正在對我們的複制數據庫進行更改,以將所有表從 MyISAM 轉換為 InnoDB。它有很多表(超過 100k,跨越幾百個數據庫),因此需要編寫腳本。我們已經在非複制環境中測試了這種變化,總的來說,一切似乎都很好。

我去執行測試以驗證複製不會出現問題。當針對複制的測試數據庫執行我的轉換腳本時,主表全部更新,但複製者沒有。然後我嘗試直接在 mysql CLI 中手動執行查詢。同樣的結果 - 主成功,複製人甚麼都不做。

我執行的最後一個測試是將我的 IDE 的 SQL 編輯器 (DataGrip) 連接到測試數據庫並嘗試從那裡修改架構。這行得通!

很明顯,DataGrip 正在做我的腳本和直接 CLI 語句沒有做的事情。我研究了送出,但我讀到的所有內容都說 ALTER TABLE 語句包含隱式送出。我找不到任何東西來啟用 DataGrip 的更詳細的輸出,以查看它可能會做不同的事情。

我不太確定這是什麼原因,但過了一會兒我注意到我的 IDE 會執行一個 USE 數據庫;執行每組 ALTER 之前的語句。我在命令行上嘗試了這個並且它有效。

引用自:https://dba.stackexchange.com/questions/296046