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的主主复制

更新中……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/755181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用Stable Diffusion生成同角色不同pose的人脸

随着技术的不断发展,我们现在可以使用稳定扩散技术(Stable Diffusion)来生成同一角色但不同姿势的人脸图片。本文将介绍这一方法的具体步骤,以及如何通过合理的提示语和模型选择来生成出更加真实和多样化的人脸图像。 博客首发地…

【Python】进阶学习:一文解决如何从指定的源目录中,挑选出符合条件的文件,并将这些文件复制到目标目录中

【Python】进阶学习:一文解决如何从指定的源目录中,挑选出符合条件的文件,并将这些文件复制到目标目录中 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化…

cordova cordova-hot-code-push-plugin 插件热更新

node 版本 node-v10.18.0 ,node-v16.14.2-x64 添加插件 Cordova Hot Code Push cordova plugin add cordova-hot-code-push-plugin 添加热更新工具 cordova-hot-code-push-cli npm install -g cordova-hot-code-push-cli 添加cordova-hcp.json文件 此文件是用于…

音频剪辑软件评测,哪一款最适合你?

“音频剪辑小白求解!我正在制作一部个人纪录片,拍摄了很多原始音频素材,但是需要进行剪辑和整理才能使用。我完全不懂音频剪辑,请问有没有简单易懂的教程或者方法,帮助我快速上手并完成剪辑工作呢?” 随着…

5_相机标定_3_calibrateCamera()例子

上次介绍了calibrateCamera()接口参数,这次实际调用。 程序中所用标准标定板。 一、图片预处理 使用的图片原像素是3072*2048,即600万像素,处理起来不快;改成了560*420,即20万像素。调用opencv接口如下: //…

阿里通义灵码体验

点击访问体验 之前有体验过github的代码助手,奈何收费了,上周发现有一个免费的代码助手。 下载安装 vscode 搜索扩展 TONGYI Lingma 安装完成后登陆即可体验 写注释让他写代码 根据上下文自动补充 这里我只写了一个方法名,getAgencyList…

BUG日记之ES中字段中含有特殊字符,存储到SQLserver数据库中,再进行查询查询不到的问题

BUG日记之ES中字段中含有特殊字符,存储到SQLserver数据库中,再进行查询查询不到的问题 废话不多说原因是编码问题 如特殊字符 μ 在ES存储的编码格式是Unicode(存储了世界上所有的字符) sqlserver数据库中通常使用varchar数据类…

二、Eureka注册中心

Eureka注册中心服务端 引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>编写启动类EnableEurekaServer package com.gwf;impor…

linux安装erlang

摘要 Erlang是一种通用的面向并发的编程语言&#xff0c;它由瑞典电信设备制造商爱立信所辖的CS-Lab开发&#xff0c;目的是创造一种可以应对大规模并发活动的编程语言和运行环境。 环境准备 系统环境 使用命令&#xff1a;uname -a 或者 uname -r&#xff0c;执行后如下&a…

蓝桥杯算法基础(20):(快速排序的其他优化)java版

三点中值法 选主元三点中值法左&#xff0c;中&#xff0c;右&#xff0c;三个位置&#xff0c;取中间值作为主元&#xff0c;与第一个元素交换 public static int partition(int[] A,int p,int r){int pivotA[p];//优化&#xff0c;在p,r,mid之间&#xff0c;选一个中间作为主…

【Mars3d】点位停止编辑时获取点位空间坐标位置信息等回传给后端

示例地址&#xff1a; http://mars3d.cn/editor-vue.html?idgraphic/primitive/point 当前问题&#xff1a; 右键编辑点&#xff0c;开始编辑对象--停止编辑。需要保存编辑后的点到数据库&#xff0c;需要对应的停止编辑函数。 {text: "停止编辑对象",icon: &quo…

浅谈SQL注入漏洞原理及利用方式

1.SQL注入 原理&#xff1a; 在数据交互中&#xff0c;前端的数据传入到后台处理时&#xff0c;由于后端没有做严格的判断&#xff0c;导致其传入的恶意“数据”拼接到SQL语句中后&#xff0c;被当作SQL语句的一部分执行。漏洞产生于脚本&#xff0c;注入是针对数据库进行。 …

Javaweb的学习21_CSS_属性

CSS的属性 (常用)属性&#xff1a; 1. 字体、文本 font-size&#xff1a;字体大小 color&#xff1a;文本颜色 text-align&#xff1a;文本的对齐方式 line-height&#xff1a;行高 2. 背景 background&#xff1a;是个复合属性 3. 边框 border&#xff1a;设置边框&#xff0c…

WordPress自动生成原创文章插件

WordPress作为最受欢迎的内容管理系统之一&#xff0c;为博客和网站的搭建提供了便捷的解决方案。而在内容创作方面&#xff0c;自动生成原创文章的插件为WordPress用户提供了更为高效的选项。 什么是WordPress自动生成原创文章插件&#xff1f; WordPress自动生成原创文章插件…

【NLP学习记录】One-Hot编码

1. One-Hot编码概念 one-hot编码的基本思想是将每个类别映射到一个向量&#xff0c;其中只有一个元素的值为1&#xff0c;其余元素的值为0。这样&#xff0c;每个类别之间相互独立&#xff0c;不存在顺序或距离关系。 举例&#xff1a;对于三个类别的情况&#xff0c;可以使用…

Telegraf--采集指定信息

Telegraf 采集字段解释 根据需求选取需要采集的字段,直接配置在fieldpass中,这样的好处是节约流量,更加简洁明了。下面加粗的部分是telegraf.conf中配置的指标,其他指标根据需求添加即可。 2024年3月18日10:55:41 更新说明: 添加自定义温度指标采集 CPU信息 usage_iowait:…

基于协同过滤的毕业生就业推荐系统python+django+flask

功能&#xff1a; 管理员&#xff1a;主页、个人中心、求职者管理、企业管理、招聘信息管理、就业信息管理、面试邀请管理、就业签约管理、投递的简历管理、系统管理 企业&#xff1a;主页、个人中心、求职者管理、招聘信息管理&#xff08;可看见所有的招聘信息。发布招聘信息…

三 C#插入排序算法

简介 插入排序算法是一种简单、直观的排序算法&#xff0c;其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 插入排序实现原理 插入排序算法是一种简单、直观的排序算法&#xff0c;其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 具体实现步骤…

【iOS】Blocks

文章目录 前言一、什么是Blocks二、Blocks模式1.Block语法2.Block类型变量3.截获自动变量值4.__block说明符5.截获的自动变量 三、Blocks的实现1.Block的实质__main_block_impl_0Block对象的实现结构体初始化 2.截获自动变量值3.__block说明符4.Block存储域5.__block变量存储域…

数据结构——lesson10排序之插入排序

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…