MySQL5.6 主從複製(基於GTID和多線程)





一:GTID工做流程圖 mysql

二:什麼是GTIDsql

三:配置主從複製安全

四:說明bash




1.1 GTID工做流程圖服務器

wKiom1WhIrPzlen4AAE6CZfkVPc295.jpg




2.1 什麼是GTID多線程

GTID:是一個全局惟一標識,128位的隨機符,並結合事務的ID號來組合成一個惟一的標識某一個主機上某一個事務的標識碼socket


在binlog中,每個事務的首部,都會寫上GTID的標識,所以,GTID使得追蹤和比較複製事務,變得很是簡單,並且可以從奔潰中快速進行恢復ide




3.1主從配置以及參數說明加密

【Master】spa

#數據目錄位置
datadir = /MySQL_DATA
 
#端口
port = 3306
 
#server_id
server_id = 1
 
#sock文件位置
socket= /tmp/mysql.sock
 
 
#每張表一個表文件
innodb_file_per_table=1
 
#區分大小寫
lower_case_table_names=1
 
#PID文件位置
pid_file=/tmp/master.pid
 
#二進制日誌文件位置
log_bin=/MySQL_BIN_LOG/master-bin
 
#二進制日誌索引文件
log_bin_index=/MySQL_BIN_LOG/maste-bin.index
 
#二進制日誌文件格式
binlog_format=ROW
 
 
#當從服務器上從中繼日誌中讀取事件在本地應用的時候,是否把這個事件寫操做的相關操做記錄到本地的二進制日誌,
#爲了GTID的複製安全,須要啓用此選項
log_slave_updates=true
 
#是否啓用GTID的功能
gtid_mode=on
 
 
 
#是否強制GTID具備其的一致×××
enforce_gtid_consistency=true
 
#在GTID模式下,每個從服務器,在聯入主服務器的時候,必需要告訴主服務器,本身是誰
report_port=3306
report_host=192.168.1.112
 
 
#master_info_repository,relay_log_info_repository啓動此兩項,可用於實如今奔潰時保證二進制及從服務器的安全的功能
 
#用於讓主服務器記錄,每個從服務器的鏈接信息,
#以及每個從服務器所複製的二進制日誌文件文件名及其相關的事件位置等,
#記錄到文件中(master.info)仍是記錄到表中(mysql.slave_master_info)
master_info_repository=TABLE
 
 
 
#讓從服務器本身記錄,本身連的主服務器是誰,
#主服務器哪個二進制日誌文件以及這個二進制日誌文件的什麼位置,
#記錄到文件中(relay-log.info)仍是表中(mysql.slave_relay_log_info)
relay_log_info_repository=TABLE
 
 
#啓用可確保無信息丟失,每一個事件都同步master_info_repository,
relay_log_info_repository的信息到表
sync_master_info=1
 
 
 
#設定從服務器的SQL線程數,0表示關閉多線程複製功能
slave_parallel_workers=2
 
 
#binlog_checksum,master_verify_checksum, 
#slave_sql_verify_checksum啓用複製有關的全部校驗功能
#binlog_checksum主服務器端在啓動的時候是否校驗binlog的校驗碼,好比主服務器奔潰了,
#下次啓動的時候,
#若是它發現這個binlog的校驗碼和上一次宕機時候的校驗碼不同的話,它會拒絕讀取
binlog_checksum=CRC32
master_verify_checksum=1
slave_sql_verify_checksum=1
 
 
#啓用可用於在二進制日誌詳細記錄事件相關信息,可下降故障排除的複雜度
binlog_rows_query_log_events=1
 
 
#數據不在二進制日誌緩衝區中緩衝,直接寫到二進制日誌文件
sync_binlog=1
 
 
#半同步配置
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
 
 
 
#SSL加密配置
ssl
ssl_ca  = /usr/local/mysql/ssl/cacert.pem      #指定CA文件位置
ssl_cert= /usr/local/mysql/ssl/master.crt      #指定證書文件位置
ssl_key  = /usr/local/mysql/ssl/master.key      #指定密鑰所在位置






