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

mysql主从复制原理及应用

一、主从复制简介

MySQL主从复制是一种异步、基于日志的、单向的数据库复制技术,它通过在主服务器上启用二进制日志并将其发送给一个或多个从服务器,实现了从服务器与主服务器之间的数据同步。主服务器将所有的数据库操作记录到二进制日志中,从服务器会定期或实时地检查主服务器的二进制日志,并将其中的操作应用到本地的MySQL实例中。复制过程可以基于语句、基于行或混合方式实现,并且可以通过多种手段来监测和管理复制延迟,以提高数据的可用性和可靠性。

原理如下:

  1. 配置主服务器:在主服务器上启用二进制日志,并记录所有的数据库变更操作。每个二进制日志文件都包含一系列数据库操作的记录,这些记录按照时间顺序排列。
  2. 配置从服务器:在从服务器上启动一个复制进程,该进程连接到主服务器并请求复制数据。从服务器会根据主服务器的配置信息,自动下载并解析主服务器的二进制日志文件,然后将其中的操作应用到本地的MySQL数据库中。
  3. 复制过程:当主服务器上的数据库发生变化时,这些变化会被记录到二进制日志中。复制进程会定期或实时地检查主服务器的二进制日志,并将其中的新操作复制到从服务器的本地MySQL数据库中。复制过程可以通过多种方式实现,例如:
    • 基于语句的复制:复制进程将主服务器上的SQL语句复制到从服务器上执行。
    • 基于行的复制:复制进程将主服务器上的数据库行变更操作复制到从服务器上执行。
    • 混合复制:复制进程根据操作类型和情况选择使用基于语句的或基于行的复制方式。
  4. 复制延迟:由于网络延迟、从服务器的负载等原因,从服务器上的数据可能会滞后于主服务器上的数据。这种滞后被称为复制延迟,它可能会对应用程序产生影响。因此,需要监测复制延迟并及时处理。
  5. 故障转移:如果主服务器发生故障,需要将复制切换到另一个MySQL服务器上。可以通过使用MySQL提供的工具或第三方工具来实现自动或手动的故障转移。

总的来说,MySQL主从复制技术通过将数据从主服务器复制到多个从服务器中,提高了数据的可用性和可靠性。复制过程可以通过多种方式实现,并且可以根据实际情况进行调整和优化,以提高性能和稳定性。

二、主服务器

1.启用二进制日志(binlog)和设置server_id
[root@node1 ~]# vim /etc/my.cnf
log_bin=mysql-bin
server_id=10
# server_id要唯一
2.重启mysql服务
[root@node1 ~]# systemctl restart mysqld
3.创建一个mysql用户,并授予该用户复制权限
mysql> grant replication slave on *.* to 'rep'@'192.168.136.%' identified by '123456';
# 192.168.136.%,表示任何以192.168.136.开头的IP地址都可以连接到MySQL服务器并使用该用户进行复制操作。mysql> show grants for 'rep'@'192.168.136.%';  # 查看用户的授权
4.查看主库状态
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      440 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
5.备份数据库

锁表设置只读:为后面备份准备,注意生产环境要提前申请停机时间。

mysql> flush tables with read lock;

备份数据库的话因为我这个是空的所以就不做备份省略,做备份的话要把主服务器数据上传到从库

三、从服务器

1.启用二进制日志(binlog)和设置server_id
[root@node2 ~]# vim /etc/my.cnf
log_bin=msyql_bin
server_id = 11
2.重启mysql服务
[root@node2 ~]# systemctl restart mysqld
3.设定主库同步
mysql> change master to->  master_host='192.168.136.161',->  master_user='rep',->  master_password='123456',->  master_log_file='mysql-bin.000001',->  master_log_pos=440;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
4.启动从库同步并检查状态
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)mysql> show slave status\G;# 查看这两参数是否是yes,如果不是查看mysql日志
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

三、测试同步

