没有合适的资源?快使用搜索试试~ 我知道了~
MySQL 主从复制搭建,基于日志(binlog)
8 下载量 122 浏览量
2020-12-14
20:29:41
上传
评论 1
收藏 90KB PDF 举报
温馨提示


试读
3页
什么是MySQL主从复制 简单来说,是保证主SQL(Master)和从SQL(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟),通过这种方式来保证数据的一致性,是主从复制。 MySQL主从能解决什么问题 一、高可用 因为数据都是相同的,所以当Master挂掉后,可以指定一台Slave充当Master继续保证服务运行,因为数据是一致性的(如果当插入Master挂掉,可能不一致,因为同步也需要时间),当然这种配置不是简单的把一台Slave充当Master,毕竟还要考虑后续的Salve同步Master,
资源详情
资源评论
资源推荐

MySQL 主从复制搭建,基于日志(主从复制搭建,基于日志(binlog))
什么是MySQL主从复制
简单来说,是保证主SQL(Master)和从SQL(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从
Master把修改的数据同步过来(有一定的延迟),通过这种方式来保证数据的一致性,是主从复制。
MySQL主从能解决什么问题
一、高可用
因为数据都是相同的,所以当Master挂掉后,可以指定一台Slave充当Master继续保证服务运行,因为数据是一致性的
(如果当插入Master挂掉,可能不一致,因为同步也需要时间),当然这种配置不是简单的把一台Slave充当Master,毕竟还
要考虑后续的Salve同步Master,当然本文并不是将高可用的配置,所以这里不多讲了。
二、负载均衡
因为读写分离也算是负载均衡的一种,所以不单独写了,因为一般都是有多台Slave的,所以可以将读操作指定到Slave服
务器上(需要代码控制),然后再用负载均衡来选择那台Slave来提供服务,同时也可以吧一些大量计算的查询指定到某台
Slave,这样不会影响Master的写入以及其他查询
三、数据备份
一般我们都会做数据备份,可能是写定时任务,一些特殊行业可能还需要手动备份,有些行业要求备份和原数据不能在同
一个地方,所以主从能很好的解决这个问题,不仅备份及时,而且还可以多地备份,保证数据的安全
四、业务模块化
可以一个业务模块读取一个Slave,再针对不同的业务场景进行数据库的索引创建和根据业务选择MySQL存储引擎
五、高扩展(硬件扩展)
主从复制支持2种扩展方式
1、scale-up
向上扩展或者纵向扩展,主要是提供比现在服务器更好性能的服务器,比如增加CPU和内存以及磁盘阵列等,因为有多
台服务器,所以可扩展性比单台更大
2、scale-out
向外扩展或者横向扩展,是指增加服务器数量的扩展,这样主要能分散各个服务器的压力
主从复制的缺点
一、成本增加
无可厚非的是搭建主从肯定会增加成本,毕竟一台服务器和两台服务器的成本完全不同,另外由于主从必须要开启二进制
日志,所以也会造成额外的性能消耗
二、数据延迟
Slave从Master复制过来肯定是会有一定的数据延迟的,所以当刚插入出现查询的情况,可能查询不出来,当然如果是插
入者自己查询,那么可以直接从Master中查询出来,当然这个也是需要用代码来控制的
三、写入更慢
主从复制主要是针对读远大于写或者对数据备份实时性要求较高的系统中,因为Master在写中需要更多操作,而且只有
一台写入的Master(因为我目前只会配置一台写入Master,多是有从Master的Slave,用来在Master挂掉后替换成Master,平
时不对外进行服务),所以写入的压力并不能被分散,当然如果直接怎么解决这个问题的话,欢迎留言指教
复制方式
MySQL5.6开始主从复制有两种方式:基于日志(binlog)、基于GTID(全局事务标示符)。
本文只涉及基于日志binlog的主从配置
复制原理
1、Master将数据改变记录到二进制日志(binary log)中,也是配置文件log-bin指定的文件,这些记录叫做二进制日志事件
(binary log events)
2、Slave通过I/O线程读取Master中的binary log events并写入到它的中继日志(relay log)
3、Slave重做中继日志中的事件,把中继日志中的事件信息一条一条的在本地执行一次,完成数据在本地的存储,从而
实现将改变反映到它自己的数据(数据重放)
要求
1、主从服务器操作系统版本和位数一致
2、Master和Slave数据库的版本要一致
3、Master和Slave数据库中的数据要一致
4、Master开启二进制日志,Master和Slave的server_id在局域网内必须
具体配置
硬件需求
两台或两台以上安装了相同版本的MySQL(我没有试过不同版本会不会有问题,有兴趣的可以试试),当然这个可以用
虚拟机或者Docker代替,个人推荐用Docker,比虚拟机消耗少太多了,当然用起来可能没有虚拟机那么方便,但是却不用挨
个环境配置了
配置Master
一、安装数据库
二、配置my.cnf
不同的系统my.cnf路径不同,所以我们只讲解牵扯修改的地方。添加配置
[mysqld] ## 设置server_id,一般设置为IP,注意要
server_id=100
## 复制过滤:也是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql
## 开启二进制日志功能,可以随便取,好有含义(关键是这里了)
log-bin=edu-mysql-bin
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存






















weixin_38611388
- 粉丝: 10
- 资源: 971
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制

评论0