MySQL集群 1主1从 主从复制(原理 及配置命令)

news2024/11/28 6:47:08

CSDN 成就一亿技术人!

今天分享一期 MySQL集群方案:主从集群 也是最常用的一种

CSDN 成就一亿技术人!


目录

使用主从复制的原因(优点)

主从复制的过程(原理)

了解两大线程( I/O 和 SQL)

核心原理

1.主从复制实验

1.实验环境

2.配置主服务器(master1)

开启二进制文件

创建用户

查看状态

查看端口号

3.从服务器(master2)

从复制主配置(核心命令)

启动复制

测试


使用主从复制的原因(优点)

主要原因包括提高性能、实现高可用性、数据备份和灾难恢复。

  1. 读写分离: 主从复制允许在主服务器上执行写操作,而在从服务器上执行读操作。这可以分担主服务器的负载,提高整体性能。从服务器可以分担读查询、报表生成等任务,减轻主服务器的压力。

  2. 高可用性: 当主服务器发生故障时,从服务器可以接管服务,从而提供高可用性。通过将从服务器配置为备份,可以确保在主服务器不可用时,系统仍然能够继续提供服务。

  3. 数据备份: 从服务器可以用作实时备份,以便在主服务器发生数据损坏或误操作时进行恢复。备份可以从从服务器上进行,而不会对主服务器的性能产生负面影响。

  4. 灾难恢复: 在发生灾难性事件(如硬件故障、数据中心故障等)时,从服务器可以用作快速恢复数据的副本。通过配置合适的地理位置分布,可以提高系统的灾难恢复能力。

  5. 数据分布: 主从复制还允许在不同地理位置的服务器上维护相同的数据副本。这对于全球分布的应用程序或具有多个地理位置的用户群体非常有用,可以提高用户访问数据的速度。

主从复制的过程(原理)

了解两大线程( I/O 和 SQL)
  1. I/O线程:

    • 目的:I/O线程主要负责与MySQL服务器之外的其他MySQL服务器进行通信,以便复制(replication)数据。
    • 功能: 当一个MySQL服务器作为主服务器(master)时,I/O线程会将变更日志(binary log)中的事件传输给从服务器(slave)。从服务器上的I/O线程负责接收主服务器的二进制日志,并将这些事件写入本地的中继日志(relay log)。
    • 配置: 在MySQL配置文件中,你可以通过配置参数如和来启用二进制日志和指定服务器ID。log-bin  server-id
  2. SQL线程:

    • 目的:SQL线程主要负责执行从I/O线程接收到的二进制日志事件,将这些变更应用到从服务器上的数据库。
    • 功能: 从服务器上的SQL线程会读取中继日志中的事件,并在从服务器上执行相应的SQL语句,以确保从服务器的数据与主服务器保持同步。
    • 配置: 在从服务器上,你需要配置一些参数,如、和来启用二进制日志、指定服务器ID和指定中继日志。log-bin server-id relay-log
核心原理

就是主从复制的工作原理

了解以下部分就能对本章节 易如指掌

  1. 启用二进制日志: 主服务器在配置文件中启用二进制日志,记录所有对数据库的更改。这通过在主服务器的配置文件中设置log-bin选项来实现。二进制日志包含了对数据的所有修改操作,例如插入、更新和删除。

  2. 生成二进制日志事件: 当在主服务器上执行任何更改时,MySQL会将这些更改记录为二进制日志事件。每个事件都有一个唯一的标识,包括操作类型、受影响的表和相应的数据。

  3. 从服务器连接主服务器: 从服务器通过MySQL的复制线程连接到主服务器。在主从复制设置中,从服务器充当复制的被动一方,而主服务器则是主动一方。

  4. 获取主服务器的二进制日志信息: 从服务器向主服务器发送请求,获取主服务器上的二进制日志信息。从服务器要求主服务器提供自己的位置(File和Position),这将作为复制的起始点。

  5. 主服务器发送二进制日志: 主服务器从请求的起始点开始发送二进制日志信息给从服务器。这些二进制日志文件包含了在主服务器上执行的所有更改操作。

  6. 从服务器应用二进制日志: 从服务器接收到二进制日志后,将这些日志逐个应用到自己的数据库中。这样,从服务器的数据会与主服务器保持同步。

  7. 维护复制位置: 从服务器会定期记录自己复制的位置,以便在重新连接时从正确的位置开始复制。这通常由MySQL的relay-logrelay-log-index文件来管理。

  8. 处理主从同步延迟: 在一些情况下,由于网络延迟、从服务器负载等原因,可能会导致主从同步延迟。可以通过适当的调整和优化来降低同步延迟,确保从服务器的数据尽快与主服务器同步。

1.主从复制实验

通过以下实验深刻的理解

1.实验环境

注意事项:尽量使用同一版本的mysql 

实验环境两个安装mysql5.7的CentOs7