1.创建一张表,并插入数据
mysql> CREATE  TABLE  student (-> id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  ,-> name  VARCHAR(20)  NOT NULL ,-> sex  VARCHAR(4)  ,-> birth  YEAR,-> department  VARCHAR(20) ,-> address  VARCHAR(50) -> );
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区');
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市');
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市');
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市');
Query OK, 1 row affected (0.01 sec)
2.分别在主库和从库查看数据是否同步
# 主库:
mysql> select * from student;
+-----+-----------+------+-------+--------------+--------------------+
| id  | name      | sex  | birth | department   | address            |
+-----+-----------+------+-------+--------------+--------------------+
| 901 | 张老大    ||  1985 | 计算机系      | 北京市海淀区        |
| 902 | 张老二    ||  1986 | 中文系        | 北京市昌平区        |
| 903 | 张三      ||  1990 | 中文系        | 湖南省永州市        |
| 904 | 李四      ||  1990 | 英语系        | 辽宁省阜新市        |
| 905 | 王五      ||  1991 | 英语系        | 福建省厦门市        |
| 906 | 王六      ||  1988 | 计算机系      | 湖南省衡阳市        |
+-----+-----------+------+-------+--------------+--------------------+
6 rows in set (0.00 sec)
# 从库
mysql> select * from student;
+-----+-----------+------+-------+--------------+--------------------+
| id  | name      | sex  | birth | department   | address            |
+-----+-----------+------+-------+--------------+--------------------+
| 901 | 张老大    ||  1985 | 计算机系      | 北京市海淀区        |
| 902 | 张老二    ||  1986 | 中文系        | 北京市昌平区        |
| 903 | 张三      ||  1990 | 中文系        | 湖南省永州市        |
| 904 | 李四      ||  1990 | 英语系        | 辽宁省阜新市        |
| 905 | 王五      ||  1991 | 英语系        | 福建省厦门市        |
| 906 | 王六      ||  1988 | 计算机系      | 湖南省衡阳市        |
+-----+-----------+------+-------+--------------+--------------------+
6 rows in set (0.00 sec)
# 主从同步成功

相关文章:

mysql主从复制原理及应用

一、主从复制简介 MySQL主从复制是一种异步、基于日志的、单向的数据库复制技术,它通过在主服务器上启用二进制日志并将其发送给一个或多个从服务器,实现了从服务器与主服务器之间的数据同步。主服务器将所有的数据库操作记录到二进制日志中&#xff0c…...

《Kubernetes故障篇:unable to retrieve OCI runtime error》

一、背景信息 1、环境信息如下: 操作系统K8S版本containerd版本Centos7.6v1.24.12v1.6.12 2、报错信息如下: Warning FailedCreatePodSandBox 106s (x39 over 10m) kubelet (combined from similar events): Failed to create pod sandbox: rpc error: …...

el-upload上传图片和视频,支持预览和删除

话不多说&#xff0c; 直接上代码&#xff1a; 视图层&#xff1a; <div class"contentDetail"><div class"contentItem"><div style"margin-top:5px;" class"label csAttachment">客服上传图片:</div><el…...

clickhouse MPPDB数据库 运维实用SQL总结III

文章目录 CH问题处理使用remote函数报URL "xxxx:9000" is not allowed in configuration fileclickhouse MPPDB数据库 运维实用SQL总结 clickhouse MPPDB数据库 运维实用SQL总结II clickhouse MPPDB数据库 运维实用SQL总结III CH server相关的配置参见 : clickhous…...

ARM和MIPS的区别

ARM和MIPS的区别主要有以下几方面&#xff1a; 指令集&#xff1a;ARM支持32位和64位指令&#xff0c;而MIPS同时支持32位和64位指令。除法器&#xff1a;MIPS有专门的除法器&#xff0c;可以执行除法指令&#xff0c;而ARM没有。寄存器&#xff1a;MIPS的内核寄存器比ARM多一…...

TypeScript -- 类

文章目录 TypeScript -- 类TS -- 类的概念创建一个简单的ts类继承 public / private / protected-- 公共/私有/受保护的public -- 公共private -- 私有的protected -- 受保护的 其他特性readonly -- 只读属性静态属性 -- static修饰ts的getter /setter抽象类abstract TypeScrip…...

【LeetCode】124.二叉树中的最大路径和

题目 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root &…...

Linux命令总结

1.目录相关命令 绝对路径&#xff1a; 如/etc/init.d当前目录和上层目录&#xff1a; ./ …/主目录&#xff1a; ~/切换目录&#xff1a; c 2.进程相关命令 查看当前进程&#xff1a; ps ps -ef&#xff08;system v 输出&#xff09;ps -aux bsd 格式输出ps -ef|grep pid 执…...

