標籤:黑名單 伺服器 資料庫 二進位 白名單 mysql
在複製的時候只複製資料庫中的部分表,可以減少主從伺服器的壓力
在主伺服器上
binlog-bin-db僅將指定資料庫相關的修改操作計入二進位日誌(一般來講)【白名單】
binlog-ignore-db【黑名單】
一旦主要資料庫發生故障,則無法立即還原引起較大的損失,因此主端的二進位日誌是完整的
從伺服器上
replicate-do-db【白名單】只應用哪個資料庫到本地
replicate-ignore-db【黑名單】
replicate-do-table使用指定表
replicate-ignore-table
replicate-wild-do-table使用萬用字元的方式
replicate-wild-ignore-table
以上指令都可以使用多次
設定黑白名單比較適合在從資料庫上進行
MySQL 5.6中引入了GTID
是唯一的標示符,是由伺服器的UUID(全域唯一標識)對於任意一個伺服器來講,都是一個128位的隨機字串、並結合事務ID號來組合成某個主機上事務的唯一的標識碼,即為GTID
在每一個事務的首部,都寫上了GTID
使複製的過程變得非常簡單,並且能夠在崩潰中迅速的恢複,提供了高可用的能力
innoDB 儲存引擎,若要使用它的高可用,都要藉助於GTID
使用GTID之後,可以自動的選擇要從哪個地方開始複製
多線程複製
事務的前後順序很重要
每個資料庫也僅能使用一個線程,當涉及到多個資料庫時,多線程複製才有意義
slave -parallel-workers=0
禁用多線程功能
replication Utility:mysqlreplicate
快速啟用MySQL的從伺服器,協助從伺服器,檢查本地已經執行的事務通過追蹤GTID,跳過已經執行的複製,從而加快複製
replication Utility:mysqlrplcheck
實現簡單的驗證部署,並實現快讀損毀修復,binlog是否被啟用以及相關的配置是否異常
通過執行簡單的認證功能
replication Utility:mysqLrplshow
顯示mysql的複寫拓撲圖,顯示是否是多級複製,會繪製一個圖,會顯示主機名稱以及連接埠號碼
replication Utility:mysqlfailover容錯移轉工具
快速的自動或手動提升一個slave,應用其他slave不具有的功能轉換為master
replication Utility:mysqlrpladmin調度管理工具
手動的讓某個節點上線或者下線,調度down掉一個節點
要在MySQL 5.6中使用複製功能,其服務配置段[mysqld]中於少應該定義如下選項:
binlog-format:二進位日誌的格式,有row、statement和mixed幾種類型;
需要注意的是:當設定隔離等級為READ-COMMITED必須設定二進位日誌格式為ROW,現在MySQL官方認為STATEMENT這個已經不再適合繼續使用;但mixed類型在預設的交易隔離等級下,可能會導致主從資料不一致;
log-slave-updates、gtid-mode、enforce-gtid-consistency、report-port和report-host:用於啟動GTID及滿足附屬的其它需求;
master-info-repository和relay-log-info-repository:啟用此兩項,可用於實現在崩潰時保證二進位及從伺服器安全的功能;
sync-master-info:啟用之可確保無資訊丟失;
slave-paralles-workers:設定從伺服器的SQL線程數;0表示關閉多線程複製功能;
binlog-checksum、master-verify-checksum和slave-sql-verify-checksum:啟用複製有關的所有校正功能;
binlog-rows-query-log-events:啟用之可用於在二進位日誌記錄事件相關的資訊,可降低故障排除的複雜度;
log-bin:啟用二進位日誌,這是保證複製功能的基本前提;
server-id:同一個複寫拓撲中的所有伺服器的id號必須惟一;
master-info-repository讓主伺服器記錄每一個從伺服器的串連資訊以及每一個主伺服器複製的二進位檔案名極其相關的事件資訊;記錄到:file table
relay-log-info-repository從伺服器自己記錄串連的主伺服器是誰,主伺服器的哪個二進位檔案以及二進位檔案的記錄位置.記錄到:file table
PS uname -n 查看主機名稱
cat /etc/issue查看Linux核心
一、簡單主從模式配置步驟
1、配置主從節點的服務組態檔
1.1、配置master節點:
[mysqld]
binlog-format=ROW
log-bin=master-bin
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=1
report-port=3306
port=3306
datadir=/mydata/data
socket=/tmp/mysql.sock
report-host=master.magedu.com
1.2、配置slave節點:
[mysqld]
binlog-format=ROW
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=11
report-port=3306
port=3306
log-bin=mysql-bin.log
datadir=/mydata/data
socket=/tmp/mysql.sock
report-host=slave.magedu.com
2、建立複製使用者
mysql> GRANT REPLICATION SLAVE ON *.* TO [email protected] IDENTIFIED BY ‘replpass‘;
說明:172.16.100.7是從節點伺服器;如果想一次性授權更多的節點,可以自行根據需要修改;
3、為備節點提供初始資料集
鎖定主表,備份主節點上的資料,將其還原至從節點;如果沒有啟用GTID,在備份時需要在master上使用show master status命令查看二進位記錄檔名稱及事件位置,以便後面啟動slave節點時使用。
4、啟動從節點的複製線程
如果啟用了GTID功能,則使用如下命令:
mysql> CHANGE MASTER TO MASTER_HOST=‘master.magedu.com‘, MASTER_USER=‘repluser‘, MASTER_PASSWORD=‘replpass‘, MASTER_AUTO_POSITION=1;
沒啟用GTID,需要使用如下命令:
slave> CHANGE MASTER TO MASTER_HOST=‘172.16.100.6‘,
-> MASTER_USER=‘repluser‘,
-> MASTER_PASSWORD=‘replpass‘,
-> MASTER_LOG_FILE=‘master-bin.000003‘,
-> MASTER_LOG_POS=1174;
二、半同步複製
1、分別在主從節點上安裝相關的外掛程式
master> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘;
slave> INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘;
2、啟用半同步複製
在master上的設定檔中,添加
rpl_semi_sync_master_enabled=ON
在至少一個slave節點的設定檔中添加
rpl_semi_sync_slave_enabled=ON
而後重新啟動mysql服務即可生效。
或者,也可以mysql服務上動態啟動其相關功能:
master> SET GLOBAL rpl_semi_sync_master_enabled = ON;
slave> SET GLOBAL rpl_semi_sync_slave_enabled = ON;
slave> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;
3、確認半同步功能已經啟用
master> CREATE DATABASE magedudb;
master> SHOW STATUS LIKE ‘Rpl_semi_sync_master_yes_tx‘;
slave> SHOW DATABASES;
本文出自 “牛頓也吃蘋果” 部落格,請務必保留此出處http://mi55u.blog.51cto.com/11619321/1927294
MySQL資料庫複寫過濾