Mysql

Mysql Replication 備份和恢復多次失敗

  • January 25, 2016

我嘗試了幾次恢復 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,則無法完成):

  1. 您還可以使用 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?不能保證從較高版本複製到較低版本。

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