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

mysql笔记:19. 主从复制和主主复制

文章目录

  • 一、主从复制基础
    • 1. 主从复制的定义
    • 2. 主从复制的原理
    • 3. 实战:搭建MySQL的主从复制
  • 二、主从复制的管理
    • 1. 用户权限管理
    • 2. 日常任务管理
      • 2.1. 监控主从复制的状态
      • 2.2. 控制主从复制的任务
        • 2.2.1. 在从节点上启动和停止主从复制
        • 2.2.2. 在从节点上启动和停止I/O线程
        • 2.2.3. 在从节点上启动和停止SQL线程
  • 三、主主复制
    • 1. 主主复制的基本原理
    • 2. 实战:搭建MySQL的主主复制

在实际生产环境中,单台的MySQL数据库服务器不能满足实际的需求。此时数据库集群可以很好地解决这个问题了。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器。
在搭建MySQL集群之前,必须要保证每台MySQL服务器里面的数据同步。数据同步可以通过MySQL内部配置就可以轻松完成,主要有主从复制和主主复制。

一、主从复制基础

MySQL数据库自身提供的主从复制功能可以方便地实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过读写分离还能进一步提升数据库的负载性能。

1. 主从复制的定义

主从复制(也称AB复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。根据参数文件的配置,可以复制数据库中的所有数据。主从复制的优点:

  • 横向扩展解决方案:在多个从站之间分配负载以提高性能。在此环境中,所有写入和更新都必须在主服务器上进行。但是,读取可以在一个或多个从设备上进行。该模型可以提高写入性能(因为主设备专用于更新),同时显著提高了从设备的读取速度。
  • 数据安全性:因为数据被复制到从站,并且从站可以暂停复制过程,所以可以在从站上运行备份服务而不会破坏相应的主数据。
  • 数据分析:可以在主服务器上创建实时数据,而数据分析可以在从服务器上进行,而不会影响主服务器的性能。
  • 远程数据分发:可以使用复制操作为远程站点创建数据的本地副本,而无须永久访问主服务器。
    如果一主多从的话,主库既要负责写入数据又要负责为几个从库提供二进制日志。当从库节点比较多的时候,可能会对主库造成一定的读写压力。因此可以稍做调整,将二进制日志只给某一个从库。该从库再开启二进制日志并将自己的二进制日志发给其他从库。这样的架构性能可能要好得多,而且数据之间的延时也要好一些。

2. 主从复制的原理

主从复制的前提是,作为主服务器角色的数据库服务器必须开启二进制日志(binlog),具体复制步骤:

  1. 主服务器上的任何修改都会通过自己的I/O线程保存在二进制日志里面。
  2. 从服务器上也启动一个I/O线程。通过配置好的用户名和密码,连接到主服务器上请求读取二进制日志,然后把读取到的二进制日志写到本地的一个RealyLog(中继日志)里面。
  3. 从服务器上同时开启一个SQL线程定时检查RealyLog。如果发现有更新立即把更新内容写入本机的二进制日志中,并且在本机的数据库上执行一遍。

3. 实战:搭建MySQL的主从复制

更新中……

二、主从复制的管理

主从复制部署完成后,作为DBA来说就需要进行日常的管理和维护了。这里主要涉及两个访问:用户权限管理和日常任务管理。

1. 用户权限管理

权限权限说明
replication slave该权限用于指定建立主从复制时所需要用到的用户权限。即在从节点上只有具备该权限的用户,才能执行主从复制
replication client该权限不可用于主从复制。当用户具备该权限时,只可以执行show slave statusshow master status等命令。

2. 日常任务管理

主从复制的日常任务管理主要包括:监控主从复制的状态和控制主从复制的任务。

2.1. 监控主从复制的状态

# 在主节点上查看当前已经连接的从服务器信息
mysql> show slave hosts;# 查看主节点的状态
mysql> show master status;# 在从节点上查看主从复制的状态
mysql> show slave status \G;# 在从节点上使用master_pos_wait()函数阻塞从节点,直到从节点读取完成了指定的日志文件和偏移量
mysql> select master_pos_wait('File', 'Position');

master_pos_wait()函数返回0时,表示从节点已经完成了读取指定的日志文件和偏移量;返回-1时,表示超时退出。这里的参数File和Position是show master status命令输出的结果。

2.2. 控制主从复制的任务

控制主从复制的任务主要是在从节点上控制I/O线程和SQL线程,从而达到控制主从复制的目的。

2.2.1. 在从节点上启动和停止主从复制
# 停止复制
mysql> stop slave;# 启动复制
mysql> start slave;
2.2.2. 在从节点上启动和停止I/O线程
# 启动I/O线程
mysql> start slave io_thread;# 停止I/O线程
mysql> stop slave io_thread;# 查看从节点状态
mysql> show slave status \G;
2.2.3. 在从节点上启动和停止SQL线程
# 启动SQL线程
mysql> start slave sql_thread;# 停止SQL线程
mysql> stop slave sql_thread;# 查看从节点状态
mysql> show slave status \G;

三、主主复制

MySQL的主从复制可以将主节点的变更通过binlog同步到从节点上从而实现数据的同步,其本质也是备份的一种方式。但是主从复制只能完成从主节点到从节点的同步,并不能完成从从节点到主节点的同步。即,从节点如果对数据进行了变更,将无法同步到主节点上。为此,MySQL提供了主主复制功能。

1. 主主复制的基本原理

主主复制其实就是两台MySQL服务器互为主从复制的关系。每一台MySQL服务器既是主节点,也是另一台MySQL服务器的从节点。在主主复制的架构中,任何一方所做的变更都会同步到另一方的MySQL数据库服务器中。

2. 实战:搭建MySQL的主主复制

更新中……

相关文章:

  • 由浅到深认识C语言(6):变量的存储类型
  • VS Code安装Live Server插件搭建web网页结合内网穿透实现公网访问
  • 快速高效地数据分析处理:QtiPlot for Mac中文直装版 兼容M
  • 海豚调度系列之:集群部署(Cluster)
  • c语言实现https客户端 源码+详细注释(OpenSSL下载,visual studio编译器环境配置)
  • 【办公类-22-15】周计划系列(5-6)“周计划-06 周计划打印pdf(docx删除内容转PDF)“ (2024年调整版本)
  • PHP修改默认上传文件缓存位置
  • 蓝桥杯算法基础(13):十大排序算法(希尔排序) (快速排序)c语言版
  • LeetCode108 将有序数组转换为二叉搜索树
  • 《计算机视觉中的深度学习》之目标检测算法原理
  • 如何进行Android的SDK开发
  • ssh免密登陆更换目标主机后无法连接
  • 深度学习-2.6在MINST-FASHION上实现神经网络的学习流程
  • idea远程试调jar、远程试调war
  • ArcGIS Pro 和 ArcMap 10个不同
  • [LeetCode] Wiggle Sort
  • Angular2开发踩坑系列-生产环境编译
  • Create React App 使用
  • Docker入门(二) - Dockerfile
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • underscore源码剖析之整体架构
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 大数据与云计算学习:数据分析(二)
  • 反思总结然后整装待发
  • 关于springcloud Gateway中的限流
  • 诡异!React stopPropagation失灵
  • 简单基于spring的redis配置(单机和集群模式)
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 漂亮刷新控件-iOS
  • 区块链分支循环
  • 突破自己的技术思维
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #100天计划# 2013年9月29日
  • #pragma预处理命令
  • #QT(串口助手-界面)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $forceUpdate()函数
  • ( 10 )MySQL中的外键
  • (2)(2.10) LTM telemetry
  • (2022 CVPR) Unbiased Teacher v2
  • (C语言)fgets与fputs函数详解
  • (c语言)strcpy函数用法
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (zhuan) 一些RL的文献(及笔记)
  • (二)Linux——Linux常用指令
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (过滤器)Filter和(监听器)listener
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424