MySQL配置主从备份

news2025/1/8 5:23:49

文章目录

  • 1.什么是主从备份
  • 2. 原理
  • 3.配置主服务器
  • 4.配置从服务器
    • 4.1进入数据库,准备建立连接
    • 4.2开启 slave 连接,主备机连接成功,数据开始同步
    • 4.3查看有关从属服务器线程的关键参数的信息


1.什么是主从备份

主从复制简单来说就是主库把增删改查操作写入二进制文件,从库读取文件,复制数据,使得主从数据库保持一致。

主从复制的优势在于:

   1.高可用性:主库出现异常时,快速切换从库恢复应用

   2.负载均衡:读写分离。主库写,从库读。但需要其他插件实现,比如MaxScale

   3.备份数据:从库数据与主库是一致的,相当于一个备份手段

2. 原理

在这里插入图片描述
如图可以看到:主库接收到客户端的更新请求后,执行内部事务的更新逻辑,同时写binlog。备库 B 跟主库 A 之间维持了一个长连接。主库 A 内部有一个线程,专门用于服务备库 B 的这个长连接。一个事务日志同步的完整过程是这样的:

1.在备库 B 上通过 change master 命令,设置主库 A 的 IP、端口、用户名、密码,以及要从哪个位置开始请求 binlog,这个位置包含文件名和日志偏移量。
2.在备库 B 上执行 start slave 命令,这时候备库会启动两个线程,就是图中的 io_thread 和 sql_thread。其中 io_thread 负责与主库建立连接。
3.主库 A 校验完用户名、密码后,开始按照备库 B 传过来的位置,从本地读取 binlog,发给 B。
4.备库 B 拿到 binlog 后,写到本地文件,称为中转日志(relay log)。
5.sql_thread 读取中转日志,解析出日志里的命令,并执行。

3.配置主服务器

修改配置文件my.cnf
添加如下配置

server-id=1                         # 设置 id,这个可以是任意数字
log-bin=/mydata/log/master-bin      # 启动 binlog 日志,名字必须是 log-bin
sync_binlog=1                       # 确保主从复制的事务安全

配置完成后重启数据库

4.配置从服务器

修改配置文件my.cnf
添加如下配置

server-id=2                          # 这个 id 随便给,但不要和 master 的一样
relay-log=/mydata/log/slave-relay    # 这里是 relay-log 了,名字必须是 relay-log,备份的名字也就 slave-relay
sync_binlog=1
read-only=ON                         # 开启只读模式,确保主备数据一致

配置完成后重启数据库

4.1进入数据库,准备建立连接

CHANGE MASTER TO
  MASTER_HOST='192.168.75.20',    # master IP
  MASTER_USER='slave',    # master 上创建专门用于备份的用户
  MASTER_PASSWORD='6yhn^YHN',    # 及其密码
  MASTER_PORT=3306,    # 从这行开始,都可以不输入,只要上面几行即可开启备份(而且最好不要设置,要不然会挖坑)
  MASTER_LOG_FILE='master-bin.000002',    # master 上 mysql 执行 show master status \G 查到的 File
  MASTER_LOG_POS=602,    # master 上 mysql 执行 show master status \G 查到的 Position
  MASTER_CONNECT_RETRY=10;    # 设置超时时间,超过 n 秒没连接上,则表示 master 挂了

4.2开启 slave 连接,主备机连接成功,数据开始同步

start slave; 

4.3查看有关从属服务器线程的关键参数的信息

	show slave status\G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.75.20
                      Master_User: slave
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: master-bin.000002
              Read_Master_Log_Pos: 602
                   Relay_Log_File: slave-relay.000003
                    Relay_Log_Pos: 817
            Relay_Master_Log_File: master-bin.000002
                 Slave_IO_Running: Yes                                  # 这里两个 Yes,则表示连接上了
                Slave_SQL_Running: Yes
                  Replicate_Do_DB:
              Replicate_Ignore_DB:
               Replicate_Do_Table:
           Replicate_Ignore_Table:
          Replicate_Wild_Do_Table:
      Replicate_Wild_Ignore_Table:
                       Last_Errno: 0
                       Last_Error:
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 602
                  Relay_Log_Space: 1235
                  Until_Condition: None
                   Until_Log_File:
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File:
               Master_SSL_CA_Path:
                  Master_SSL_Cert:
                Master_SSL_Cipher:
                   Master_SSL_Key:
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error:
                   Last_SQL_Errno: 0
                   Last_SQL_Error:
      Replicate_Ignore_Server_Ids:
                 Master_Server_Id: 1
                      Master_UUID: d94faa39-e098-11ea-9c51-000c29823fb8
                 Master_Info_File: /mydata/mysql/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Master_Retry_Count: 86400
                      Master_Bind:
          Last_IO_Error_Timestamp:
         Last_SQL_Error_Timestamp:
                   Master_SSL_Crl:
               Master_SSL_Crlpath:
               Retrieved_Gtid_Set:
                Executed_Gtid_Set:
                    Auto_Position: 0
             Replicate_Rewrite_DB:
                     Channel_Name:
               Master_TLS_Version:
    1 row in set (0.00 sec)

