前言:

MySQL集群的架构比较多,目前来说,基本没有一个统一的标准,常见的集群架构是MySQL cluster(官方的)或者简单的一主多从式集群。下面说一下主从复制的一下概念。

MySQL 主从复制概念

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

MySQL 主从复制主要用途

  • 读写分离

    在开发工作中,有时候会遇见某个sql 语句需要锁表,导致暂时不能使用读的服务,这样就会影响现有业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。

  • 数据实时备份,当系统中某个节点出现故障的时候,方便切换

  • 高可用HA

  • 架构扩展

    随着系统中业务访问量的增大,如果是单机部署数据库,就会导致I/O访问频率过高。有了主从复制,增加多个数据存储节点,将负载分布在多个从节点上,降低单机磁盘I/O访问的频率,提高单个机器的I/O性能。

MySQL主从形式

一主一从

 

一主多从,提高系统的读性能

一主一从和一主多从是最常见的主从架构,实施起来简单并且有效,不仅可以实现HA,而且还能读写分离,进而提升集群的并发能力。下面的示例将基于此架构做演示。

多主一从 (从5.7开始支持)

多主一从可以将多个mysql数据库备份到一台存储性能比较好的服务器上,一般这种架构是不使用的。

双主复制

双主复制,也就是互做主从复制,每个master既是master,又是另外一台服务器的slave。这样任何一方所做的变更,都会通过复制应用到另外一方的数据库中。 

 级联复制

级联复制模式下,部分slave的数据同步不连接主节点,而是连接从节点。因为如果主节点有太多的从节点,就会损耗一部分性能用于replication,那么我们可以让3~5个从节点连接主节点,其它从节点作为二级或者三级与从节点连接,这样不仅可以缓解主节点的压力,并且对数据一致性没有负面影响。

MySQL 主从复制原理

MySQL主从复制涉及到三个线程,一个运行在主节点(log dump thread),其余两个(I/O thread, SQL thread)运行在从节点,如下图所示:

 

  • 主节点 binary log dump 线程作用

当从节点连接主节点时,主节点会创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时,此线程会对主节点上的bin-log加锁,当读取完成,甚至在发动给从节点之前,锁会被释放。

  • 从节点I/O线程作用

当从节点上执行start slave命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I/O线程接收到主节点binlog dump 进程发来的更新之后,保存在本地relay-log中。

反应在SQL语句,slave status \G 这里,该线程就是 slave_io_running。

  • 从节点SQL线程作用

SQL线程负责读取relay log中的内容,解析成具体的操作并执行,最终保证主从数据的一致性。

反应在SQL语句,slave status \G 这里,该线程就是 slave_sql_running。

对于每一个主从连接,都需要三个进程来完成。当主节点有多个从节点时,主节点会为每一个当前连接的从节点建一个binary log dump 进程,而每个从节点都有自己的I/O进程,SQL进程。从节点用两个线程将从主库拉取更新和执行分成独立的任务,这样在执行同步数据任务的时候,不会降低读操作的性能。比如,如果从节点没有运行,此时I/O进程可以很快从主节点获取更新,尽管SQL进程还没有执行。如果在SQL进程执行之前从节点服务停止,至少I/O进程已经从主节点拉取到了最新的变更并且保存在本地relay日志中,当服务再次起来之后,就可以完成数据的同步。




一,

实验目标:

在kuber

