MySQL主从复制属于集群技术还是负载均衡技术?

目录:

一、主从复制基本概念

二、MySQL主从复制介绍

三、主从搭建配置

四、MySQL主从复制常见问题分析

一、主从复制基础概念

在了解主从复制之前必须要了解的就是数据库的二进制日志(binlog),主从复制架构大多基于二进制日志进行。

1.1 二进制日志管理说明

二进制日志在哪?如何设置位置和命名?在my.cnf文件中使用 log-bin = 指定;命名规则为 mysql-bin.000000 (后为6位数字)

二进制日志位置

 日志命名:

 

 二进制日志记录什么?二进制日志中记录的是一个个完成的事件

二进制日志格式是怎样的?推荐使用row格式

查看当前使用的日志格式:

二进制日志如何滚动?每次重启都会刷新日志,也可以通过命令进行刷新 reset master;

二进制日志用来干嘛?备份恢复,起始点的备份恢复

二进制日志的操作命令?查看都有哪些二进制日志

 查看当前使用的二进制日志文件:


1.2 mysql传统备份方式和缺陷

  1. 二进制日志备份
  2. mysqldump
    1. 必须有数据库服务器完成逻辑工作,需要更多地cpu周期
    2. 逻辑备份还原速度慢:需要MySQL加载和解释语句、转化存储格式、重建引擎
  3. xtrabackup
    1. 文件大
    2. 不总是可以跨平台、操作系统和MySQL版本

1.3 MySQL主从复制能为我们做什么

高可用,辅助备份,分担负载

二、MySQL主从复制介绍

2.1 复制技术

作用:

1.保证数据安全(异机实时备份)

2.保证服务持续运行(宕机接管)

主从复制实现基本原理

1.自带功能,复制是MySQL的一项功能,允许服务器将更改从一个实例复制到另一个实例。

2.主服务器将所有数据和结构更改记录到二进制日志中。

3.从属服务器从主服务器请求该二进制日志并在本地应用其内容,即通过把主库的binlog传送到从库,从新解析应用到从库。

2.2 复制架构

mysql复制的应用常见场景:

应用场景1:从服务器作为主服务器的实时数据备份
应用场景2:主从服务器实现读写分离,从服务器实现负载均衡
应用场景3:把多个从服务器根据业务重要性进行拆分访问

传统的 MySQL复制提供了一种简单的主–从复制方法,有一个主,以及一个或多个从。

主节点执行和提交事务,然后将它们(异步地)发送到从节点,以重新执行(在基于语句的复制中)或应用(在基于行的复制中)。

这是一个 shared-nothing 的系统,默认情况下所有 server 成员都有一个完整的数据副本。

(图)MySQL 异步复制

还有一个半同步复制,它在协议中添加了一个同步步骤。这意味着主节点在提交时需要等待从节点确认它已经接收到事务。只有这样,主节点才能继续提交操作。

(图)MySQL 异步复制

在上面的两个图片中,可以看到传统异步 MySQL 复制协议(以及半同步)的图形展示。蓝色箭头表示在不同 server 之间或者 server 与 client 应用之间的信息交互。
 

2.3 MySQL主从复制原理介绍

复制过程:

  1. 开启binlog日志,通过把主库的binlog传送到从库,从新解析应用到从库。
  2. 复制需要3个线程(dump、io、sql)完成,5.6从库多个sql。
  3. 复制是异步的过程。主从复制是异步的逻辑的SQL语句级的复制。

复制前提:

  1. 主服务期一定要打开二进制日志
  2. 必须两台服务器(或者是多个实例)
  3. 从服务器需要一次数据初始化
  • 如果主从服务器都是新搭建的话,可以不做初始化
  • 如果主服务器已经运行了很长时间,可以通过备份将主库数据恢复到从库

 

  1. 主库必须要有对从库复制请求的用户。
  2. 从库需要有relay-log设置,存放从主库传送过来的二进制日志:
  • show variables like '%relay%';
  • 在第一次的时候,从库需要change master to 去连接主库。
  • change master信息需要存放在http://master.info中
  • show variables like '%master_info%';
  • 从库怎么知道,主库发生了新的变化?通过http://relay-log.info记录的已经应用过的relay-log信息。
  • 在复制过程中涉及到的线程
  1. 从库会开启一个IO thread(线程),负责连接主库,请求binlog,接收binlog并写入relay-log。
  2. 从库会开启一个SQL thread(线程),负责执行relay-log中的事件。
  3. 主库会开启一个dump thrad(线程),负责响应从IO thread的请求。

主从怎么实现的?

  1. 通过二进制日志,
  2. 至少两台(主、从)
  3. 主服务器的二进制日志“拿”到从服务器上再运行一遍。
  4. 通过网络连接两台机器,一般都会出现延迟的状态。也可以说是异步的。

2.4 执行原理--第一次开启主从过程

  1. 从库通过手工执行change master to 语句连接主库,提供了连接的用户一切条件:
    1. (user、password、port、ip)
    2. 并且让从库知道,二进制日志的起点位置(file名 position号)
    3. start slave
  2. 从库的IO和主库的dump线程建立连接
  3. 从库根据change master to 语句提供的file名和position号,IO线程向主库发起binlog的请求
  4. 主库dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程
  5. 从库IO线程接收binlog evnets,并存放到本地relay-log中,传送过来的信息,会记录到http://master.iofo中
  6. 从库SQL线程应用relay-log,并且把应用过的记录到relay-log.info,默认情况下,已经应用过的relay会自动被清理purge。


到此为止,一次主从复制就完成

一旦主从运行起来:就不需要手工执行change master to,因为信息都会被存放到 http://master.iofoh(user、password、port、ip,上次获取过的binlog信息file和position)中。TG:li9047

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值