按照以上步骤即可完成配置

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

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

相关文章

环境搭载vscode

Windows 10 下 VS Code 配置 C 开发环境(MinGW) 读书读傻了哟 配置 C/C 环境   主要是配置launch.json、tasks.json这两个文件(当然,还有别的.json文件,可有可无)。这两个文件位于.vscode文件夹下&#…

mysql--第一天基础操作

1.创建数据库 2.查询创建数据的语句 3.使用数据库,查询当前默认的数据库以及使用的编码方式校验规则 4.删除数据库 5.在一张表中定义多个字段,要使用今天提到的所有的数据类型(数字,文本,日期) 查看表结构

产品方案设计高效的4大注意事项

做产品方案时,我们容易遭遇:未澄清需求、未梳理业务方案、缺少思考过程以及缺少对比方案等误区,往往会造成产品方案并不能完全解决用户问题,项目后期容易遇到需求变更等风险。 因此如何如何高效设计产品方案?就显得尤为…

SpringCloud入门实战(十二)-Sleuth+Zipkin分布式请求链路跟踪详解

📝 学技术、更要掌握学习的方法,一起学习,让进步发生 👩🏻 作者:一只IT攻城狮 ,关注我,不迷路 。 💐学习建议:1、养成习惯,学习java的任何一个技术…

Django的数据库配置、生成(创建)过程、写入数据、查看数据的学习过程记录

目录 01-配置数据库信息02-安装Python的MySQL数据库驱动程序 mysqlclient03-安装Mysql,并启动Mysql04-定义Django的数据库模型(定义数据表-编写models.py文件)05-按照数据的配置生成数据库(执行迁移命令)05-01-生成迁移执行文件05-02-执行数据库模型迁移 06-查看数据…

Vue.js Js引入相关

Vue.js vue.js 新增了一些语法,有一些旧的模组并没有使用"先进"的export和import语法 即 es语法进行模块化。 <script></script>但 editor.md 真的很好用. 但很抱歉,它在vue中无法使用 es6 进行导入。 所以需要使用传统的方式进行导入。 很多人会把js…

【ARM Coresight 系列文章 2.1 - ARM Coresight 组件介绍】

文章目录 1.1 Coresight 组件介绍1.1.1 Trace sources1.1.2 Trace Sinks1.1.2 Trace links 1.1 Coresight 组件介绍 图 1-1 1.1.1 Trace sources 什么是 Trace source? 在ARM Coresight技术中&#xff0c;Trace Source是指处理器中的一个组件&#xff0c;用于产生和发送跟踪数…

全球十大看黄金走势免费app软件最新名单推荐(综合版)

选择黄金走势免费app软件时&#xff0c;有几个关键因素需要考虑。首先&#xff0c;要选择可靠的软件平台&#xff0c;确保其在金融市场上拥有良好的声誉和高度的信任度。此外&#xff0c;软件应提供及时准确的市场数据&#xff0c;包括实时行情、交易量和技术指标等&#xff0c…

高速PCB布局布线规范

目录 一、容抗/感抗 1.容抗 2.感抗 二、寄生电容/分布电容/杂散电容 1.寄生电容 2.分布电容 3.杂散电容 4.寄生电容/分布电容/杂散电容对信号的影响 5.怎么减小分布电容&#xff1f; 三.寄生电感 1.什么是寄生电感&#xff1f; 2.怎么减小寄生电感&#xff1f; 四.…

ROS:节点名称重名

