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…...
告别卡顿!5个GHelper技巧让你的华硕笔记本重获新生
告别卡顿!5个GHelper技巧让你的华硕笔记本重获新生 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar,…...
中药小分子靶点筛选实战:8种主流技术优缺点对比与选型指南
中药小分子靶点筛选实战:8种主流技术优缺点对比与选型指南 在中药现代化研究的浪潮中,小分子靶点筛选技术正成为连接传统药效与现代药理的关键桥梁。不同于西药研发中常见的单靶点策略,中药小分子往往展现出"多靶点、多通路"的复杂…...
CLIP模型调优新思路:用CoCoOp实现动态提示学习(附代码实战)
CLIP模型调优新思路:用CoCoOp实现动态提示学习(附代码实战) 在计算机视觉与自然语言处理的交叉领域,视觉语言模型正掀起一场革命。CLIP作为这一领域的里程碑式模型,通过对比学习将图像和文本映射到同一语义空间&#x…...
Obsidian Excel插件:在笔记中轻松管理电子表格的完整指南
Obsidian Excel插件:在笔记中轻松管理电子表格的完整指南 【免费下载链接】obsidian-excel 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-excel 在知识管理工具Obsidian中,Excel表格功能一直是用户期待的重要扩展。Obsidian Excel插件…...
开发者实操手册:HY-MT1.8B通过Chainlit构建对话界面
开发者实操手册:HY-MT1.8B通过Chainlit构建对话界面 1. 开篇:为什么你需要一个翻译对话界面? 想象一下,你正在开发一个多语言应用,或者需要处理大量跨语言的文档。传统的翻译工具要么是网页版,要么是API调…...
Ostrakon-VL多模态模型效果展示:商品全扫描结果终端打印动态演示
Ostrakon-VL多模态模型效果展示:商品全扫描结果终端打印动态演示 1. 像素特工终端介绍 这是一个基于Ostrakon-VL-8B多模态大模型开发的Web交互终端,专门针对零售与餐饮场景进行了优化。与传统工业级UI不同,我们采用了高饱和度的像素艺术风格…...
AudioSeal部署教程:NVIDIA Container Toolkit集成与GPU容器化运行验证
AudioSeal部署教程:NVIDIA Container Toolkit集成与GPU容器化运行验证 1. 项目概述 AudioSeal是Meta开源的专业级语音水印系统,专门用于AI生成音频的检测和溯源。这个工具能够在音频中嵌入和检测数字水印,就像给音频文件打上独特的"指…...
Ollama部署EmbeddingGemma-300m常见问题全解:从报错到实战
Ollama部署EmbeddingGemma-300m常见问题全解:从报错到实战 1. 为什么选择EmbeddingGemma-300m? EmbeddingGemma-300m是谷歌推出的轻量级文本嵌入模型,仅有3亿参数却继承了Gemini系列模型的强大能力。这个模型特别适合需要在本地环境部署语义…...
Vue + G 实战:打造高校学生打卡数据可视化大屏米
1、普通的insert into 如果(主键/唯一建)存在,则会报错 新需求:就算冲突也不报错,用其他处理逻辑 回到顶部 2、基本语法(INSERT INTO ... ON CONFLICT (...) DO (UPDATE SET ...)/(NOTHING)) 语…...
Spring Cloud进阶--分布式权限校验OAuth痉
一、核心问题及解决方案(按踩坑频率排序) 问题 1:误删他人持有锁——最基础也最易犯的漏洞 成因:释放锁时未做身份校验,直接执行 DEL 命令删除键。典型场景:服务 A 持有锁后,业务逻辑耗时超过锁…...
