MySQL 数据库 binLog 日志的使用
一、概念与作用
binlog(二进制日志)是MySQL数据库中的一种日志类型。它记录了数据库中的所有更改操作,例如插入、更新、删除操作。binlog以二进制形式存储,因此可以更高效地进行读取和解析。
binlog通常用于以下几个方面:
-
数据备份和恢复:使用binlog可以进行增量备份和恢复,只需要备份和恢复最近一次全量备份之后的binlog即可。
-
数据库复制:binlog可以用于在多个MySQL实例之间进行数据复制,从而实现数据的高可用性和负载均衡。
-
数据恢复和故障恢复:当数据库出现故障时,可以使用binlog来恢复数据和重放操作,从而尽可能地减少数据的损失和服务的中断时间。
需要注意的是,binlog是对性能有一定影响的,因为它需要记录所有的更改操作。因此,在生产环境中需要根据实际情况进行配置和调整。在MySQL中,可以通过设置参数来控制binlog文件的生成和使用。例如,可以设置binlog_format参数来指定binlog文件的格式,包括ROW、STATEMENT和MIXED三种。同时,也可以通过设置expire_logs_days参数来控制binlog文件的保留时间,避免过多占用磁盘空间。
二、恢复与备份
方式一:
1. 备份数据:
-
首先需要开启MySQL的binlog功能,可以在my.cnf配置文件中添加以下配置:
log-bin=mysql-bin # 开启binlog binlog-format=row # 使用row格式的binlog server-id=1 # 设置server id,需要唯一 -
重启MySQL,binlog日志会在data目录下生成。
-
执行
FLUSH LOGS命令,将当前的binlog文件切换到一个新的文件,以便备份时不会包含已经备份的数据。备份的binlog文件通常以时间戳或序号命名,以便于后续的恢复操作。 -
将binlog文件拷贝到备份目录中,可以使用
cp命令或其他的文件复制工具。
2. 恢复数据:
-
首先需要将备份的MySQL实例的整个数据目录拷贝到恢复目标服务器上。
-
在新服务器上启动MySQL服务,并确保已经开启binlog功能。
-
将备份的binlog文件拷贝到新服务器的data目录中,并在MySQL的命令行界面中运行以下命
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; # 107是binlog文件中需要恢复的位置 ``` 这个命令告诉MySQL从哪个binlog文件开始恢复数据。 -
执行
START SLAVE命令,开始将binlog文件中的数据恢复到新服务器上。 -
等待MySQL完成数据恢复,可以通过查看MySQL的日志文件或执行一些查询语句来确认数据是否已经成功恢复。
需要注意的是,在恢复数据时,需要确保新服务器的MySQL版本和备份服务器的MySQL版本一致,以及binlog文件的格式和服务器的配置也需要保持一致。另外,在备份和恢复数据时,也需要注意数据的完整性和安全性。
方式二:
使用binlog进行备份和恢复数据大致可以分为以下几个步骤:
1. 开启binlog日志记录功能
在MySQL数据库中,需要先开启binlog日志记录功能。可以通过修改MySQL配置文件my.cnf,将参数log_bin设置为ON,或者在MySQL命令行中执行以下语句:
mysql> SET GLOBAL log_bin = ON;
2. 备份binlog日志文件
在MySQL数据库中,可以使用命令FLUSH LOGS来创建新的binlog日志文件,也可以手动将当前正在使用的binlog日志文件复制到备份目录中。备份的binlog文件通常以时间戳或序号命名,以便于后续的恢复操作。
3. 还原备份文件
如果需要还原数据,可以先将数据库恢复到备份时的状态,然后使用备份文件中的binlog日志文件逐步还原数据。具体操作可以使用以下命令:
mysqlbinlog binlog.00000X > binlog.sql
其中,binlog.00000X为备份文件中的binlog日志文件,binlog.sql为保存还原SQL语句的文件名。
4. 执行还原SQL语句
将binlog.sql文件中的SQL语句依次执行即可完成数据的还原操作。需要注意的是,由于binlog日志记录的是数据库的变更操作,因此在还原数据时需要保证执行的顺序与备份时的顺序一致,否则可能会导致数据不一致的问题。
需要注意的是,使用binlog进行备份和恢复数据需要一定的技术功底,建议在实际操作前进行充分的备份和测试。同时,也可以借助一些第三方工具,如MySQL Enterprise Backup、Percona XtraBackup等来简化备份和恢复操作。
三、注意事项
使用binlog进行备份和恢复数据库需要考虑以下几个方面:
1. 备份和恢复时需要保证数据库的一致性。
由于binlog日志记录的是数据库的变更操作,因此在备份和恢复时需要保证数据库的一致性。例如,在备份时需要使用FLUSH TABLES命令来将所有表的缓存数据刷新到磁盘中,以保证备份的数据是最新的。在恢复时,需要先关闭自动提交功能,然后按照备份时的顺序依次执行binlog日志文件中的SQL语句,以保证数据库的一致性。
2. 备份和恢复时需要考虑数据量和性能问题。
由于binlog日志记录的是数据库的变更操作,因此在备份和恢复时需要考虑数据量和性能问题。如果数据库中的数据量较大,binlog日志文件也会很大,备份和恢复时需要充分考虑磁盘空间和性能问题。可以使用压缩算法对binlog日志文件进行压缩,以减小备份文件的大小。同时,在恢复时也可以使用多线程或分批次执行SQL语句,以提高恢复的效率。
3. 备份和恢复时需要考虑数据库的特殊性质。
不同类型的数据库具有不同的特殊性质,例如事务性数据库和非事务性数据库在备份和恢复时需要采用不同的策略。在备份和恢复时,需要根据不同的数据库类型和特殊性质来选择合适的备份和恢复策略,以保证数据的完整性和一致性。
需要注意的是,使用binlog进行备份和恢复复杂数据库需要一定的技术功底和经验,建议在实际操作前进行充分的备份和测试,以保证操作的成功和可靠性。同时,也可以借助一些第三方工具,如MySQL Enterprise Backup、Percona XtraBackup等来简化备份和恢复操作。
相关文章:
MySQL 数据库 binLog 日志的使用
一、概念与作用 binlog(二进制日志)是MySQL数据库中的一种日志类型。它记录了数据库中的所有更改操作,例如插入、更新、删除操作。binlog以二进制形式存储,因此可以更高效地进行读取和解析。 binlog通常用于以下几个方面&#x…...
Apache Storm入门介绍之三分钟看懂Apache Storm
文章目录 0.前言1. 什么是 Apache Storm?1.1. Nimbus1.2. Zookeeper1.3. Supervisor1.4. Worker1.5 集群模式下各组件职责 2. 核心概念2.1基本架构和任务模型2.2 工作流程 3. 源码地址3.1. 代码结构3.1. 核心模块介绍 4. Storm入门实例0.创建java工程并引入依赖1. 创…...
RF手机天线仿真介绍(三):调谐开关分析
目录 简介调谐开关RON、COFF的影响分析不同位置的调谐器件coff影响分析不同位置的调谐器件Ron影响分析Coff引起谐振的解决示例 调谐开关VPEAK分析调谐开关Vpeak示例 简介 孔径调谐能调节天线的电长度,可将其谐振点切换到所需支持的工作频段。天线孔径调谐器通过改变…...
Ubuntu20.04 + QT5.14.2 + VTK8.2.0 + PCL 1.10 环境配置
目录 Ubuntu20.04 QT5.14.2 VTK8.2.0 PCL 1.10 环境配置一、VTK 编译和安装1、库依赖:2、下载资源:[下载VTK8.2.0](https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz)3、编译:4、安装5、qtcreator 配置编译的libQVTKWidgetPlugin.…...
GPT Prompt编写的艺术:如何提高AI模型的表现力
随着AI技术的迅速发展,人工智能模型变得越来越强大,能够协助我们完成各种任务。然而,如何更好地利用AI的能力仍然存在很大的探索空间。在与AI进行交互的过程中,我们主要依赖于Prompt,不管是直接与大模型交互࿰…...
Ubuntu18.04 安装opencv 4.8.0教程(亲测可用)
1. 安装准备 安装前需要下载一些必须的依赖项。 不同版本opencv依赖会有不同,具体见官网opencv安装 sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-…...
【腾讯云Cloud Studio实战训练营】React 快速构建点餐页面
前言: Cloud Studio是一个在线的云集成开发环境(IDE),可以让开发人员在浏览器中轻松地开发、测试、调试和部署应用程序。它提供了基于云的计算资源和工具,例如代码编辑器、编译器、调试器、版本控制系统和项目管理工具…...
自监督去噪:Noise2Self原理分析及实现 (Pytorch)
文章地址:https://arxiv.org/abs/1901.11365 代码地址: https://github.com/czbiohub-sf/noise2self 要点 Noise2Self方法不需要信号先验信息、噪声估计信息和干净的训练数据。唯一的假设就是噪声在测量的不同维度上表现出的统计独立性,而真实信号表现出一定的…...
docker容器学习笔记1
docker容器是干什么用的 docker就是一个轻量级的虚拟机,是一个容器,隔离性好,能够确保环境的统一,有效利用系统资源,轻松迁移和拓展。简单的可以理解为容器就是一个小型功能齐全的虚拟机。 实际上是如何使用的呢&…...
线程魔法:用Spring Boot的@Async注解开启异步世界
在现代的应用程序开发中,异步调用已成为提高性能和响应性的重要策略之一。通过使用Spring Boot框架,我们可以轻松地实现异步调用,从而在处理请求时能够同时执行耗时的操作,如发送电子邮件、处理文件等,而不会阻塞主线程…...
面试热题(接雨水问题)
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 我们看到题的第一步,永远是对入参进行判断 public int trap(int[] height) {if (height null) {return 0;}...} 但是我们想想看,接…...
Meta AI研究团队新AI模型: Llama 2 大语言模型
Llama是Facebook Research团队开发的基础语言模型集,旨在提供广泛的语言理解能力。它基于转换器架构,参数范围从7B到65B。通过使用Llama模型,研究人员和开发人员可以构建更先进的自然语言处理系统。您可以在GitHub上找到相关的代码和资源&…...
CSS水平垂直居中
1.利用定位 margin:auto 2.flex布局 3.grid布局 一、利用positionmargin:auto <style>.outer {position: relative; /*父亲相对定位*/width: 200px;height: 200px;background-color: red;}.inner {position: absolute; /*儿子绝对定位*/top: 0;bottom: 0;left: 0;ri…...
Yolov8-pose关键点检测:模型部署篇 | yolov8-pose.onnx python推理
💡💡💡本文解决什么问题:Yolov8-pose关键点训练得到的模型转换成onnx格式在python下完成推理 Yolov8-Pose关键点检测专栏介绍:https://blog.csdn.net/m0_63774211/category_12398833.html ✨✨✨手把手教你从数据标记到生成适合Yolov8-pose的yolo数据集; 🚀🚀�…...
Linux中提示No such file or directory解决方法
说明: 在linux下,./xxx.sh执行shell脚本时会提示No such file or directory。但shell明明存在,为什么就是会提示这个呢? 这种其实是因为编码方式不对,如你在win下编辑sh,然后直接复制到linux下面 实现&…...
Sklearn-使用SVC对iris数据集进行分类
Sklearn-使用SVC对iris数据集进行分类 iris数据集的加载训练svc模型输出混淆矩阵和分类报告使用Pipeline管道完成固定操作不使用Pipeline使用Pipeline 使用SVC对iris数据集进行分类预测 涉及内容包含: 数据集的加载,训练集和测试集的划分训练svc模型,对测试集的预测…...
项目经理必读:领导风格对项目成功的关键影响
引言 项目经理作为一个领导者的角色,他们需要协调各方资源,管理团队,推动项目的进行。为了完成这些任务,项目经理必须具备各种领导风格的灵活性,以应对项目中的各种变数和挑战。在这篇文章中,我们将讨论领…...
行业追踪,2023-08-04
自动复盘 2023-08-04 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...
双链表(带哨兵位头节点)
目录 编辑 双链表的初始化: 双链表的打印: 双链表的尾插: 双链表的头插: 双链表的尾删: 双链表的头删: 双链表pos位置之前的插入: 双链表pos位置的删除: 关于顺序表和链表…...
MySQL - LOAD DATA LOCAL INFILE将数据导入表中和 INTO OUTFILE (速度快)
文章目录 一、语法介绍二、数据分隔符介绍 :换行符说明: 三、示例LOAD DATA LOCAL INFILEINTO OUTFILE 总结 一、语法介绍 LOAD DATA[LOW_PRIORITY | CONCURRENT] [LOCAL]INFILE file_name[REPLACE | IGNORE]INTO TABLE tbl_name[PARTITION (partition_name [, par…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
【大厂机试题解法笔记】矩阵匹配
题目 从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150 输入格式 N M K N*M矩阵 输…...
