设为首页 收藏本站
查看: 806|回复: 0

[经验分享] MySQL5.6 主从复制(基于GTID和多线程)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-13 08:58:00 | 显示全部楼层 |阅读模式

一:GTID工作流程图
二:什么是GTID
三:配置主从复制
四:说明



1.1 GTID工作流程图
wKiom1WhIrPzlen4AAE6CZfkVPc295.jpg



2.1 什么是GTID
GTID:是一个全局唯一标识,128位的随机符,并结合事务的ID号来组合成一个唯一的标识某一个主机上某一个事务的标识码

在binlog中,每一个事务的首部,都会写上GTID的标识,因此,GTID使得追踪和比较复制事务,变得非常简单,而且能够从奔溃中快速进行恢复



3.1主从配置以及参数说明
【Master】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#数据目录位置
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】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#数据目录
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从服务器连接主服务器
1
2
3
4
5
6
7
8
9
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一样



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-86013-1-1.html 上篇帖子: MySQL的配置 下篇帖子: 解决linux 系统中Mysql 进程占用CPU 300%故障 多线程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表