专栏首页北京马哥教育【MySQL拾遗】mysql主从复制以及扩展

【MySQL拾遗】mysql主从复制以及扩展

一、MySQL简单复制相关概念:

    1. mysql复制的意义:Mysql复制是使得mysql完成高性能应用的前提
    1. mysql复制的机制:

SLAVE端线程:

  • IO thread: 向主服务请求二进制日志中的事件 当读取完毕后,IO线程将进行睡眠,当主服务器有新数据时,则主服务器唤醒从服务器的IO线程
  • SQL thread:从中继日志读取事件并在本地执行, 如果二进制日志开启式,同样会记录二进制日志,但为了节约空间和提高性能,需要关闭从服务器不能执行写操作,如果执行写操作则和主服务器不同步。

MASTER端:

  • binlog dump: 将IO thread请求的事件发送给对方; 默认为异步工作模式:主要主服务器自己写完,不管从服务器是否写完,就将返回

二、MySQL复制的常见构架

  1. 主从构架
  • 1)对于一从多主,只有新版本Mysql可以实现。 通常来说,一个从只能有一个主服务器,但是可以轮换。在某一时刻只能有一台主服务器。

MariaDB-10:支持多主模型,多源复制(multi-source replication)

  • 2)一主多从:执行写操作只能对主服务器进行。多从会增大主服务器压力。

此时需要一个调度器,来分离读写请求到主从服务器上。所谓读写分离

  • 3)读写分离:主从模型下,让前端分发器能识别读/写,并且按需调度至目标主机;

amoeba,mysql-proxy可以实现读写分离调度 读服务器进行负载均衡,使用一致性哈希算法,虚拟节点来分配访问。

2.双主构架

  • 1) 使用server_id来避免循环赋值
  • 2) 必须设定双方的自动增长属性,以避免冲突, 一个使用偶数一个实用技术 auto_increment_increment=1 定义自动增长字段起始值 auto_increment_offset=2 步长 auto_increment_increment=2 定义自动增长字段起始值 auto_increment_offset=2 步长 通过以上设定来解决冲突问题。
    • 第二台服务器
    • 第一台服务器
  • 3) 数据不一致; 在双主模型下某些时刻会导致数据不同步。
    • 第一个服务器锁定第一个字段改第二个字段
    • 第二台服务器锁定第二个字段改第一个字段

例如一个表包含: Age, Salary

如果一个人的年龄为31而工资2900,执行以下操作

A: update t1 set Salary=salary+1000 WHERE Age>=30;

B: update t1 set Age=Age-3 WHERE Salary < 3000;

会导致:

服务器A Salary 变为3900,年龄31

服务器B Salary 变为年龄28, 工资290
  • 4) 功能: 不能分摊写请求,两个服务器写压力一致。

三、复制构架扩展

  1. 主从服务器之间的差距
长时间运行后,主从可能不同步。 因为主服务器可以写并发,但是从服务器的同步只能是但进程。 

从服务器落后,有时候需要认为设计,来做备份。 

  1. 一主多从的环境:
  • 1) 一主多从的环境中,为了利用各从服务器的缓存能力。需要一些负载均衡算法,来绑定特定查询到特定服务器上,来使得缓存命中。这是这样做使得均衡效果被打破,使得有的服务器过于繁忙。
  • 2) 为了解决此问题,可以引入中心缓存服务器。
  • 3) 由于换从服务器工作在旁路模式下,所以是否缓存取决于客户端程序。 memcached:可以提供缓存能力+API 公共缓存服务器,性能比Mysql自身差

  1. 多级复制: 主指向一个从,从同时也作为其他从服务器的主
master –> slave/master —> slave

中间服务器需要开启二进制日志和中继日志 

多级复制可以降低主服务器产生mysqldump的压力,把压力分摊给下一集。 但是可能使得数据不能更好跟新。 

