一:GTID工做流程图 mysql
二:什么是GTIDsql
三:配置主从复制安全
四:说明bash
1.1 GTID工做流程图服务器
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同样