【Slave】

#數據目錄
datadir = /MySQL_DATA
 
#端口
port = 3306
 
#server_id
server_id = 2
 
#sock文件位置
socket = /tmp/mysql.sock
 
 
#二進制日誌
log-bin=/MySQL_BIN_LOG/slave-bin
 
#二進制日誌格式
binlog_format=ROW
 
#每張表一個表文件
innodb_file_per_table=1
#區分大小寫
lower_case_table_names=1
 
#PID文件位置
pid_file=/tmp/slave.pid
 
#中繼日誌
relay_log=/MySQL_DATA/relay-log
 
#中繼日誌索引文件
relay_log_index=/MySQL_DATA/relay-log.index
 
 
#當從服務器上從中繼日誌中讀取事件在本地應用的時候,是否把這個事件寫操做的相關操做記錄到本#地的二進制日誌,
#爲了GTID的複製安全,須要啓用此選項
log_slave_updates=true
 
#是否啓用GTID的功能
gtid_mode=on
 
 
#是否強制GTID具備其的一致×××
enforce_gtid_consistency=true
 
#在GTID模式下,每個從服務器,在聯入主服務器的時候,必需要告訴主服務器,本身是誰
report_port=3306
report_host=192.168.1.113
 
 
#master_info_repository,relay_log_info_repository啓動此兩項,
#可用於實如今奔潰時保證二進制及從服務器的安全的功能
 
#用於讓主服務器記錄,每個從服務器的鏈接信息,
#以及每個從服務器所複製的二進制日誌文件文件名及其相關的事件位置等,
#記錄到文件中(master.info)仍是記錄到表中(mysql.slave_master_info)
master_info_repository=TABLE
 
 
#讓從服務器本身記錄,本身連的主服務器是誰,
#主服務器哪個二進制日誌文件以及這個二進制日誌文件的什麼位置,
#記錄到文件中(relay-log.info)仍是表中(mysql.slave_relay_log_info)
relay_log_info_repository=TABLE
 
 
#啓用可確保無信息丟失,每一個事件都同步master_info_repository,
#relay_log_info_repository的信息到表
sync_master_info=1
 
#binlog_checksum,master_verify_checksum, 
#slave_sql_verify_checksum啓用複製有關的全部校驗功能
#binlog_checksum主服務器端在啓動的時候是否校驗binlog的校驗碼,好比主服務器奔潰了,
#下次啓動的時候,
#若是它發現這個binlog的校驗碼和上一次宕機時候的校驗碼不同的話,它會拒絕讀取
binlog_checksum=CRC32
master_verify_checksum=1
slave_sql_verify_checksum=1
 
#啓用可用於在二進制日誌詳細記錄事件相關信息,可下降故障排除的複雜度
binlog_rows_query_log_events=1
 
 
#半同步設置
rpl_semi_sync_slave_enabled=1
 
 
#設置從服務器只讀
read_only=1
 
 
#SSL配置
ssl
ssl_ca  = /usr/local/mysql/ssl/cacert.pem
ssl_cert= /usr/local/mysql/ssl/slave.crt
ssl_key  = /usr/local/mysql/ssl/slave.key




3.2從服務器鏈接主服務器

mysql>CHANGE MASTER TO
    -> MASTER_HOST='192.168.1.112',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_AUTO_POSITION=1,
    -> MASTER_SSL=1,
    ->MASTER_SSL_CA='/usr/local/mysql/ssl/cacert.pem',
    ->MASTER_SSL_CERT='/usr/local/mysql/ssl/slave.crt',
    ->MASTER_SSL_KEY='/usr/local/mysql/ssl/slave.key';




4.1說明

MySQL5.6的半同步複製,和配置SSL和MySQL5.5同樣

相關文章
相關標籤/搜索