可以把中间服务器的读写引擎改为black hole,来降低本地压力,只生成二进制日志作为中继服务器(relay server),然后把二进制日志发送给下游服务器

  1. 模拟一从多主模型:
根据时间,来却换不同的主。 

通常用于在不同服务器之间做数据收集。 

  1. 环状模型:
每台服务器都是下一台服务器的主服务器同时也是上一台服务器的从服务器,使得每台服务器都是主从,形成传递环。

每台服务器的修改都会同步到环上任何一台服务器中。 

server_id 不能相同。 

  1. 常见mysql构架
  • 1)一主一从,并且读取分离
  • 2)一主多从,主负责读,从负责写
  • 3)一主多从外加一个冷备服务器, 只用于备份。 每一段时间关掉进行备份。
  • 4)多主模型: 通过心跳信息探测主服务器的健康状态,如果一个主挂掉,马上切换另一个主

潜在问题: 第一台服务器上未提交的事务,切换时将被回滚。

GTID(GLOBAL TRANSACTION id): 保证在特定服务器上的事务是完整的,如果执行不成功就回滚。

7.高级应用架构:

读写分离+负载均衡: 读直到从服务器上面读,写只在主服务器上面写。 需要在读写分离器之前加memocached

amoeba, mysql proxy

  1. 异地同步: 主要避免自然灾害

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux),作者:以马内利

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-12-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL/MariaDB数据库基于SSL实现主从复制

    前言 备份数据库是生产环境中的首要任务,重中之重,有时候不得不通过网络进行数据库的复制,由于MySQL/MariaDB的主从复制是明文传送的,如果在生产环境中跨...

    小小科
  • 负载均衡原理的解析

    开头先理解一下所谓的“均衡” 不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的...

    小小科
  • 基础拾遗--【转】上行带宽,下行带宽,上传,下载区别

    1.上行 是指从服务器流出的带宽,如果是在其他机器下载服务器上的文件,用的主要是服务器的上行带宽。 2.下行 是指流入到服务器的带宽,如果是在其他机器上传文件...

    小小科
  • 分布式Redis深度历险-复制

    Redis的复制功能的作用和大多数分布式存储系统一样,就是为了支持主从设计,主从设计的好处有以下几点:

    李红
  • 企业建站选择云服务器还是独立服务器?

    最近2年云计算快速发展,许多企业建站纷纷把数据转移到云上,随着云服务器逐渐收到人们的青睐,云服务器的市场份额占比越来越重,有人问云服务器和独立服务器哪个更好?其...

    尊托云数
  • 服务器配置选择?

    在如今大数据流量剧增的网络应用时代,服务器租用越来越成为众多企业和运营商的首选。而性能和配置不达标的服务器选择只会给企业带来诸多运营问题;但不经过实际需求的评估...

    咻一咻
  • VPS、物理服务器、虚拟主机、云服务器的含义与区别

    很多初学者不知道vps,物理服务器,虚拟主机,云服务器的含义和区别,今天与大家一起说说它们之间的含义和区别: VPS: VPS(Virtual Private ...

    青果网络
  • 物理服务器租用与云服务器的对比!

    无论企业网站还是电商网站都离不开服务器的支撑,个人站或者博客论坛也离不开服务器的支撑,但服务器的类型不同,服务器分为物理服务器、云服务器和虚拟主机,客户应根据自...

    青果云小潘
  • 从零开始折腾博客:服务器,购买和配置

    独立服务器:顾名思义,就是一个躺在机房的实实在在的物理服务器,专属于你,和你家的主机没啥区别,除了24小时运行。不过既然是专属的,价格嘛...

    用户6630845
  • 做网站租用物理服务器好还是云服务器好?

    我们在选择网站服务器的时候,有虚拟主机、VPS、云主机等多种类型可以选择,而且还可以选择服务器租用。但随着云计算的广泛使用,新技术对传统业务托管模式也会...

    青果云小潘

扫码关注云+社区

领取腾讯云代金券