每台的配置:关闭防火墙 selinux 配置静态ip 域名解析
第一台:master1        192.168.180.180
第二台:master2        192.168.180.181

域名解析:
vim /etc/hosts
加入
192.168.180.180 master1
192.168.180.181 master2

2.配置主服务器(master1)
开启二进制文件
vim /etc/my.cnf
log-bin=master-bin
server-id=1

systemctl restart mysqld

注释:

log-bin=master-bin:这一行配置启用二进制日志,并设置了二进制日志的文件名为 "master-bin"。二进制日志用于记录对数据库执行的更改操作,这对于主从复制是必要的。

server-id=1:这一行配置为服务器分配唯一的ID,即服务器ID。在主从复制中,每个参与复制的MySQL服务器都必须有唯一的服务器ID,以便在复制时进行标识。在这里,服务器ID被设置为1。

创建用户
grant replication slave on *.* to 'rep'@'192.168.180.%' identified by 'Sunshao-123';

rep是用户名称
@后边跟上服务器网段

查看状态

用于从服务器

  MASTER_LOG_FILE='二进制文件',
  MASTER_LOG_POS=154;

来使用

show master status;

File:当前二进制日志文件的名称。
Position:二进制日志文件中的位置。
Binlog_Do_DB:要复制的数据库(如果指定)。
Binlog_Ignore_DB:复制期间要忽略的数据库(如果指定)。
查看端口号
SHOW VARIABLES LIKE 'port';

3.从服务器(master2)

vim /etc/my.cnf
server-id=2        *******标识符改为2

systemctl restart mysqld
从复制主配置(核心命令)
CHANGE MASTER TO
  MASTER_HOST='主服务器Ip或主机名',
  MASTER_PORT=数据库的端口号(默认3306),
  MASTER_USER='创建的用户',
  MASTER_PASSWORD='用户密码',
  MASTER_LOG_FILE='二进制文件',
  MASTER_LOG_POS=154;

 主服务器show master status;

查看出的参数写入以下两个选项当中

MASTER_LOG_FILE='二进制文件',‘

’MASTER_LOG_POS=154;

端口号也是一样

启动复制
START SLAVE;

查看状态

show slave status \G;

测试

主服务器创建一个库表并且插入数据

mysql> create database test;
Query OK, 1 row affected (0.01 sec)

mysql> use test;
Database changed

mysql> insert into t1 values(1111),(2222);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from t1;
+------+
| id   |
+------+
| 1111 |
| 2222 |
+------+
2 rows in set (0.00 sec)

从服务器测试

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


mysql> use test;
Database changed
mysql> show tables
    -> ;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
+----------------+
1 row in set (0.00 sec)

mysql> select * from t1;
+------+
| id   |
+------+
| 1111 |
| 2222 |
+------+
2 rows in set (0.00 sec)

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

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

相关文章

7min到40s:SpringBoot 启动优化实践!

目录 背景 1 耗时问题排查 1.1 观察 SpringBoot 启动 run 方法 1.2 监控 Bean 注入耗时 2 优化方案 2.1 如何解决扫描路径过多? 2.2 如何解决 Bean 初始化高耗时? 3 新的问题 3.1 SpringBoot 自动化装配,让人防不胜防 3.2 使用 sta…

大带宽服务器托管的特点和考虑因素

很多公司和企业对于使用大带宽服务器的需求和存储不一样,为了满足不同的用户需求,大带宽服务器托管是个不错的选择,小编为您整理发布大带宽服务器托管的特点和要考虑的因素。 大带宽服务器托管是一种服务器托管服务,其主要特点是…

GLIP:零样本学习 + 目标检测 + 视觉语言大模型

GLIP 核心思想GLIP 对比 BLIP、BLIP-2、CLIP 主要问题: 如何构建一个能够在不同任务和领域中以零样本或少样本方式无缝迁移的预训练模型?统一的短语定位损失语言意识的深度融合预训练数据类型的结合语义丰富数据的扩展零样本和少样本迁移学习 效果 论文:…

JetPackCompose之Text使用指北

