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

MySQL - 主从同步

​​​​​​1.主从同步原理:

MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。

主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执行这些日志中的操作。

  • MySQL内建的复制功能是构建大型、高性能应用程序的基础。
  • 通过将MySQL的某一台主机(master)的数据复制到其他主机(slaves)上,并重新执行一遍来执行。
  • 复制过程中一台服务器充当主服务器,而其他一个或多个其他服务器充当从服务器

2、MySQL支持的复制类型

  • 基于语句(statement)的复制:在主服务器上执行SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。
  • 基于行(row)的复制 把改变的内容复制过去,而不是把命令在从服务器上执行一遍。从MySQL 5.0开始支持。
  • 混合型(mixed)的复制 默认采用基于语句的复制,一旦发现基于语句的无法精确复制时,就会采用基于行的复制。

3、为什么要做主从复制

  • 灾备
  • 数据分布
  • 负载平衡
  • 读写分离
  • 提高并发能力

 

1.基于binlog的主从同步

1.1 主库配置

1.1.1 配置文件

[root@openEuler-1 ~]# vim /etc/my.cnf.d/mysql-server.cnf

[root@openEuler-1 ~]# systemctl restart mysqld.service

1.1.2 授权用户

mysql> create user rep@'172.25.254.%' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.00 sec)mysql> grant replication slave on *.* to rep@'172.25.254.%';
Query OK, 0 rows affected (0.00 sec)mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 |      680 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

1.2 从库配置

1.2.1 配置文件

[root@openEuler-1 ~]#  vim /etc/my.cnf.d/mysql-server.cnf


[root@openEuler-1 ~]# systemctl restart mysqld

[root@openEuler-1 ~]#  vim /etc/my.cnf.d/mysql-server.cnf

[root@openEuler-1 ~]# systemctl restart mysqld

1.2.2 设置从库的change master

mysql> change master to master_host='172.25.254.11',->     master_user='rep',->     master_password='123456',->     master_log_file='binlog.000003',->     master_log_pos=1202-> ;
Query OK, 0 rows affected, 8 warnings (0.04 sec)mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.12 sec)

1.2.3 查看是否配置成功

1.3 测试

主库创建数据库:

mysql> create database db1;
Query OK, 1 row affected (0.02 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)mysql> use db1;
Database changed
mysql> create table t1(id int);
Query OK, 0 rows affected (0.14 sec)mysql> insert into t1 values(1),(2),(3),(4);
Query OK, 4 rows affected (0.07 sec)
Records: 4  Duplicates: 0  Warnings: 0

从库查看是否存在:

2.基于gtid的主从同步配置

2.1 配置文件(三台同时进行)

首先停掉从库基于binlog的主从同步:

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.02 sec)

开启gtid:

gtid_mode=ON
enforce-gtid-consistency=ON

[root@openEuler-1 ~]# vim /etc/my.cnf.d/mysql-server.cnf

检查是否成功:

mysql> show variables like '%gtid%';
+----------------------------------+-----------+
| Variable_name                    | Value     |
+----------------------------------+-----------+
| binlog_gtid_simple_recovery      | ON        |
| enforce_gtid_consistency         | ON        |
| gtid_executed                    |           |
| gtid_executed_compression_period | 0         |
| gtid_mode                        | ON        |
| gtid_next                        | AUTOMATIC |
| gtid_owned                       |           |
| gtid_purged                      |           |
| session_track_gtids              | OFF       |
+----------------------------------+-----------+
9 rows in set (0.00 sec)mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000004 |      157 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

设置从库的change master:

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> change master to master_host='172.25.254.11',-> master_user='rep',-> master_password='123456',-> master_auto_position=1;
Query OK, 0 rows affected, 7 warnings (0.02 sec)

2.2 测试

主库:

mysql> create database db2;
Query OK, 1 row affected (0.00 sec)

从库:

相关文章:

MySQL - 主从同步

​​​​​​1.主从同步原理: MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执…...

基于微信小程序的安心陪诊管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

深入剖析iOS网络优化策略,提升App性能

一、引言 在当今移动互联网时代,iOS 应用的网络性能直接关系到用户体验。无论是加载速度缓慢、频繁的网络错误,还是高额的流量消耗,都可能导致用户流失。因此,iOS 网络优化成为开发者提升应用质量、增强用户满意度的关键环节。本文…...

游戏开发中常用的设计模式

目录 前言一、工厂模式二、单例模式三、观察者模式观察者模式的优势 四、状态模式状态模式的优势 五、策略模式策略模式的优势 六、组合模式七、命令模式八、装饰器模式 前言 本文介绍了游戏开发中常用的设计模式,如工厂模式用于创建对象,单例模式确保全…...

【PyCharm】远程连接Linux服务器

【PyCharm】相关链接 【PyCharm】连接Jupyter Notebook【PyCharm】快捷键使用【PyCharm】远程连接Linux服务器【PyCharm】设置为中文界面 【PyCharm】远程连接Linux服务器 PyCharm 提供了远程开发的功能,使得开发者可以在本地编辑代码或使用服务器资源。 下面将详…...

