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 控制事件大小, 處理行復制時不會消耗太多內存.
mysql 主從複製(其他)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.