Mysql

MySQL 5.6 到 5.7 就地升級還是全新安裝?

  • June 14, 2017

我正準備將 AWS RDS 上的生產數據庫伺服器從 5.6 版本遷移到 5.7。

我不確定我是否信任自動升級服務。顯然,我會在做任何事情之前進行備份,但是有什麼理由應該選擇只啟動一個新實例並手動導出/導入數據(當然還有權限)?

對於像 5.5 到 5.6 或 5.6 到 5.7 這樣的主要版本更改,我建議導出/導入而不是就地。

為什麼我更喜歡全新安裝而不是就地安裝?:

  • 在 MySQL 5.6 中,模式下有 29 個表,mysql而在 5.7 中,模式下有 33 個表mysql
  • 如果您使用的是 GTID,則不建議進行就地升級。
  • 不推薦使用的命令或數據類型。
  • 不推薦使用的 UDF 或更改的函式。
  • 密碼不兼容的可能性。
  • 不推薦使用的東西會在導入過程中作為錯誤被丟棄,從而給我們帶來警報。儘管我們沒有正確閱讀白皮書。

我該如何進行?:

假設您的案例 5.6 到 5.7,在您的測試台上:

  1. 採取mysqldumpmydumper與主人身份。一致的備份。
  2. 將所有贈款單獨放入一個sql文件中。
  3. 全新安裝 5.7。
  4. 如果沒有performance_schema、或任何系統架構mysqlinformation_schema請將轉儲的數據導入 5.7 並應用授權。確保您驗證 root 和 admin 使用者已被刪除,因為它是不同的伺服器。
  5. 現在創建從屬連結並在 5.6 上進行停機。
  6. 現在您的測試架構將如下所示:
APP- > 5.6 SERVERA (Master of) -> 5.7 SERVERB (Master of)  -> 5.7 SERVERC (Slave of SERVERB)
  1. 現在通過考慮頻繁更新表並獲取塊集中的數據並驗證數據校驗和是否與正確的更改狀態相同,對ServerA,ServerB,ServerC進行一致性檢查。

但在一切之前,我們應該問自己選擇不同版本的原因是什麼。當然,我們可以利用新功能。但是,如果我們在測試台上驗證衝突,至少我們有信心在生產中做同樣的事情。

您可以創建 MySQL 5.6 實例的只讀副本,然後使用 RDS 提供的升級功能將只讀副本升級到 MySQL 5.7 - RDS 文件詳細說明瞭如何執行此操作 - 查找標題為“升級 MySQL 數據庫並減少停機時間”的部分http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.MySQL.html

然後,您可以確認您對新實例感到滿意,並通過將其提升為主實例並重命名實例或將應用程序重定向到新實例來執行手動故障轉移到新實例。

您必須確保在將新實例提升為主實例之前停止應用程序對原始實例的寫入,並確保只讀副本已處理從原始主實例接收到的所有未完成的二進制日誌語句。通常最好在計劃的應用程序停機期間執行此操作 - 有一些方法可以在不停機的情況下執行此操作,但它們需要更多的解釋和測試。

顯然,在對生產環境執行升級之前,您應該在測試環境中遵循此過程,以便評估您的應用程序與新版本 MySQL 的兼容性。

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