MYSQL主从同步----1、基于binlog 2、基于gtid

目录

前提(无论是基于binlog还是基于gitd)

一、对MySQL主从同步的了解

1、MySQL支持的复制类型

2、为什么要做主从复制

3、主从复制原理---面试会考

二、基于binlog的主从同步

1、主库上的操作

        1)配置文件

        2)备份数据库(如果没有数据库则不用)

        3)授权用户(在mysql下)

        4)查看主库上的用户

2、从库上的操作(两个从库上都要操作)

        1)配置文件

        2)还原主库备份(如果步骤1的2)没有操作则不用)

        3)设置从库的change master

        4)开启主从库并查看是否配置成功

3、验证是否同步

二、基于gitd主从同步

1、在vim /etc/my.cnf里写入

2、从库配置change master 有两种方法

3、启动·主从配置

4、验证(验证方法与binlog一样)


前提(无论是基于binlog还是基于gitd)

主库与从库都要安装MySQL(安装方式看自己)----这里使用在线安装

[root@localhost ~]# dnf install -y mysql-server.x86_64 
[root@localhost ~]# systemctl start mysqld

注意主库与从库的系统得一致(比如都是openeuler系统或者其他)

一、对MySQL主从同步的了解

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

1、MySQL支持的复制类型

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

2、为什么要做主从复制

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

3、主从复制原理---面试会考

主要基于MySQL二进制日志 主要包括三个线程(2个I/O线程,1个SQL线程)

       · 1、MySQL将数据变化记录到二进制日志中;
       · 2、Slave将MySQL的二进制日志拷贝到Slave的中继日志中;
       · 3、Slave将中继日志中的事件在做一次,将数据变化,反应到自身(Slave)的数据库

二、基于binlog的主从同步

这里用一主二从来操作

1、主库上的操作

        1)配置文件

#进入文件输入 server_id=1 (为了方便这里id写自己的)
[root@openeuler ~]# vim /etc/my.cnf

#重新启动mysql
[root@localhost ~]# systemctl restart mysqld

        2)备份数据库(如果没有数据库则不用)

#db1为表 school为数据库
[root@openeuler ~]# mysqldump --opt -B db1 it school > db.sql

        3)授权用户(在mysql下)

mysql> create user rep@'172.16.%.%' identified with mysql_native_password by '123456';

mysql> grant replication slave on *.* to rep@'172.16.%.%';
# *.*表示 所有数据库.所有表

        4)查看主库上的用户

#记住自己的Flie 和 position
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000002 |      678 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

2、从库上的操作(两个从库上都要操作)

        1)配置文件

#进入文件输入 server_id=1 (id记得变)

[root@client ~]# vim /etc/my.cnf

#重新启动mysql
[root@client ~]# systemctl restart mysqld

        2)还原主库备份(如果步骤1的2)没有操作则不用)

[root@client ~]#mysql -uroot -pMySQL@123 < db.sql

        3)设置从库的change master

#master_host----主库的ip
#master_user----在授权用户时设置的 主库的用户
#master_password----在授权用户时设置的密码
#master_log_file----前面要求注意记住的flie名
#master_log_pos----前面要求注意记住的position
mysql> change master to
    -> master_host='192.168.131.20',
    -> master_user='rep',
    -> master_password='123456',
    -> master_log_file='binlog.000002',
    -> master_log_pos=678;
Query OK, 0 rows affected, 8 warnings (0.01 sec)

        4)开启主从库并查看是否配置成功

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> show slave status;

        这里注意出现两个yes才是配置成功

        出现以下这种情况则是配置失败,解决方式如下

[root@client ~]# mysqladmin -urep -p123456 -h192.168.131.20 ping

        如果又出现以下的情况

        就是防火墙没有关把防火墙关了就行了(主从库都关)-----systemctl stop firewalld

3、验证是否同步

在主库上建立一个数据库或者表看从库上是否同步(这里以建立数据库为例)

#在主库上先查看已有的数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

#创建一个school的数据库
mysql> create database school;
Query OK, 1 row affected (0.00 sec)

在从库上查看是否有该数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| school             |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

二、基于gitd主从同步

如果前有用主从同步得需要关闭(在mysql上)----stop slave;

配置与binlog差不多

1、在vim /etc/my.cnf里写入

#开启gtid
gtid_mode=ON
enforce-gtid-consistency=ON

主库一样

2、从库配置change master 有两种方法

#方法一
mysql> CHANGE MASTER TO
     >     MASTER_HOST = '192.168.131.20',
     >     MASTER_PORT = 3306,----可以不用写
     >     MASTER_USER = 'rep',
     >     MASTER_PASSWORD ='12456',
     >     MASTER_AUTO_POSITION = 1;

Or from MySQL 8.0.23:

