Replication
Galera 備份失敗並出現錯誤“mysqldump:錯誤 1213:嘗試獲取鎖定時發現死鎖;轉儲表時嘗試重新啟動事務”
我們在 dba.stackexchange.com 上 遇到了同樣的問題,來自 mysqldump –single-transaction 的死鎖,這可能嗎?. 我們提供 DBaaS,無法控制客戶的 DDL 語句。
mysqldump: Error 1213: Deadlock found when trying to get lock; try restarting transaction when dumping table `x` at row: x
在該錯誤之後,備份失敗。
這是備份命令
mysqldump --max_allowed_packet=1G -u root -pvubaluaGebetee1aichaingubaePho --opt --flush-logs --single-transaction --all-databases | bzcat -zc > /var/lib/mysql/backup/$FILE`date +%Y%m%d-%H%M%S`.sql.bz2
接受的解決方案推薦Setup Master/Slave Replication。我們已經使用 Galera 多主複製。
> select version(); +----------------------+ | version() | +----------------------+ | 5.5.41-MariaDB-wsrep | +----------------------+ 1 row in set (0.00 sec)
其他想法如何確保備份完成?我不在乎是否有幾行不在備份中。
選項1
使用 galera 集群外的複制從屬設備專門用於創建備份。在進行轉儲之前,您可以停止從站以確保所有 DDL 操作都已完成。像 mydumper 這樣的並行轉儲操作也是可能的。
不要忘記在您用作主人的 galera 成員上啟用 log-slave-updates。
選項 2
在從 galera 節點進行備份之前取消同步它。
考慮使用 percona-xtrabackup - 這是一種非阻塞方法。還可以考慮使用 pbzip2(並行 bzip2)以加快備份過程。