mysql 主從複製(其他)

  • mysql 主從複製之間默認的傳輸不是安全的, 非加密的. 主從複製之間可以搭建 ssl 鏈接.

    • 使用 mysql 內置的 ssl 鏈接. 需要 mysql 服務器在編譯時支持ssl.

      master 配置
      [mysqld]
      ssl-capath=/etc/ssl/certs
      ssl-cert=/etc/ssl/certs/master.pem
      ssl-key=/etc/ssl/private/msater.key
      slave 配置
      slave >
      CHANGE MASTER TO
      MASTER_HOST = 'master-1',
      MASTER_USER = 'repl_user',
      MASTER_PASSWORD = 'xyzzy',
      MASATER_SSL_CAPATH = '/etc/ssl/certs',
      MASTER_SSL_CERT = '/etc/ssl/certs/master.pem',
      MASTER_SSL_KEY = '/etc/ssl/private/msater.key';
      slave> START SLAVE;
      
  • 使用 stunnel 建立 ssl

    master 服務器配置文件 /etc/stunnel/master.conf
    cert=/etc/certs/master.pem
    key=/etc/ssl/private/master.key
    CApath=/etc/ssl/certs
    [mysqlrepl]
    accept=3508
    connect=3306
    3508 爲 ssl 監聽的端口(master 上 stunnel 監聽的端口)
    3306 爲 mysql 的端口(master 上 stunnel轉接到此端口上)
    slave 服務器配置文件 /etc/stunnel/slave.conf
    cert=/etc/certs/slave.pem
    key=/etc/ssl/private/slave.key
    CApath=/etc/ssl/certs
    [mysqlrepl]
    accept=3408
    connect=master-1:3508
    3408 爲 ssl 監聽的端口(slave 上 stunnel 監聽的端口)
    connect=master-1:3508 slave 上 stunnel 監聽的本地 3408 端口後轉發的端口 master-1 爲 host
    slave 服務器
    slave >
    CHANGE MASTER TO
    MASTER_HOST = 'localhost',
    MASTER_PORT = 3408,
    MASTER_USER = 'repl_user',
    MASTER_PASSWORD = 'xyzzy';
    slave > START SLAVE;
    
  • 注意 慎用 reset slave 它會刪除 master.info 和 relay-log.info 以及所有的 中繼日誌文件!

  • master.info 上的配置信息 優先於 my.cnf
  • master.info 和 relay-log.info 是 slave 用來保存 master 的信息 複製信息
  • master.info 和 relay-log.info 有 配置文件來控制 my.cnf

    relay-log-info-file=filename
    # 默認文件名爲 relay-log.info
    master-info-file=filename
    # 默認文件名爲 master.info
    
  • slave 上的三個重要位置

    show slave status
    
    * Master_Log_File, Read_Master_Log_Pos
    mysql-bin.002583 310339097
    master 的讀取位置: I/O線程即將從 master 二進制日誌讀取的下一個事件的位置.
    master.info 文件的第2, 3 行.
    * Relay_Master_Log_File, Exec_Master_Log_Pos
    mysql-bin.002583 310339097
    master 的執行位置: SQL線程即將執行的 master binlog 中下一個事件的位置.
    relay-log.info 文件的第 3 行
    * Relay_Log_File, Relay_Log_Pos
    slave-relay.001176 361
    中繼日誌的執行位置: SQL線程即將執行的 slave 中繼日誌中的下一個事件的位置.
    
  • slave 鏈接 master 的默認重連參數

    --slave-net-timeout
    默認 3600s
    --master-connect-retry
    default 60s
    --master-retry-count
    default 86400
    這個默認值最好重新改一下...太大了...
    
  • * 基於行的複製 *

    binlog-format 參數
    STATEMENT 表示基於語句複製
    ROW
    所有插入或改變數據的語句 使用基於行的複製
    創建表或其他更改schema的語句還是 基於記錄的複製
    MIXED
    基於語句複製的安全版本 --- 混合模式
    如果寫入二進制日誌的語句是不安全語句, 則切換爲基於行復制
    ex:
    UUID函數
    用戶自定義函數
    同一個語句更改了兩張或多張 含有 auto_increment 列的表
    binglog-max-row-event-size
    控制事件大小, 處理行復制時不會消耗太多內存.
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章