InVideo AI技术浅析(五):生成对抗网络

一、特效生成 1. 工作原理 特效生成是计算机视觉中的高级应用,旨在通过算法生成高质量的视觉特效,如风格迁移、图像到图像的翻译等。InVideo AI 使用生成对抗网络(GAN)来实现这一功能。GAN 通过生成器和判别器两个网络的对抗训练,生成逼真的视觉特效。 2. 关键技术模型…...

Spring自定义BeanPostProcessor实现bean的代理

上文中:https://blog.csdn.net/qq_26437925/article/details/145241149 大致了解了spring aop的代理的实现,其实就是有个BeanPostProcessor代理了bean对象。 本文直接编写最简单的代码直观感受下 bean A: Service public class A {public A() {System.…...

【HF设计模式】06-命令模式

声明:仅为个人学习总结,还请批判性查看,如有不同观点,欢迎交流。 摘要 《Head First设计模式》第6章笔记:结合示例应用和代码,介绍命令模式,包括遇到的问题、采用的解决方案、遵循的 OO 原则、…...

Linux使用SSH连接GitHub指南

基础配置流程 步骤1:生成SSH密钥 打开终端:首先,打开你的Linux终端。 生成SSH密钥对:输入以下命令来生成一个新的SSH密钥对: ssh-keygen -t rsa -b 4096 -C "your_email@example.com"-t rsa:使用RSA加密算法生成密钥。-b 4096:密钥长度为4096位,增加安全性。…...

v2富文本框封装 @wangeditor/editor-for-vue

1 组件封装 <template><div class"editor-container"><div class"editor-wrapper"><Toolbarstyle"border-bottom: 1px solid #ccc":editor"editor":defaultConfig"toolbarConfig":mode"mode&quo…...

【分类】【损失函数】处理类别不平衡:CEFL 和 CEFL2 损失函数的实现与应用

引言 在深度学习中的分类问题中&#xff0c;类别不平衡问题是常见的挑战之一。尤其在面部表情分类任务中&#xff0c;不同表情类别的样本数量可能差异较大&#xff0c;比如“开心”表情的样本远远多于“生气”表情。面对这种情况&#xff0c;普通的交叉熵损失函数容易导致模型…...

AUTOSAR从入门到精通-自动驾驶测试技术

目录 前言 算法原理 测试场景定义与作用 测试场景要素 测试场景分类 场景信息提取与挖掘方法 自动驾驶感知测试分类 自动驾驶图像系统测试 自动驾驶激光雷达系统测试 自动驾驶融合感知系统测试 自动驾驶仿真测试 1. 功能安全 2. 预期功能安全 3. 软件测试 4.敏捷…...

优化大型语言模型的表达能力和依赖关系:理论

摘要 随着自然语言处理技术的发展&#xff0c;大型语言模型&#xff08;LLM&#xff09;已经成为理解和生成人类语言的强大工具。然而&#xff0c;如何有效提升这些模型的表达能力以及捕捉长距离依赖关系仍然是一个挑战。本文通过具体实例探讨了词表大小&#xff08;em_size&a…...

在Ubuntu下使用Wine运行MobaXterm并解决X服务器问题

MobaXterm是一款功能强大的终端模拟器&#xff0c;集成了SSH客户端和X服务器&#xff0c;常用于远程服务器管理。在Ubuntu下&#xff0c;我们可以通过Wine运行MobaXterm&#xff0c;同时解决X服务器问题&#xff0c;实现远程图形界面转发。这对于需要远程使用ROS&#xff08;如…...

【鸿蒙】0x02-LiteOS-M基于Qemu RISC-V运行

OpenHarmony LiteOS-M基于Qemu RISC-V运行 系列文章目录更新日志OpenHarmony技术架构OH技术架构OH支持系统类型轻量系统&#xff08;mini system&#xff09;小型系统&#xff08;small system&#xff09;标准系统&#xff08;standard system&#xff09; 简介环境准备安装QE…...

SW - 钣金零件保存成DWG时,需要将折弯线去掉

文章目录 SW - 钣金零件保存成DWG时&#xff0c;需要将折弯线去掉概述笔记备注END SW - 钣金零件保存成DWG时&#xff0c;需要将折弯线去掉 概述 如果做需要弯折的切割件&#xff0c;最好做成钣金零件。 最近做了几个小钣金(将钣金展开&#xff0c;建立新草图&#xff0c;在2…...

JAVA使用自定义注解,在项目中实现EXCEL文件的导出

