Mysql5.7版本如何实现主从同步


前言

之前说到redis的主从备份:

Mysql主从复制指的是数据可以从一个Mysql数据库节点复制到多个Mysql数据库节点。 Mysql数据库默认采用异步复制机制。这样对于master节点和slave节点来说,只能保证弱一致性。可能会存在master节点和slave节点数据不一致的情况。

redis同步第一次进行全量同步,slave将master上的数据全部复制一份。slave放弃之前的数据,将接收到的RDB文件全部导入,之后进行增量同步。

和redis不同,mysql主从同步只能基于搭建好之后的数据操作的同步,无法同步以前的数据,故需要手动同步


一、原理?

1.master节点通过foke一个线程将数据变动记录到binlog文件中
2.slave节点通过io线程每一段时间去master节点获取binlog日志数据,保存到relay log中继日志中
3.slave节点检测中继日志有更新,sql线程会将更新的内容同步到slave节点中

tip:还记得之前的日志监听器吗??

二、步骤

1.master搭建

139.9.186.192服务器作为master

1.拉镜像,今天拉5.7版本
 docker pull mysql:5.7
2.运行mysql-master 
 docker run -d -p 3306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
3.更新和下载vim插件
 1.docker exec -it mysql-master /bin/bash
 2.apt-get update
 3.apt-get install vim
4.打开my.cnf文件
 vim /etc/mysql/my.cnf
5.修改my.cnf文件,添加如下文件
 [mysqld]  //必填
 server_id=1 //如果在同一局域网下部署集群,那么多个mysql的server_id不能相同
 log-bin=mysql-bin //日志名称
 expire_logs_days=7 //自动清理log时间
6.重启mysql-master
7.查看是否生效
 1.进入docker exec -it mysql-master /bin/bash
 2.使用mysql> mysql -u root -p 
 3.mysql> show variables like '%log_bin%'; //log_bin日志此时为on
8.创建从库连接的用户
 mysql> grant replication slave on *.* to 'slave'@'%' identified by '123456';
9.查看主数据库状态
 mysql> show master status //记录下file名字和position后面从库连接使用

2.slave搭建

1.15.233.184为slave

1.拉镜像,拉5.7版本
 docker pull mysql:5.7
2.运行mysql-master 
 docker run -d -p 3306:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
3.更新和下载vim插件
 1.docker exec -it mysql-slave /bin/bash
 2.apt-get update
 3.apt-get install vim
4.打开my.cnf文件
 vim /etc/mysql/my.cnf
5.修改my.cnf文件
	[mysqld]
	server_id=2
	read_only=1  //将slave从库设置为只读状态,0为读写状态
6.重启salve,再次进入
7.连接到mysql,连接到master
 mysql> change master to
 -> master_host='139.9.186.192',
 -> master_user='slave',
 -> master_password='123456',
 -> master_log_file='mysql-bin.000001',  //填写上面要你记录的file
 -> master_log_pos=406; //填写上面要你记录的position
 mysql> start slave;

测试:

从master添加一个test数据库,那么slave将收到。如果在slave添加,那么master不会收到
在这里插入图片描述


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值