MySQL主从

什么是MySQL Replication

1.Replication可以实现将数据从一台数据库服务器(master)复制到一或多台数据库服务器(slave)
2.默认情况下属于异步复制,无需维持长连接
3.通过配置,可以复制所有的库或者几个库,甚至库中的一些表
4.是MySQL内建的,本身自带的

Replication的原理

简单的说就是master将数据库的改变写入二进制日志,slave同步这些二进制日志,并根据这些二进制日志进行数据操作
在这里插入图片描述
DML:SQL操作语句,update, insert,delete
Relay log :中继日志

Replication的作用

1、Fail Over 故障切换
2、Backup Server 备份服务,无法对SQL语句执行产生的故障恢复,有限的备份
3、High Performance高性能,可以多台slave,实现读写分离

Replication如何工作

整体上来说,复制有3个步骤:
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,修改salve上的数据。

在这里插入图片描述

mysql主从复制中:
第一步:master记录二进制日志。在每个事务更新数据完成之前,master在二进制日志记录这些改变。MySQL将事务写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。
第二步:slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经执行完master产生的所有文件,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。
第三步:SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重新执行其中的事件而更新slave的数据,使其与master中的数据一致。

Replication常见方案:
1、One master and Muti salve 一主多备

在这里插入图片描述

一般用来做读写分离的,master写,其他slave读,这种架构最大问题I/O压力集中
在Master上<多台同步影响IO>

2、M-S-S

使用一台slave作为中继,分担Master的压力,slave中继需要开启bin-log,并配置log-slave-updates
在这里插入图片描述
Slave中继可使用Black-hole存储引擎,不会把数据存储到磁盘,只记录二进制日志

3、M-M 双主互备 (互为主从)

很多人误以为这样可以做到MySQL负载均衡,实际没什么好处,每个服务器需要做同样的同步更新,破坏了事物的隔离性和数据的一致性
在这里插入图片描述

4、M-M-M

监控三台机器互相做对方的master
在这里插入图片描述

天生的缺陷:复制延迟,slave上同步要慢于master,如果大并发的情况那延迟更严重
Mysql在5.6已经自身可以实现fail over故障切换

5、One slave Muti master 一从对多主

好处:节省成本,将多个master数据自动化整合
缺陷:对库和表数据的修改较多

二:部署MySQL主从同步

环境准备:
主机名 IP 系统/MySQL版本 角色
xuegod63 10.10.10.68 CentOS7.4/5.7.20 Master
xuegod64 10.10.10.69 CentOS7.4/5.7.20 slave

模式:C/S
端口:3306

创建HA数据库用来做实验

在这里插入图片描述

创建test表

在这里插入图片描述

创建账号(给一个账号让从服务器(slave)抓取二进制日志文件 *.*表示所有数据库中的所有表 identified by 后面接密码 slave是账号名称)

在这里插入图片描述

把数据库导出来(-B意思是连同建库语句一起导出来)

在这里插入图片描述

把数据库拷贝到从服务器上

在这里插入图片描述

配置my.cnf

在这里插入图片描述
vim /etc/my.cnf
log-bin=mysql-bin-master #启用二进制日志
server-id=1 #本机数据库ID 标示
binlog-do-db=HA #可以被从服务器复制的库, 二进制需要同步的数据库名
binlog-ignore-db=mysql #不可以被从服务器复制的库

重启mysql

在这里插入图片描述

在从服务器上导入数据库

在这里插入图片描述

修改从库的配置文件(my.cnf)加入这一行就可以了

在这里插入图片描述

这条命令可以暂时关掉同步

在这里插入图片描述

这条命令是开启同步

在这里插入图片描述

测试远程登陆

在这里插入图片描述

如果登陆不成功可以刷新权限表

在这里插入图片描述

查看二进制文件

在这里插入图片描述

先停止从服务器,配置从服务器的主服务器

在这里插入图片描述

再开启

在这里插入图片描述

测试在主服务器插入一条数据

在这里插入图片描述

查询从服务器

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值