搭建多主多从mysql服务
需要注意的是5.7版本之前不能多源复制,一个从库不能从多个库进行复制,需要使用 log-slave-updates=1 参数,slave执行master的sql后,将sql记录在binlog日志中,这样从库就可以同步slave过来的数据
原理:
master 01 <==> master 02 :01 02两个主库相互复制
slave 01 <== master 01 :如果master 01不配置 log-slave-updates=1 ,那么master 02的更新数据,slave 库将得不到同步更新
slave 02 <== master 01
master 01 配置:
log_bin=master-bin
log-bin-index=master-bin.index
server_id = 1
sync_binlog=1
binlog_format=mixed
binlog-do-db=testdb
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
replicate-do-db=testdb
auto-increment-increment = 2
auto-increment-offset = 1
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
log_bin_trust_function_creators=1
expire_logs_days = 10
max_binlog_size = 100M
max_connections=600
wait_timeout=5
log-slave-updates=1master 02 配置:
log_bin=master-bin
log-bin-index=master-bin.index
server_id = 2
sync_binlog=1
binlog_format=mixed
binlog-do-db=testdb
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
replicate-do-db=testdb
auto-increment-increment = 2
auto-increment-offset = 2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
log_bin_trust_function_creators=1
expire_logs_days = 10
max_binlog_size = 100M
max_connections=600
wait_timeout=5
log-slave-updates=1slave 01, 02 配置(注意server_id需要设置为唯一):
server_id = 3
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
expire_logs_days = 10
max_binlog_size = 100M
max_connections=600
wait_timeout=5master 01, master 02 分别创建用于 复制的账号
grant replication slave on *.* to 'slave'@'%' identified by '123456';
flush privileges;master 01, master 02 分别设置master到对方服务器
change master to master_host='192.168.1.231',master_user='slave',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=401;
start slave;
show slave status\Gslave 01, 02 都设置master到master 01
change master to master_host='192.168.1.231',master_user='slave',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=401;
start slave;
show slave status\G参数注解:
server-id #指定master主机的id,不可为0,否则拒绝所有slave连接。在master中,您必须配置一个独特的服务器ID(可能需要重新启动服务器)和启用二进制日志,slave的复制基于master的二进制日志。如果没有使用log-bin选项启用二进制日志,复制是不可能的。每个slave与master必须配置一个独特的ID。这个ID用于识别主从服务器,而且必须是一个正整数1和(232)−1之间。
log-bin #指定bin-log文件前缀名称,开启binlog日志
binlog_do_db #指定binlog日志是记录的是哪个库
replicate-do-db #指定复制哪一个库
auto-increment-increment //每次增长2
auto-increment-offset //设置自动增长的字段的偏移量,即初始值为1
log_bin_trust_function_creators 当二进制日志启用后,这个变量就会启用。它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。如果设置为0(默认值),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限。如果变量设置为1,MySQL不会对创建存储函数实施这些限制。 此变量也适用于触发器的创建。
expire_logs_days #保留10天的bin_log日志,防止日志太多占用磁盘空间
max_binlog_size #限制每个bin_log日志大小最大为100M。
log-slave-updates #slave执行master的sql后,将sql记录在binlog日志中
max_connections #指定最大连接数
wait_timeout #等待超时
版权属于:Joyber
本文链接:https://blog.qqvbc.com/default/264.html
转载时须注明出处及本声明