需要注意的是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=1

master 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=1

slave 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=5

master 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\G

slave 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 #等待超时

标签: mysql

添加新评论