Mysql

mysql主從複製場景

  • June 18, 2015

我們正在創建一個新的 mysql 從屬伺服器,但對於轉儲,我們從一個備份伺服器獲取,該備份伺服器是目前主伺服器的從屬伺服器。現在要啟用複制,我們希望將它與主伺服器連接,所以我應該從主伺服器或從我進行轉儲的備份伺服器獲取日誌位置。

其次,我們創建的新伺服器是 5.6,舊伺服器是 5.5,還會有任何複製問題嗎?

如果你想從另一個從站設置從站,步驟如下

  • 使用讀鎖刷新表以鎖定從屬設備,因此它不應獲得更新
  • 顯示從屬狀態\G 並註意主座標
  • 現在使用 mysqldump 進行備份
  • 解鎖表以解鎖從屬
  • 轉移該備份並將其恢復到新的
  • 希望您在 master 上授予複製 slave 有問題,因此需要在新的 slave 上使用 change master 並給出步驟 2 中記錄的座標

有關主從版本差異的詳細資訊,應該不是什麼大問題,但一個好主意是閱讀 MySQL 文件。

希望能幫助到你

在 MySQL 5.6 中,mysqldump 可以使用–dump-slave=1–single-transaction為您做到這一點。它與–master-data=1相同,但這是檢索日誌文件和位置的方式:

–dump-slave=1將執行以下操作:

  • STOP SLAVE SQL_THREAD;
  • 執行轉儲
  • START SLAVE SQL_THREAD;

無需執行FLUSH TABLES WITH READ LOCK;

你還問

其次,我們創建的新伺服器是 5.6,舊伺服器是 5.5,還會有任何複製問題嗎?

這只是一個可以破壞從 5.5 複製到 5.6 的主要問題

我討論了版本之間的 binlog 格式差異(參見mysql replication master 5.5 slave 5.1 error on create database

在 MySQL 5.5 Master 到 MySQL 5.6 Slave 的情況下,我的老闆最近發現的問題與新的 TIMESTAMP 格式有關。MySQL 5.6 現在支持 TIMESTAMP 中的微秒。MySQL 5.5 沒有。在進行基於行的複制並且主從配置binlog_format 為 ROW 或 MIXED時,MySQL 5.6 的 IO 執行緒將複製 MySQL 5.5 事件,並將其儲存在中繼中。如果事件包含 TIMESTAMP,MySQL 5.6 的 SQL 執行緒將中斷嘗試從中繼日誌中解包事件。

這種罕見事件的唯一解決方法是在 Master 和 Slave上將 binlog_format 設置為 STATEMENT。然後,設置複製。

結語

步驟 01:只需在目前從站上執行它

mysqldump --dump-slave=1 --single-transaction ... > slave_data.sql
echo "START SLAVE;" >> slave_data.sql

STEP 02 : 移動slave_data.sql到新的 Slave 伺服器

STEP 03 : 在新伺服器上執行

CHANGE MASTER TO
master_host='ipaddr_of_master',master_port=3306,
master_user='repluser',master_password='repluserpassword',
master_log_file='bin-log.000000',master_log_pos=4;
source slave_data.sql

這將設置複製並為您啟動它。

試一試 !!!

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