Replication
ALTER TABLE 語句未在所有測試場景中複製 - MariaDB
概括
技術: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 之前的語句。我在命令行上嘗試了這個並且它有效。