目录 一、前言二、rosrun设置命名空间与重映射2.1设置命名空间2.2rosrun名称重映射2.3rosrun命名空间与名称重映射叠加 三、launch文件设置命名空间与重映射四、编码设置命名空间与重映射4.1C 实现:重映射4.2C 实现:命名空间4.3Python 实现:重映射 一、前言 ROS 中创建的节点是…

Python3在Windows上设置环境变量方法

Python3在Windows上设置环境变量方法&#xff0c;在环境变量中添加Python目录&#xff1a; 在命令提示框中(cmd) : 输入 path%path%;C:\Python 按下"Enter"。 注意: C:\Python 是Python的安装目录。 也可以通过以下方式设置&#xff1a; 右键点击"计算机&q…

《深入理解计算机系统》(9)内存管理

1、物理和虚拟寻址 物理寻址 主存被组织成一个由 M 个连续的字节大小的单元组成的数组。每字节都有一个唯一的物理地址。CPU 访问内存最自然的方式就是使用物理地址&#xff0c;称为物理寻址。下图是一个物理寻址的示例&#xff0c;该示例的上下文是一个加载指令&#xff0c;它…

群载波应急广播主机的应用

一、 概述 群载波主机是专为山洪灾害预警、气象预警、地质灾害预警设计的一款智能IP群载波主机。该群载波主机可通过网络实现与控制中心通讯&#xff0c;用户可实时远程控制功放的开关机状态以及检测设备的主要信息。群载波主机主要用于接收网络信号&#xff0c;与控制中心通讯…

如何在Ubuntu系统中添加硬盘

这里写自定义目录标题 一. 安装磁盘二. 查看和新建硬盘分区2.1 查看硬盘分区2.2 创建硬盘分区 三. 分区格式化四. 分区挂载到目录五. 配置启动挂载 众所周知&#xff0c;在Linux系统中有一个著名的说法&#xff0c;即”一切皆文件“。包括磁盘在内的各种连接到系统的设备都用文…

视频怎么实现倒放?分享这3个方法给大家!

如果你曾经想过将自己喜欢的视频倒放播放&#xff0c;你可能会发现这是一项相当具有挑战性的任务。尽管许多视频播放器提供了倒放功能&#xff0c;但有时候这些功能可能不够灵活&#xff0c;甚至根本不支持倒放。在本文中&#xff0c;我们将介绍几种可帮助你倒放视频的方法。 …

减噪 低振纹|拓尔微TMI8421打印机马达驱动解决方案

打印机作为现代办公不可或缺的设备为我们的工作带来了便利&#xff0c;但也会遇到一些”鸡肋“问题&#xff0c;如产生噪音或机器发热等问题&#xff0c;不仅无法高效的打印文件资料还会给安静的办公室环境带来噪音干扰&#xff0c;打乱工作思绪...... 一台高效稳定且减噪的打…

langchain源码阅读系列(三)之Chain模块

原文首发于博客文章langchain源码阅读 本节是langchian源码阅读系列第三篇&#xff0c;下面进入Chain模块&#x1f447;&#xff1a; LLM 应用构建实践笔记 Chain链定义 链定义为对组件的一系列调用&#xff0c;也可以包括其他链&#xff0c;这种在链中将组件组合在一起的想…

Python中读取与写入文件时的编码方式

在《Python中文件的读取》与《Python中文件的写入》中提到通过文件对象调用read()函数和write()函数实现文件的读写。以上方法能够正确地取或写入英文时&#xff0c;当要读写的内容是中文时&#xff0c;则需要考虑编码方式。 1 读取已经存在的数据 1.1 创建文件 创建一个txt…

【码银送书第二期】《高并发架构实战:从需求分析到系统设计》

很多软件工程师的职业规划是成为架构师&#xff0c;但是要成为架构师很多时候要求先有架构设计经验&#xff0c;而不做架构师又怎么会有架构设计经验呢&#xff1f;那么要如何获得架构设计经验呢&#xff1f; 一方面可以通过工作来学习&#xff0c;观察所在团队的架构师是如何…

nginx脚本,Nginx变量截取字符串,拼接字符串,nginx打印日志,添加修改HTTP请求头,添加修改HTTP响应头

nginx变量 nginx变量命名&#xff0c;以$开头。 举例&#xff1a;nginx.conf 文件中有下面这一行配置&#xff1a;set $var "hello world";特点&#xff1a;我们看到,Nginx 变量名前面有一个 $ 符号,这是语法上的要求强调&#xff1a;所有的 Nginx 变量在 Nginx 配…