MySQL Replicationation進階

來源:互聯網
上載者:User

標籤:二進位   許可權   查看   htm   start   修改   binary   示範   有用   

摘要

上一篇: MySQL Replication 基礎       下一篇 MySQL Replication-MHA

  一、主主複製

  二、半同步複製

  三、複製過濾器

  四、總結

  五、切分

    待續

一、主主複製

  MySQL的主主複製通過互為主從來實現,此時負載平衡調度器較為容易實現,但是由於多台伺服器都為Master,但是存在著嚴重的問題,需要謹慎使用:
    1. 資料不一致問題,無法解決,詳情見paxos演算法說明
    2. auto_increment id問題

      如何解決?以2台為例,一台用奇數,一台用偶數即可

  配置步驟:

    (1)  各節點使用一個唯一的server_id

    (2)  都啟動二進位日誌和中繼日誌

    (3) 建立擁有複製許可權的使用者帳號

    (4) 定義自動成長id欄位的數值範圍為奇數和偶數

    (5) 互為主從,都啟動複製線程
  

  示範如下:

  (1) Master和Slave修改配置,主要是以下參數
  

log-bin=master-binrelay_log=relay_logauto_increment_offset=2auto_increment_increment=2server_id=1

  (2)  Master和Slave都建立擁有複製許可權的帳號

 

 GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘repl‘@‘192.168.1.%‘ IDENTIFIED BY ‘111111‘;

注意:複製的許可權非常大,不能使用上述萬用字元的方式,最好是單ip授權

 (3)  互為主從

 

SHOW MASTER STATUS;CHANGE MASTER TO MASTER_HOST=‘192.168.1.202‘, MASTER_USER=‘repl‘,MASTER_PASSWORD=‘111111‘,MASTER_LOG_FILE=‘master-bin.000003‘,MASTER_POS=506;START SLAVE;

 

 

此時,在二台伺服器上都可以寫操作,注意主主複製還是有很多的細節問題,除非資料不重要,否則不建議使用。

 

 

二、半同步複製

Master至少要等待一個Slave有所響應的策略

由Google研發的外掛程式 ,所以要查看semisync_master.so 和semisync_slave.so是否被當前的資料庫支援,一般MariaDB預設就是會安裝的

配置步驟:

    (1)  各節點使用一個唯一的server_id

    (2)  Master啟動二進位日誌, Slave中繼日誌

    (3)  Master建立擁有複製許可權的使用者帳號

    (4) 以半同步方式串連Master和Slave

安裝外掛程式方式: HELP INSTALL

  INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘

  INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘

示範如下:

(1) Master 配置,安裝外掛程式  

log-bin=master-binlog-bin-index=master-bin-indexserver-id       = 1

啟動mysql:

INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘;
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘repl‘@‘192.168.1.%‘ IDENTIFIED BY ‘111111‘;

(2) Slave配置,安裝外掛程式

 

relay-log-index=slave-relay-bin.indexrelay-log=slave-relay-binserver-id       = 2

啟動mysql:

 

INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘

 

 

(3) SHOW GLOBAL VARIABLES LIKE ‘%semi%‘;

  MASTER上

set global rpl_semi_sync_master_enabled=‘ON‘;

 

 

 

(4) SHOW GLOBAL STATUS LIKE ‘%semi%‘;

  SLAVE上

set global rpl_semi_sync_slave_enabled=‘ON‘;

 

(5) Connect SLAVE TO MASTER

 

 

 三、複製過濾器

讓從節點僅僅複製指定的資料庫,或者指定資料庫中的指定表

實現方式:

  (1) 主伺服器僅僅向二進位日誌記錄特定資料庫相關的事件,不建議使用

    binlog_do_db: binlog的白名單,使用逗號隔開

    binlog_ignore_db:binlog的黑名單

  (2) 從伺服器SQL_THREAD在replay中繼日誌中事件時,僅僅讀取與特定資料庫(特定表)相關的事件並應用到本地;

    問題:同步了沒必要的資料,會造成網路以及磁碟IO的浪費

    replicate_do_db: replay時白名單

    replicate_ignore_db: replay時黑名單

    

 四、總結

MySQL的分布式系統滿足CAP原則,AP且對A妥協。注意到MySQL Replication只是對讀操作進行了分攤,不管Master Slave和雙主模型,都沒有分攤寫操作。

 

問題:

  1. 如何限制從伺服器為唯讀?

    (1) 首先可以在slave上設定read_only=ON; 但是此限制對擁有SUPER許可權的使用者無效

    (2) 阻止所有使用者:施加一個全域的讀鎖

      mysql> FLUSH TABLES WITH READ LOCK;

  2. 如何保證中從複製的事務安全?

    Master:無非某些IO操作不使用記憶體BUFFER,每次操作都刷到硬碟上。

      sync_binlog=ON 必須

      innodb_flush_logs_at_trx_commit=ON

      innodb_support_xa=ON

      sync_master_info=ON 可選

  Slave上:

    skip_slave_start=ON

    sync_relay_log_info可選

    sync_relay_log可選

 

跟複製功能相關的檔案:

  master.info: 用於儲存slave串連至master的相關資訊,例如帳號,密碼,伺服器位址等等

  relay_log.info: 儲存當前slave節點上已經複製的當前二進位日誌和本地repay log日誌資訊

 

維護和監控常用命令:
(1) 如何清理日誌?

URL: https://mariadb.com/kb/en/sql-commands-purge-logs/Examples:PURGE BINARY LOGS TO ‘mysql-bin.010‘;PURGE BINARY LOGS BEFORE ‘2008-04-02 22:46:26‘;

(2) 複製監控

  SHOW MASTER STATUS;  SHOW SLAVE STATUS;  SHOW BINARY LOGS;  SHOW BINLOG EVENTS;  SHOW PROCESSLIST;

(3) 從伺服器是否落後於主伺服器

 SHOW SLAVE STATUS中的欄位Seconds_Behind_Master:0資訊

(4) 如何確定主從節點資料是否一致;

需要專門的工具,例如percona-tools中就有這個工具

(5) 資料不一致?

選一台重新複製,資料應該已經丟失了,只能人工判斷。

 

 五、切分

http://haitian299.github.io/2016/05/26/mysql-partitioning/

 

 

 

 

MySQL Replicationation進階

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.