#方法二
mysql> CHANGE REPLICATION SOURCE TO
     >     SOURCE_HOST ='192.168.131.20',
     >     SOURCE_PORT = 3306,----可以不用写
     >     SOURCE_USER = 'rep',
     >     SOURCE_PASSWORD = '123456',
     >     SOURCE_AUTO_POSITION = 1;

3、启动·主从配置

mysql> START SLAVE;
Or from MySQL 8.0.22:

mysql> START REPLICA;
#查看
mysql> START SLAVE STATUS;

4、验证(验证方法与binlog一样)

        在主库上

#创建数据库以及表并写内容
mysql> create database school;
Query OK, 1 row affected (0.00 sec)

mysql> use school;
Database changed
mysql> CREATE TABLE `Student` (
    ->   `Sno` int(10) NOT NULL COMMENT '学号',  `Sname` varchar(16) NOT NULL CMMENT '姓名',
    ->   `Ssex` char(2) NOT NULL COMMENT '性别',  `Sage` tinyint(2) NOT NULL DEAULT '0' COMMENT '学生年龄',
    ->   `Sdept` varchar(16) DEFAULT 'NULL' COMMENT '学生所在系别',  PRIMARY KE (`Sno`)
    -> ) ;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> INSERT INTO `Student` VALUES (1, '陆亚', '男', 24, '计算机网络'),(2, 'to', '男', 26, '英语'),(3, '张阳', '男', 21, '物流管理'), (4, 'alex', '女', 22, '电子商务');
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

        在从库上查看是否有(可以看到就说明同步成功)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| school             |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> select * from Student;
+-----+--------+------+------+-----------------+
| Sno | Sname  | Ssex | Sage | Sdept           |
+-----+--------+------+------+-----------------+
|   1 | 陆亚   | 男   |   24 | 计算机网络      |
|   2 | tom    | 男   |   26 | 英语            |
|   3 | 张阳   | 男   |   21 | 物流管理        |
|   4 | alex   | 女   |   22 | 电子商务        |
+-----+--------+------+------+-----------------+
4 rows in set (0.00 sec)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

opencv笔记2

图像灰度 彩色图像转化为灰度图像的过程是图像的灰度化处理。彩色图像中的每个像素的颜色由R&#xff0c;G&#xff0c;B三个分量决定&#xff0c;而每个分量中可取值0-255&#xff0c;这样一个像素点可以有256*256*256变化。而灰度图像是R&#xff0c;G&#xff0c;B三个分量…

Hadoop•用Web UI查看Hadoop状态词频统计

听说这里是目录哦 通过Web UI查看Hadoop运行状态&#x1f407;一、关闭防火墙二、在物理计算机添加集群的IP映射三、启动集群四、进入HDFS的Web UI 词频统计&#x1f9a9;1、准备文本数据2、在HDFS创建目录3、上传文件4、查看文件是否上传成功5、运行MapReduce程序6、查看MapRe…

C语言二级查漏补缺

直接拿错过的选择开始补知识点 二叉树 推荐视频 基础名词讲解 根节点&#xff08;Root&#xff09;&#xff1a;二叉树的顶端节点&#xff0c;没有父节点。子节点&#xff08;Children&#xff09;&#xff1a;每个节点下面的节点。对于二叉树来说&#xff0c;每个节点最多…

Low-Level 大一统:如何使用Diffusion Models完成视频超分、去雨、去雾、降噪等所有Low-Level 任务?

Diffusion Models专栏文章汇总:入门与实战 前言:视频在传输过程中常常因为各种因素(如恶劣天气、噪声、压缩和传感器分辨率限制)而出现质量下降,这会严重影响计算机视觉任务(如目标检测和视频监控)的性能。现有的视频修复方法虽然取得了一些进展,但通常只能针对特定的退…

【22】Word:小李-高新技术企业政策❗

目录 题目​ NO1.2 NO3 NO4 NO5.6 NO7.8 NO9.10 若文章中存在删除空白行等要求&#xff0c;可以到最后来完成。注意最后一定要检查此部分&#xff01;注意&#xff1a;大多是和事例一样即可&#xff0c;不用一摸一样&#xff0c;但也不要差太多。 题目 NO1.2 F12Fn&a…

【前端】CSS学习笔记(1)

目录 CSS的简介CSS的概念语法 CSS的引入方式内联样式&#xff08;行内样式&#xff09;内部样式外部样式&#xff08;推荐&#xff09; 选择器全局选择器元素选择器类选择器ID选择器合并选择器后代选择器子选择器相邻兄弟选择器通用兄弟选择器伪类选择器:link:visited:hover:ac…

C#与AI的共同发展

C#与人工智能(AI)的共同发展反映了编程语言随着技术进步而演变&#xff0c;以适应新的挑战和需要。自2000年微软推出C#以来&#xff0c;这门语言经历了多次迭代&#xff0c;不仅成为了.NET平台的主要编程语言之一&#xff0c;还逐渐成为构建各种类型应用程序的强大工具。随着时…

几何数据结构之四叉树与八叉树