Jetpack Compose系列(6) - 文本组件 对应View体系中传统的TextView,Jetpack Compose中用Text组件来显示文本信息。跟其他组件一样,它在构造函数里就包含控制文本显示样式的一些属性,下面是其参数及解释: Composable fun Text(te…

从零开始手写mmo游戏从框架到爆炸(一)— 开发环境

一、创建项目 1、首先创建一个maven项目&#xff0c;pom文件如下&#xff1a; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

力扣面试150 只出现一次的数字Ⅱ 哈希 统计数位 DFA有穷自动机

Problem: 137. 只出现一次的数字 II 文章目录 思路&#x1f496; 哈希&#x1f496; 位数统计&#x1f496; DFA 状态机 思路 &#x1f468;‍&#x1f3eb; 参考 &#x1f496; 哈希 ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( n ) O(n) O(n) cl…

《动手学深度学习(PyTorch版)》笔记7.1

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

vue 下载二进制文件

文章目录 概要技术细节 概要 vue 下载后端返回的二进制文件流 技术细节 import axios from "axios"; const baseUrl process.env.VUE_APP_BASE_API; //downLoadPdf("/pdf/download?pdfName" res .pdf, res); export function downLoadPdf(str, fil…

【Linux】信号-上

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb;信号的概念与产生jobs命令普通信号和实…

JAVA-File五个练习

下面习题思路大多都是&#xff1a; 1.获取路径下所有列表&#xff08;listfiles&#xff09;&#xff0c;2.遍历文件或文件夹&#xff08;增强for&#xff09;&#xff0c;3.判断是否是文件&#xff08;isFile&#xff09;并直接执行逻辑&#xff0c;4.判断当前是文件夹的情况&…

JDK和Spring的SPI机制原理分析

目录 一、JDK 二、Spring框架介绍 三、SPI机制原理 一、JDK JDK是Java Development Kit的缩写&#xff0c;是Java开发工具包的意思。它是用于开发Java应用程序和运行Java程序的软件包。JDK包含了Java编译器&#xff08;javac&#xff09;和Java虚拟机&#xff08;JVM&#…

免费的hyper-v虚机添加U盘的二种方法

windows集成了hyper-v&#xff0c;hyper-v可以安装linux&#xff0c;windows等虚机&#xff0c;基本可以满足工作&#xff0c;实验之需。但是不少人反映hyper-v不方便连接U盘&#xff0c;这样子文件传输不是很方便。 网上有方法说在虚机设置中添加磁盘&#xff0c;首先到物理机…

信创ARM架构QT应用开发环境搭建

信创ARM架构QT应用开发环境搭建 前言交叉工具链Ubuntu上安装 32 位 ARM 交叉工具链Ubuntu上安装 64 位 ARM 交叉工具链 交叉编译 QT 库下载 QT 源码交叉编译 QT 源码 Qt Creator交叉编译配置配置 Qt Creator Kits创建一个测试项目 前言 有没有碰到过这种情况&#xff1f;开发出…

ctfshow web-76

开启环境: c?><?php $anew DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString(). );} exit(0); ?> cinclude("/flagc.txt");exit(); c?><?php $anew DirectoryIterator("glob:///*"); foreach($a…

全流程机器视觉工程开发(四)PaddleDetection C++工程化应用部署到本地DLL以供软件调用

前言 我们之前跑了一个yolo的模型&#xff0c;然后我们通过PaddleDetection的库对这个模型进行了一定程度的调用&#xff0c;但是那个调用还是基于命令的调用&#xff0c;这样的库首先第一个不能部署到客户的电脑上&#xff0c;第二个用起来也非常不方便&#xff0c;那么我们可…

vue使用es的reduce方法编译报错Error: Can‘t resolve ‘core-js/modules/es.array.reduce.js‘

哈喽 大家好啊 最近在vue使用es的reduce方法编译报错Error: Cant resolve core-js/modules/es.array.reduce.js 报错如图所示&#xff1a; 解决方案&#xff1a; npm install --save core-js 然后重新编译下将正常了 参考原文: 使用import异步加载语法报错_module not foun…

2024年:用OKR管理你的生活

在科技高速发展的时代&#xff0c;越来越多的企业和团队开始采用OKR&#xff08;Objectives and Key Results&#xff09;管理方法来设定目标并跟踪进度。你是否想过&#xff0c;将OKR理念引入个人生活&#xff0c;以更有效地实现人生目标&#xff1f;本文将探讨如何在2024年运…

网络规划与部署实训

一 实训目的及意义 本周实训主要是了解网络规划与部署&#xff0c;熟悉三大厂商华为、思科、锐捷交换机路由器以及相关协议的原理和配置&#xff0c;提高学生的动手能力和分析规划部署能力。 实训主要针对计算机网络系统集成的设计与实现的实际训练&#xff0c;着重锻炼学生熟练…

让cgteamwork自动为Houdini载入相机,角色道具的abc文件

一 需求 最近接到个需求&#xff1a;在创建EFX文件时&#xff0c;自动加载动画出的缓存abc文件相机&#xff0c; 不用手动一个个的载入&#xff0c;还容易出错 ABC文件自动导入到Houndini里 二 过程/效果 在CGTeamwork里打开对应的镜头&#xff0c;下面的文件列表显示相机和角…

大型软件编程实例分享,诊所门诊处方笺管理系统多台电脑同时使用的软件教程

大型软件编程实例分享&#xff0c;诊所门诊处方笺管理系统多台电脑同时使用的软件教程 一、前言 以下教程以 佳易王诊所门诊电子处方管理系统V17.2 为例说明 软件资源可以点击最下方官网卡片了解详情 软件左侧为导航栏 1、系统参数设置&#xff1a;可以设置打印等参数 2、…