Mysql Replication 備份和恢復多次失敗
我嘗試了幾次恢復 MySQL 備份,但不幸的是它由於某些或新的原因而失敗。
我有 2 台主機主從機,詳細資訊如下。
Server1_Master
os-centos6.7
mysql- 5.6.28-2.el6
Server2_Slave
os-centos6.6 mysql-
5.5.41
引擎:innodb(在兩個主機上)
以下是我使用的受人尊敬的步驟。
主備份
mysqldump -uroot -p –skip-lock-tables –single-transaction –flush-logs –hex-blob –master-data=2 -A > ~/dump.sql
在從屬設備上恢復 mysql
mysql -u root -p < /location/dump.sql
將 MASTER 更改為 MASTER_HOST=’<>’,MASTER_USER=‘replicant’,MASTER_PASSWORD=’<>’, MASTER_LOG_FILE=’<>’, MASTER_LOG_POS=<>;
啟動奴隸;
現在我們在伺服器恢復小時後得到的新錯誤如下
“第 150536 行的錯誤 1449 (HY000):指定為定義者的使用者 (’lipl_ga_app’@’%’) 不存在”
請讓我知道開始新複製的最佳方式。
錯誤本身正在發生,因為有一個創建視圖(或過程)語句並且從站沒有創建它的使用者。在 mysqldump 中,您將具有以下格式:
CREATE ALGORITHM=UNDEFINED DEFINER=`lipl_ga_app`@`%` SQL SECURITY DEFINER...
這並不特定於複製。即使您想將它恢復到一個空的數據庫,它也會發生。
在複製方面
1)一種方法是mysqldump,但您需要鎖定表或確保在轉儲過程中沒有任何寫入(例如read_only = 1)。否則你從一開始就讓你的奴隸不同步。也肯定會對連接到主控的應用程序產生影響。有關這方面的更多資訊,您可以閱讀 mysql 文件:http ://dev.mysql.com/doc/refman/5.7/en/replication-howto.html
到相同或更高的主要版本(如果 master 是 5.6 而 slave 是 5.5,則無法完成):
- 您還可以使用 percona Xtrabackup ( https://www.percona.com/doc/percona-xtrabackup/2.3/index.html ) 等熱備份解決方案來檢索數據而不影響主伺服器。這可能也會更快。應用日誌後,它的行為就像普通的 mysql 二進製文件一樣,您可以執行更改主命令。您將擁有一個 xtrabackup_binlog_info 文件,其中包含您需要將從站指向的主位置。
3)您可以在獲取主位置後停止主,將二進製文件複製到從,啟動mysql並將主更改為…與您保存的位置。如果您想快速重新啟動 mysql,也可以通過對文件系統(LVM、ZFS、BTRFS 等)進行快照來完成此操作。通常這是最快的方法。
如果您的版本不匹配,您可能需要執行 mysql_upgrade,因為使用後兩者,您複製的二進制數據不合邏輯。
旁注:
為什麼要從 5.6 複製到 5.5?不能保證從較高版本複製到較低版本。