SpringBoot临时属性设置

在Spring Boot中&#xff0c;可以通过设置临时属性来覆盖应用程序中定义的属性。这在某些情况下很有用&#xff0c;例如在命令行中指定配置参数或在测试环境中覆盖默认值。 你可以使用--&#xff08;双破折号&#xff09;语法来设置临时属性。以下是一些示例&#xff1a; 1. …...

【Python小知识】如何解决代理IP在多线程环境下的并发问题?

前言 在多线程环境下&#xff0c;使用代理IP可能会出现并发问题。具体而言&#xff0c;多个线程可能同时使用同一个代理IP&#xff0c;导致代理IP被封禁或无法访问。为了解决这个问题&#xff0c;我们需要使用一个代理IP池来管理可用的代理IP&#xff0c;并在多线程环境下动态…...

redis常见面试汇总

目录 Redis 适合的场景 Redis 不适合的场景 3、Redis 有哪些常见的功能&#xff1f; 什么是缓存穿透&#xff1f;怎么解决&#xff1f; 什么是缓存雪崩&#xff1f;该如何解决&#xff1f; 参考文献&#xff1a; Redis 适合的场景 缓存&#xff1a;减轻 MySQL 的查询压力…...

子数组的解释与专题

子数组&#xff1a;指在一个数组中&#xff0c;选择一些连续的元素组成的新数组。 例题一&#xff1a;6900. 统计完全子数组的数目 给你一个由 正 整数组成的数组 nums 。 如果数组中的某个子数组满足下述条件&#xff0c;则称之为 完全子数组 &#xff1a; 子数组中 不同 …...

PHP: 开发入门macOS系统下的安装和配置

安装Homebrew 安装 ~~友情提示&#xff1a;这个命令对网络有要求&#xff0c;可能需要翻墙或者用你的手机热点试试&#xff0c;或者把DNS换成&#xff08;114.114.114.114 和 8.8.8.8&#xff09; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebr…...

在CentOS下安装docker

1&#xff09;在Cent OS安装docker先有一个Cent OS 7.6系统 这个很重要&#xff0c;不同版本按照的时候是不一样的。 2&#xff09;查看CentOS版本 cat /etc/redhat-releas 3&#xff09;用root账户登录进去配置国内yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo http:…...

[JavaWeb]SQL介绍-DQL查询数据

SQL介绍-DQL查询数据 一.基础查询二.条件查询三.排序查询1.聚合函数2.分组查询 四.分页查询 DQL查询基础的语法结构如下&#xff1a; SELECT字段列表 FROM表名列表 WHERE条件列表 GROUP BY分组字段 HAVING分组后条件 ORDER BY排序字段 LIMIT分页限定一.基础查询 说明语法查询…...

[containerd] 在Windows上使用IDEA远程调试containerd, ctr, containerd-shim

文章目录 1. containerd安装2. 源码编译3. 验证编译的二进制文件是否含有调试需要的信息3.1. objdump工具验证3.2. file工具验证3.3. dlv工具验证 4. debug 1. containerd安装 [Ubuntu 22.04] 安装containerd 2. 源码编译 主要步骤如下&#xff1a; 1、从github下载containe…...

Verilog语法学习——LV4_移位运算与乘法

LV4_移位运算与乘法 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 题目描述&#xff1a; 已知d为一个8位数&#xff0c;请在每个时钟周期分别输出该数乘1/…...

打卡力扣题目九

#左耳听风 ARST 打卡活动重启# 目录 一、问题 二、解题方法一 三、解题方法二 四、两种方法的区别 关于 ARTS 的释义 —— 每周完成一个 ARTS&#xff1a; ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个…...

Python零基础入门(九)——函数,类和对象

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python入门专栏&#xff1a;《Python入门》欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; 码字不易&#xff0c;如果觉得文章不…...

在linux上面部署activemq

1、下载 网址&#xff1a;ActiveMQ 注意&#xff1a;新版本5.17起 要求jdk11, 5.16兼容jdk8, 所以&#xff0c;确保已经安装 java11 或以上的版本 这里安装较新版&#xff1a;5.18.2&#xff0c;已经安装了java17 如何安装jdk17,请详见我的另一篇文章&#xff1a;linux…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...