几何数据结构之四叉树与八叉树 四叉树的定义四叉树深度的计算公式推导假设&#xff1a;计算过程&#xff1a;1. 划分空间&#xff1a;2. 节点容纳的最小距离&#xff1a;3. 解出深度&#xff1a;4. 考虑常数项&#xff1a; 总结&#xff1a; 八叉树 四叉树的定义 四叉树&#…

机器学习中的方差与偏差

文章目录 方差与偏差1.1 数据1.1.1 数据的分布1.1.2 拟合 1.2 方差与偏差1.2.1 泛化误差的拆分1.2.2 理解方差偏差 1.3 方差-偏差trade-off1.3.1 方差-偏差trade-off1.3.2 方差与偏差诊断 1.4 降低策略1.4.1 噪声1.4.2 高偏差1.4.3 高方差 方差与偏差 1.1 数据 1.1.1 数据的分…

Weblogic - General - 弱口令 任意文件读取漏洞

0x01&#xff1a;漏洞简介 首先需要说明&#xff0c;本文并不是介绍了 Weblogic 某一 CVE 漏洞&#xff0c;而是提供了一种通用的测试思路。 0x0101&#xff1a;弱口令漏洞 弱口令漏洞主要是由于用户安全意识淡薄&#xff0c;为了便于记忆&#xff0c;设置了强度过低的密码&…

C#中的语句

C#提供了各式各样的语句&#xff0c;大多数是由C和C发展而来&#xff0c;当然&#xff0c;在C#中做了相应修改。语句和表达式一样&#xff0c;都是C#程序的基本组成部分&#xff0c;在本文我们来一起学习C#语句。 1.语句 语句是构造所有C#程序的过程构造块。在语句中可以声明…

VLAN基础理论

VLAN V&#xff1a;Virtual(虚拟) LAN ——局域网 VLAN ——虚拟局域网(虚拟广播域&#xff1a;交换机和路由器协同工作后&#xff0c;将原来的一个广播域&#xff0c;逻辑上切分为多个。) VLAN的配置我们基于以下拓扑进行&#xff1a; PC1-4的IP地址依次为192.168.1.1-192.168…

基于SpringBoot的健身房管理系统【源码+文档+部署讲解】

系统介绍 基于SpringBootVue实现的健身房管理系统采用前后端分离架构方式&#xff0c;系统设计了管理员、会员、员工三种角色&#xff0c;系统实现了用户登录与注册、个人中心、会员管理、员工管理、会员卡管理、会员卡类型管理、教练信息管理、解聘管理、健身项目管理、指导项…

C++ 模拟真人鼠标轨迹算法 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…

搭建一个基于Spring Boot的校园台球厅人员与设备管理系统

搭建一个基于Spring Boot的校园台球厅人员与设备管理系统可以涵盖多个功能模块&#xff0c;例如用户管理、设备管理、预约管理、计费管理等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的系统。 — 1. 项目初始化 使用 Spring Initializr 生成一个Spring …

Langchain+FastApi+Vue前后端Ai对话(超详细)

一、引入 首先可以先看下作者的文章 FastApi相关文章&#xff1a;创建最简单FastApi的项目Vue相关文章&#xff1a;最简单的aixos二次封装Langchain相关文章&#xff1a;如何使用LangSmith跟踪deepseek模型 二、后端搭建 1 项目文件结构 routers&#xff1a;存放api接口se…

图像去雾数据集的下载和预处理操作

前言 目前&#xff0c;因为要做对比实验&#xff0c;收集了一下去雾数据集&#xff0c;并且建立了一个数据集的预处理工程。 这是以前我写的一个小仓库&#xff0c;我决定还是把它用起来&#xff0c;下面将展示下载的路径和数据处理的方法。 下面的代码均可以在此找到。Auo…

Java中json的一点理解

一、Java中json字符串与json对象 1、json本质 json是一种数据交换格式。 常说的json格式的字符串 > 发送和接收时都只是一个字符串&#xff0c;它遵循json这种格式。 2、前后端交互传输的json是什么&#xff1f; 前后端交互传输的json都是json字符串 比如&#xff1a;…

React实现拖拽特效

前言 最近&#xff0c;我看到一个工程师的个人网站上&#xff0c;采用了拖拽作品集的互动特效&#xff0c;既有趣又吸引眼球。经过一些研究&#xff0c;我发现其实借助一些现成的套件&#xff0c;就能轻松实现这样的效果。今天就带大家一起看看&#xff0c;如何通过 Framer Mo…

leetcode904-水果成篮

leetcode 904 时间复杂度&#xff1a;O(n) 空间复杂度&#xff1a;O(1) 之前发布了一个滑动窗口的题目解答思路&#xff0c;参考博文&#xff1a;长度最小的子数组 本题也是基于滑动窗口的一个扩展题&#xff0c;主要解决方法是利用滑动窗口哈希表 var totalFruit function…