当前位置: 首页 > news >正文

基于复制的高可用

基于复制的高可用

热备份

热备份原理:是指master故障以后,热备份提供一个master的原备份的,且所有的客户端和slave都可以切换到热备份服务器上并继续工作。

需要解决的问题

1)故障发生以后,系统热备到master上,你正从一个新的master上进行复制,所以有必要将binlog的位置转换到热备份服务器上;
2)当slave故障以后转移到热备份slave,热备份slave可能实际上并没有包含原slave记录的所有更改;
3)当把修复的master带回配置中去,被修复的master中的二进制日志中有些更改可能没有离开过服务器。

解决方法

1)默认情况下slave执行的事件没有被记录到二进制文件中,如果这个slave是master的一个备份,这时会出现问题,master有必要发送给备份服务器的所有更改写入备份服务器的二进制中,,在my.cnf中添加一个选项log-slave-updates.
这个确保来自master并被执行的语句会被写入slave的二进制中

Log-slave-updates

2)切换时slave和备份服务器在完全相同的位置停止运行,然后把slave重定向到备份服务器上。
如果备份服务器超前slave。为了让slave赶上备份服务器并在正确的位置停止,使用
start slave until master_log_file=’master-bin.0009’,master_log_pos=776;
Select master_pos_wait(‘master-bin.0009’,776);

之后使用change master to 命令切换到备份服务器,然后start slave;

双主

使用双master时。有两种不同的配置方法:
Active-active:操作同时被写入两个服务器,然后把更改转移到其他master;
Active-passive:一个master处理写入,而另一个服务器只是和被动master保持一致:

Active-active:最常见的用途就是让服务器从地理位置上接近不同的用户组
缺点:如果同样的信息在两个master 上被更新,比如一个用户突然被加入到两个master上这两个更新会有冲突,并很可能导致复制停止:

Active-slave:会出现脑裂情况:

共享磁盘

两个master通过共享磁盘的体系结构比如SAN(存储区域网络)被链接到一起,并被设置为使用相同的文件:
优点:由于binlog文件存储在共享磁盘上,所有不需要转换binlog位置,两台服务器就是彼此的镜像。最有必要的地方是要注意slave停下来的地方,执行change master命令,并再次复制;

使用drbd复制磁盘

DRBD(分布式复制块设备)
其中DRBD用于复制磁盘到备份服务器这个设置的接嗲。DRBD块设备一次把数据写入到真的磁盘。这两个DRBD的进程通过网络链接以确保任何对主Master的更改都被复制到 备份master 上

半同步复制

允许更改操作继续执行之前,确保更改操作至少被写入一个slave磁盘。这意味着对于每一个链接,最多只有一个事务会由于master奔溃而丢失

mysql的横向扩展

添加更多的服务器称为横向扩展
异步复制:为了处理大量的读请求,站点通过复制创建master的拷贝,然后让slave处理所有的读请求,而master处理写请求,这个过程是异步的,因为master并不等待slave应用改变,而是将每个slave更新请求分发到slave。

复制监控

【监控线程】
控制复制的线程共有3个线程,在master上,每个已链接的slave都有一个线程,称为binlog dump.线程,该线程负责将binllog事件传给已链接的slave。Slave上有两个线程,即slave IO 和SQL。I/O线程负责读取master上的传来的binlog事件,然后将这些事件写入slave的中继日志。SQL线程负责读取并在之后执行中继日志中的事件然后执行。

使用show processlist\G 命令可以监控binlog dump线程当前的状态。

转载于:https://www.cnblogs.com/hanfei-1005/p/5691169.html

相关文章:

  • IDA Pro使用
  • C#程序员应该养成的程序性能优化写法
  • 在python 中is和= = 的区别
  • 用U盘安装Ubuntu系统
  • Mac - 印象笔记开发者
  • 关于bootstrap列偏移的两种方式
  • Tortoise SVN安装后右键没有菜单的解决方法
  • 软件测试忠告
  • 桌面远程链接
  • django中@property装饰器的运用
  • Neutron 不健全的HA ROUTER
  • nwjs
  • (Forward) Music Player: From UI Proposal to Code
  • 【leetcode】经典算法题-Counting Bits
  • SQL--常用命令
  • [译]如何构建服务器端web组件,为何要构建?
  • 【Linux系统编程】快速查找errno错误码信息
  • Apache的80端口被占用以及访问时报错403
  • CSS魔法堂:Absolute Positioning就这个样
  • css属性的继承、初识值、计算值、当前值、应用值
  • Invalidate和postInvalidate的区别
  • Just for fun——迅速写完快速排序
  • k个最大的数及变种小结
  • Mithril.js 入门介绍
  • mysql外键的使用
  • spring boot 整合mybatis 无法输出sql的问题
  • SQLServer插入数据
  • vue-router的history模式发布配置
  • windows下mongoDB的环境配置
  • 开源地图数据可视化库——mapnik
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • #QT(串口助手-界面)
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (AngularJS)Angular 控制器之间通信初探
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (过滤器)Filter和(监听器)listener
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (论文阅读11/100)Fast R-CNN
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (推荐)叮当——中文语音对话机器人
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .net解析传过来的xml_DOM4J解析XML文件
  • //解决validator验证插件多个name相同只验证第一的问题
  • @vue/cli脚手架
  • [ linux ] linux 命令英文全称及解释
  • [17]JAVAEE-HTTP协议
  • [20150707]外部表与rowid.txt
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法