云原生|kubernetes|部署MySQL一主多从复制集群(基于Binlog+Position的复制)相关推荐

  1. [云原生专题-18]:容器 - docker自带的集群管理工具swarm - 手工搭建集群服务全过程详细解读

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  2. 云原生|kubernetes部署和运行维护中的错误汇总(不定时更新)

    一, 安装的etcd版本是3.4,如果是安装的etcd3下面的配置应该不会报错. 查询etcd状态报错: conflicting environment variable "ETCD_NAM ...

  3. 云原生|kubernetes |部署k8s图形化管理组件 kuboard v3

    前言: kubernetes的图形化管理工具是非常多的,比较常用的比如官方的kubernetes dashboard,青云的kubesphere,私有化部署的rancher等等.官方的dashboar ...

  4. 【云原生Kubernetes系列第五篇】kubeadm v1.20 部署K8S 集群架构(人生这道选择题,总会有遗憾)

    系列文章目录 ??即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔 ??收录至专栏 云原生 ??[云原生Docker系列第一篇]Docker镜像管理 ??[云原生Docker系列第二篇]Do ...

  5. 【云原生 | Kubernetes 实战】01、K8s-v1.25集群搭建和部署基于网页的 K8s 用户界面 Dashboard

    目录 一.K8s 概述 可以查看官方文档:概述 | Kubernetes 组件交互逻辑: 二.kubeadm 安装 K8s-v1.25高可用集群 k8s 环境规划: 1.初始化环境 2.安装 Dock ...

  6. 【云原生 · Kubernetes】部署Kubernetes集群

    [云原生 · Kubernetes]搭建Harbor仓库 接着上次的内容,后续来了! 在master节点执行脚本k8s_master_install.sh即可完成K8S集群的部署,具体步骤参考如下(1 ...

  7. 云原生|kubernetes|网络插件flannel二进制部署和calico的yaml清单部署总结版

    前言: 前面写了一些关于calico的文章,但感觉好像是浅尝辄止,分散在了几篇文章内,并且很多地方还是没有说的太清楚云原生|kubernetes|kubernetes的网络插件calico和flann ...

  8. 【云原生 | Kubernetes 系列】---Skywalking部署和监控

    [云原生 | Kubernetes 系列]-Skywalking部署和监控 1. 分布式链路追踪概念 在较大的web集群和微服务环境中,客户端的一次请求可能需要经过多个不同的模块,多个不同中间件,多个 ...

  9. DaoCloud道客云原生开源项目Clusterpedia(The Encyclopedia of Kubernetes clusters)加持kubectl,检索多集群资源

    DaoCloud道客云原生开源项目Clusterpedia,全称The Encyclopedia of Kubernetes clusters,源码查看地址:https://github.com/cl ...

最新文章

  1. python字符串前加r、f、u、l 的区别
  2. C#代码中背后进行的值拷贝
  3. 解决由于sz rz导致抓包时文件容量增加
  4. 使用adb命令从Android手机中取出已安装的app包,导出apk
  5. 微电子专业深度盘点:哪所大学芯片最强?强在哪?(第3弹)
  6. 【Unity3d】脚本的生命周期及其相关函数
  7. psftp查看服务器上的文件,PSFTP自动登录SFTP服务器,上传指定文件...
  8. STm32驱动74HC595引脚图时序图工作原理
  9. i219v微星 驱动_intel英特尔网卡驱动下载-intel英特尔i217/i218/i219系列网卡驱动电脑版 - 极光下载站...
  10. linux内存速度测试命令dd,Linux 中用 dd 命令来测试硬盘读写速度
  11. svchost.exe“病毒”
  12. QGIS 导入图层到 PostGIS “导入某些图层失败! 图层“public“.‘xxxx‘载入失败 “
  13. Python100例——第五章----不定方程的解
  14. Burpsuite介绍及2022.8.2版本超详细安装教程(图文版)
  15. Latex texstudio+ctex中文解决方案
  16. 林语堂 - 人生的乐趣
  17. AndroidX深入浅出Jetpack全面介绍
  18. csv格式文件如何转换成excel文件
  19. linux看不到隐藏的文件夹,【终极】文件夹隐藏方法,彻底隐藏文件夹的方法!显示隐藏的文件也看不到...
  20. JPEG原理分析及JPEG解码器调试

热门文章

  1. hdfs 进入文件夹_hdfs操作命令
  2. 路由导航守卫/路由拦截/导航守卫
  3. c语言中流,C语言中流控制语句.doc
  4. 一文了解 OutOfMemory 及解决方案
  5. 什么是互联网公司的产品经理?
  6. 微信支付返回-1问题【微信分享】
  7. gta5nat严格怎么办_如何解决在游玩 GTA 在线模式时出现的 NAT 类型为“严格”(Strict)的错误...
  8. linux 在端口 1521 连接失败,[转]不能打开到主机的连接, 在端口 1521: 连接失败...
  9. 华中科技大学网安学院信息系统安全实验 系统安全 APPARMOR
  10. 小米10pro刷鸿蒙,小米10升级鸿蒙系统刷机包