首先定义一个注解 Retention(RetentionPolicy.RUNTIME) Target(ElementType.FIELD) public interface Excel {/*** 导出时在excel中排序*/int sort() default Integer.MAX_VALUE;/*** 导出到Excel中的名字.*/String name() default "";/*** 首行字段的批注*/String …...

【GIS操作】使用ArcGIS Pro进行海图的地理配准(附:墨卡托投影对比解析)

文章目录 一、应用场景二、墨卡托投影1、知识点2、Arcgis中的坐标系选择 三、操作步骤1、数据转换2、数据加载3、栅格投影4、地理配准 一、应用场景 地理配准是数字化之前必须进行的一项工作。扫描得到的地图数据通常不包含空间参考信息&#xff0c;需要通过具有较高位置精度的…...

flutter在使用gradle时的加速

当我使用了一些过时的插件的时候&#xff0c;遇到了一些问题 比如什么namespace 问题等&#xff0c;因为有些插件库没有更新了&#xff0c;或者最新版本处于测试阶段 于是我就删除这些旧插件(不符合我要求的插件) 于是根据各论坛的解决方法去做了以下的工作 1:项目中删除了这…...

ABP - 缓存模块(1)

ABP - 缓存模块&#xff08;1&#xff09; 1. 与 .NET Core 缓存的关系和差异2. Abp 缓存的使用2.1 常规使用2.2 非字符串类型的 Key2.3 批量操作 3. 额外功能 1. 与 .NET Core 缓存的关系和差异 ABP 框架中的缓存系统核心包是 Volo.Abp.Caching &#xff0c;而对于分布式缓存…...

Klib未来展望:探索轻量级C库的无限可能与社区共建路线图

Klib未来展望&#xff1a;探索轻量级C库的无限可能与社区共建路线图 【免费下载链接】klib A standalone and lightweight C library 项目地址: https://gitcode.com/gh_mirrors/kl/klib Klib作为一款独立轻量级C语言库&#xff0c;以其高效、简洁的设计理念在开发者社区…...

如何掌握IntelliJ Rust插件的Cargo项目结构:从入门到精通

如何掌握IntelliJ Rust插件的Cargo项目结构&#xff1a;从入门到精通 【免费下载链接】intellij-rust Rust plugin for the IntelliJ Platform 项目地址: https://gitcode.com/gh_mirrors/in/intellij-rust IntelliJ Rust插件是IntelliJ平台上的Rust开发工具&#xff0c…...

Rest.li代码生成器详解:如何自动生成数据绑定和客户端代码

Rest.li代码生成器详解&#xff1a;如何自动生成数据绑定和客户端代码 【免费下载链接】rest.li Rest.li is a RESTJSON framework for building robust, scalable service architectures using dynamic discovery and simple asynchronous APIs. 项目地址: https://gitcode.…...

ReadCat小说阅读器:如何打造真正专注的阅读环境?

ReadCat小说阅读器&#xff1a;如何打造真正专注的阅读环境&#xff1f; 【免费下载链接】read-cat 一款免费、开源、简洁、纯净、无广告的小说阅读器 项目地址: https://gitcode.com/gh_mirrors/re/read-cat 你是否曾在阅读时被突如其来的广告打断思路&#xff1f;是否…...

从DeepWalk到Node2Vec:探索有偏随机游走的图嵌入演进之路

1. 图嵌入技术的前世今生 第一次听说"图嵌入"这个概念时&#xff0c;我正对着社交网络数据发愁。当时手上有几百万用户的关系数据&#xff0c;传统的分析方法完全无法处理这种规模的数据。直到接触了DeepWalk&#xff0c;才真正打开了图数据分析的新世界大门。 图嵌入…...

3分钟玩转fre:ac:你的音频格式翻译官

3分钟玩转fre:ac&#xff1a;你的音频格式翻译官 【免费下载链接】freac The fre:ac audio converter project 项目地址: https://gitcode.com/gh_mirrors/fr/freac 想象一下&#xff0c;你的音乐库就像一座多语言图书馆——有的书是英文&#xff08;MP3&#xff09;&am…...

【Java Loom响应式转型终极指南】:20年架构师亲授3大性能跃迁关键点,错过再等5年?

第一章&#xff1a;Java Loom响应式转型的底层逻辑与时代必然性在高并发、低延迟、资源敏感型服务日益成为云原生基础设施标配的今天&#xff0c;Java传统线程模型正面临根本性挑战。每个 OS 线程默认占用 1MB 栈空间&#xff0c;且受限于内核调度粒度与上下文切换开销&#xf…...

hot 100 73. 矩阵置零

矩阵置零问题描述样例输入样例输出评测用例规模与约定解析参考程序难度等级问题描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 样例输入 matrix [[1,1,1],[1,0,1],[1,1,1]]样例输出 [[1,0,…...

把近万个源文件喂给AI之前,我先做了一件事刀

插件化架构 v3 版本最大的变化是引入了模块化插件系统。此前版本中集成在核心包里的原生功能&#xff0c;现在被拆分成独立的插件。 每个插件都是一个独立的 Composer 包&#xff0c;包含 Swift 和 Kotlin 代码、权限清单以及原生依赖。开发者只需安装实际用到的插件&#xff0…...

如何快速掌握Mermaid在线编辑器:面向技术团队的完整实践指南

如何快速掌握Mermaid在线编辑器&#xff1a;面向技术团队的完整实践指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-…...