MySQL複製3--配置Master

weixin_34279579發表於2018-01-23

為了讓master能夠啟用基於binary log file position的複製,需要在master開啟binary logging並建立一個唯一的server ID。

必須在master開啟binary logging是因為binary log是master向slave複製更改的基礎。如果master沒有使用log-bin選項開啟binary logging,複製將無法實現。

每個在複製群組裡的伺服器必須配置一個唯一的server ID。這個ID用於標示在群組內的伺服器,而且ID的取值必須是正整數(1 至 (232)−1),具體取哪個值由自己決定。

為了配置binary log和server ID,需要先停止MySQL服務,然後編輯my.cnfmy.ini檔案。在該檔案中加入log-binserver-id選項。如果檔案中已包含上述兩項但被註釋掉了,請放開註釋並根據需要配置他們的引數。

  • 例如
    啟動binary logging並使用mysql-bin作為日誌檔名的字首,同時將server ID設定為1。
[mysqld]
log-bin=mysql-bin
server-id=1

儲存設定並重啟MySQL服務。

注意

  • 如果不設定server-id或者將它設定為預設值0,master會拒絕slave的連線。
  • 為了更好地保證複製的永續性和一致性,使用InnoDB事務。應該在my.cnf中設定innodb_flush_log_at_trx_commit=1sync_binlog=1
  • 確保master沒有開啟skip-networking選項,否則slave不能與master對話,複製也將失敗。

附錄

  • server-id屬性


    7391491-7b1011b4e70d38c6.png
    server-id屬性
  • InnoDB資料
  • skip-networking介紹


    7391491-3aee7fe7352ad94b.png
    skip-networking

後記

  • 以上關於master的配置必須寫在/etc/my.cnf檔案中的[mysqld]節點下
    7391491-b1572c4d6248873f.png
    mysqld節點
  • 若不自定義binnary log的名稱,直接放開my.cnflog_bin註解即可,此時的binnary log的名稱為hostname-bin.xxx。若指定名稱,則使用log-bin=xxx。注意log與bin之間,前者是下劃線,後者是橫槓。
  • MySQL建議使用log-bin為binary log指定名稱,否則當master主機名更改時會導致複製失敗。同時建議配置log-bin-index,其值為binary log的檔名。
    7391491-fe329771ddd768a8.png
    Warning

    7391491-5424665a597c2cb6.png
    log-bin-index
7391491-5d532a750dabfbbb.png
MySQL建議配置

參考資料
Setting the Replication Master Configuration

相關文章