mysql5.7 主从复制

master

vim /etc/mysql/my.cnf

server-id=1963306 #必须是数字类型,主从需要不一致(后ip+端口)
skip-name-resolve=on #–跳过域名解析(on/off)
expire_logs_days=3 #binlog保留多少天,看具体安排
innodb_support_xa=1 #这个参数是在主库上设置的,默认是自动开启的。看到XA首先想到的是分布式事务了,这个参数确保事务日志写入bin-log的顺序与是事务的time-line是一致的。这样在系统崩溃的时候,启用日志恢复,可以严格按照时间线来恢复数据库

binlog_cache_size=1M #默认32k,binlog缓存的大小,设置时要当心,建议1-4M,根据业务繁忙情况
max_binlog_size=2048M #默认为1024M

transaction-isolation=READ-COMMITTED #事务隔离级别
gtid_mode=ON #是否开启GTID功能。产生gtid,slave只接受带gtid的事务
enforce_gtid_consistency=1 #开启gtid的一些安全限制(介意开启)强制GTID一致性,配合gtid_mode,必选
log-slave-updates=1 #允许下端接入slave,从库开启会记录来源主库的binlog日志。如果是多个从库,切换后,建议关掉log-slave-updates参数,否则重置成主库以后,可能会将已经执行过的二进制日志重复发送给s2,导致s2同步错误。

log_bin=binlog #日志路径
log_bin_index=binlog.index #索引文件的路径
binlog_format=ROW #日志模式
binlog_rows_query_log_events=on #二进制日志中记录更详细的sql操作

loose_rpl_semi_sync_master_enabled = 1 #mysql5.6开启主的半同步复制
loose_rpl_semi_sync_slave_enabled = 1 #mysql5.6开启从的半同步复制
loose_rpl_semi_sync_master_timeout = 5000 #超时5秒,切回异步
rpl_semi_sync_master_wait_point = AFTER_SYNC #mysql5.7方法:开启无损复制
rpl_semi_sync_master_wait_for_slave_count=1 #至少收到1个slave发回的ack

slave

server-id=15418334
skip_name_resolve=on
expire_logs_days=7
innodb_support_xa=1
binlog_cache_size=1M
max_binlog_size=2048M

transaction-isolation=READ-COMMITTED
gtid_mode=ON
enforce_gtid_consistency=1
log-slave-updates=1

log_bin=binlog
log_bin_index=binlog.index
binlog_format=ROW
binlog_rows_query_log_events=on
relay_log=/var/lib/mysql/relaylog.log #定义relay_log的位置和名称,如果值为空,则默认位置在数据文件的目录
read_only=1 #只读模式

loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 5000

----- 下面命令docker安装的mysql不成功
plugin_dir=/var/lib/mysql/plugin/
plugin_load=“rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so”
rpl_semi_sync_master_wait_point = AFTER_SYNC
rpl_semi_sync_master_wait_for_slave_count=1

配置完成后在主库和从库创建用户,执行以下sql

create user ‘master-slave’@’%’ identified with mysql_native_password by ‘11111’;
grant replication client,replication slave on . to ‘master-slave’@’%’;
flush privileges;
select user,host from mysql.user;

在从库上使slave与master建立连接,执行以下sql

stop slave;
reset master;
reset slave;
change master to
master_host=’’,
master_port=,
master_user=’’,
master_password=’’,
master_auto_position=1;
start slave;
show slave status\G;
(关键查看 slave_io_runnung和slave_sql_runnung都为yes)
show processlist;
碰到(uuid冲突)报错:去 mysql的data目录下删除auto.cnf文件,然后重启
碰到(密码插件)报错:停掉从库,所有服务删除用户(drop user ‘master-slave’@’%’)。修改create user ‘master-slave’@’%’ identified with mysql_native_password by ‘111111’; 主库执行reset master;从库停止,重制master、slave,再执行上面的change master to 语句,(5.7.21之前的版本不会有该错)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值