mysql5.7主从同步/复制

1,安装两个mysql(我是直接在本地用docker安装了两个)

[root@VM_179_192_centos app]# docker pull mysql:5.7
[root@VM_179_192_centos app]# docker create --name mysql573307 -v F:/mysql/mysql57/3307:/var/lib/mysql -v F:/conf/mysql57/3307:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 mysql:5.7
[root@VM_179_192_centos app]# docker create --name mysql573308 -v F:/mysql/mysql57/3308:/var/lib/mysql -v F:/conf/mysql57/3308:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=654321 -p 3308:3306 mysql:5.7
[root@VM_179_192_centos app]# docker start mysql573307
[root@VM_179_192_centos app]# docker start mysql573308

PS:准备把3307当作master,将3308当作slave

2,数据库配置

2.1, master主数据库配置,配置文件F:/mysql/mysql57/3307/my.cnf

#mysql master1 config 
[mysqld]
server-id = 1        # 节点ID,确保唯一

# log config
log-bin = mysql-bin     #开启mysql的binlog日志功能
sync_binlog = 1         #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
binlog_format = mixed   #binlog日志格式,mysql默认采用statement,建议使用mixed
expire_logs_days = 7                           #binlog过期清理时间
max_binlog_size = 100m                    #binlog每个日志文件大小
binlog_cache_size = 4m                        #binlog缓存大小
max_binlog_cache_size= 512m              #最大binlog缓存大
binlog-do-db = test 		#要同步的数据库 
binlog-ignore-db=mysql #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行

auto-increment-offset = 1     # 自增值的偏移量
auto-increment-increment = 1  # 自增值的自增量
slave-skip-errors = all #跳过从库错误

2.2,slave从数据库配置,配置文件F:/mysql/mysql57/3308/my.cnf

[mysqld]
server-id = 2

2.3,重启两个数据库,让配置生效

[root@VM_179_192_centos app]# docker restart mysql573307
mysql573307
[root@VM_179_192_centos app]# docker restart mysql573308

3,master数据库,创建复制用户并授权

3.1, 进入master数据库,创建复制用户

CREATE USER 'repl_user'@'%' IDENTIFIED BY '111111';  
//111111是自己设置的密码

3.2, 赋予该用户复制的权利

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl_user'@'%';

3.3,查看主数据库binlog信息

mysql> show master status  //下面第四步要用其信息

4, 配置从库

mysql> CHANGE MASTER TO 
MASTER_HOST = '192.168.2.172',  
MASTER_USER = 'repl_user', 
MASTER_PASSWORD = '111111',
MASTER_PORT = 3307,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=404,
MASTER_RETRY_COUNT = 60,
MASTER_HEARTBEAT_PERIOD = 10000; 

# MASTER_LOG_FILE='mysql-bin.000001',#与主库File 保持一致
# MASTER_LOG_POS=404 , #与主库Position 保持一致

5,启动slave从库进程

mysql> START SLAVE;//开始同步
mysql> SHOW SLAVE STATUS; //查看从库状态
mysql> STOP SLAVE; //停止同步,在重新设置从库配置和重置从库配置之前,均需要先停止
mysql> RESET SLAVE ALL; //重置所有salve配置,有时候报错或者要重新设置的情况下执行这个有用

只有【Slave_IO_Running】和【Slave_SQL_Running】都是Yes,则同步是正常的。

注意:

1,如果某段时间内,【从数据库】服务器异常导致同步中断(可能是同步点位置不匹配),可以尝试以下恢复方法:进入【主数据库】服务器(正常),在bin-log中找到【从数据库】出错前的position,然后在【从数据库】上执行change master,将master_log_file和master_log_pos重新指定后,开始同步。
2,mysql容器的每一次重新启动,都会导致mysql-bin.00000X 的数字增长,所以要重新设置从数据库的连接master配置。

参考链接:https://www.jianshu.com/p/19cb0f16dea4 属于mysql5.6的,有些配置不适用5.7
参考链接:https://www.cnblogs.com/sanduzxcvbnm/p/11639962.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值