【MySQL】数据库之日志管理、备份与恢复

news2025/2/4 20:42:19

目录

一、MySQL的日志管理

二、MySQL的完全备份与恢复

物理冷备份(完全备份)与恢复

数据库上云迁移的方案?

逻辑热备份(完全备份)与恢复

三、MySQL的增量备份与恢复

1、手动增量备份

2、脚本增量备份

3、增量备份恢复

4、增量备份断点恢复(请看上一篇博客)

第一种:基于位置恢复

第二种:基于时间点恢复

四、总结


一、MySQL的日志管理

MySQL 的日志默认保存位置为 /usr/local/mysql/data

vim /etc/my.cnf
[mysqld]
##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启
log-error=/usr/local/mysql/data/mysql_error.log					
#指定日志的保存位置和文件名

##通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log

##二进制日志(binlog),用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启
log-bin=mysql-bin				
#也可以 log_bin=mysql-bin

##慢查询日志,用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5												
#设置超过5秒执行的语句被记录,缺省时为10秒

 

 

show variables like 'general%';									
#查看通用查询日志是否开启

show variables like 'log_bin%';									
#查看二进制日志是否开启


show variables like '%slow%';									
#查看慢查询日功能是否开启
show variables like 'long_query_time';							
#查看慢查询时间设置

set global slow_query_log=ON;				
#在数据库中设置开启慢查询的方法

二、MySQL的完全备份与恢复

物理冷备份(完全备份)与恢复

[root@localhost /usr/local/mysql]#systemctl stop mysqld
[root@localhost /usr/local/mysql]#tar cf ~/backup/mysql_backup_$(date +%F).tar.gz ./data/
[root@localhost /usr/local/mysql]#cd -
/root/backup
[root@localhost ~/backup]#ls
mysql_backup_2023-12-26.tar.gz
[root@localhost ~/backup]#scp mysql_backup_2023-12-26.tar.gz  192.168.20.16:~/

[root@localhost ~]#systemctl stop mysqld
[root@localhost ~]#ls
anaconda-ks.cfg  initial-setup-ks.cfg  mysql_backup_2023-12-26.tar.gz  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost ~]#tar xf mysql_backup_2023-12-26.tar.gz 
[root@localhost ~]#ls
anaconda-ks.cfg  data  initial-setup-ks.cfg  mysql_backup_2023-12-26.tar.gz  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost ~]#cd /usr/local/mysql/
[root@localhost /usr/local/mysql]#ls
bin  data  docs  include  lib  LICENSE  man  mysql-test  README  README-test  share  support-files  usr
[root@localhost /usr/local/mysql]#mv data/ data_old
[root@localhost /usr/local/mysql]#mv ~/data/ data
[root@localhost /usr/local/mysql]#ls
bin  data  data_old  docs  include  lib  LICENSE  man  mysql-test  README  README-test  share  support-files  usr
[root@localhost /usr/local/mysql]#systemctl start mysqld
[root@localhost /usr/local/mysql]#mysql -uroot -pabc123

数据库上云迁移的方案?

 方案一:使用脱机冷备份

冷迁移----物理冷备
首先需要关闭数据库服务;
然后用tar对数据库进行打包
再将tar包传给另一台主机
然后将其解压再恢复

方案二:

热迁移---阿里云自带的热迁移工具DTS(数据传输服务)

逻辑热备份(完全备份)与恢复

mysqldump实现逻辑备份
mysqldump -u用户名 -p密码 --databases 库1 [库2 ...] > /存储路径/xxx.sql
##备份库以及库中所有表的表数据及表结构

mysqldump -u用户名 -p密码 --all-databases  > /存储路径/xxx.sql
##备份所有的库以及其表数据

mysqldump -u用户名 -p密码 库名 > /存储路径/xxx.sql
##只备份指定库中的所有表数据,不包含库对象

mysqldump -u用户名 -p密码 库名 表1 [表2 ] > /存储路径/xxx.sql
##备份指定库中的单个或多个表的数据和表结构,不包含库对象

mysqldump -u用户名 -p密码 -d 库名 表1 [表2 ] > /存储路径/xxx.sql
##只备份指定库中的单个或多个表的结构,不包含库对象,也不包含表的数据

方法一:
先登录到数据库,然后使用source +/存储路径/xxx.sql 进行恢复(如果sql文件是只备份了表数据的文件,那么需要先创建库,并use切换库后才能执行该命令)

方法二:
使用sql语句来进行恢复
mysql -u用户名 -p密码 < /存储路径/xxx.sql
cat /存储路径/xxx.sql | mysql -u用户名 -p密码 
##恢复库
mysql -u用户名 -p密码  指定库名 < /存储路径/xxx.sql
cat /存储路径/xxx.sql | mysql -u用户名 -p密码 指定库名 
##恢复库中的表,且需要库是存在的

 

三、MySQL的增量备份与恢复

增量备份是采用的物理二进制日志文件分割来完成增量备份的

二进制日志会定期的分割,比如当文件超过1G 会生成新的日志文件,mysql_bin.后面跟的是索引号,每次生成一个二进制文件,就会在mysql_bin.index文件中添加一个新的文件,mysql_bin.index文件中记录着所有的二进制日志文件的名称

1、手动增量备份

手动增量备份的方式有三种:
第一种:手动刷新
mysqladmin -uroot -pabc123 flush-logs

第二种:重启mysqld服务
systemctl restart mysqld

第三种:二进制日志文件的大小达到1G的时候会进行自动分割
与max_binlog_size大小相关
默认为1073741824字节等于1G

2、脚本增量备份

#!/bin/bash
##增量备份脚本
DIRLOGS=/var/log/mysql
LOGS_HOME=/usr/local/mysql/data
TODAY=$(data +%F)
YESTERDAY=$(date -d '-1 day' +%F)
USER=root
PASSWORD=abc123

#先判断收集备份文件的目录是否存在,不存在则创建目录
[ -d $DIRLOGS ]||mkdir -p $DIRLOGS

##备份二进制日志的索引文件到指定目录并加入时间标记
\cp  $LOGS_HOME/mysql_bin.index $DIRLOGS/mysql_bin.index.$TODAY

#先判断昨天的二进制日志的索引文件是否存在,存在则作为过滤条件过滤出今天需要备份的二进制日志文件名称
if [ -f $DIRLOGS/mysql_bin.index.$YESTERDAY ];then
    BINGLOG=$(cat $DIRLOGS/mysql_bin.index.$TODAY|grep -v $(cat $DIRLOGS/mysql_bin.index.$YESTERDAY)|awk -F/ '{print $2}')
  else
    BINGLOG=$(cat $DIRLOGS/mysql_bin.index.$TODAY|awk -F/ '{print $2}')
fi

##刷新生成新的二进制日志文件,便于收集最新的二进制日志
mysqladmin -u"$USER" -p"$PASSWORD" flush-logs &>/dev/null

##使用for循环,对所有的新产生的binlog文件进行备份
for i in $BINGLOG
do
mv $LOGS_HOME/$i  $DIRLOGS/$i.$TODAY
done

3、增量备份恢复

mysqlbinlog --no-defaults 指定binlog |mysql -u用户名 -p密码 

 

 

4、增量备份断点恢复(请看上一篇博客)

第一种:基于位置恢复

基于位置点恢复
mysqlbinlog --no-defaults --start-position="" --stop-position="" 指定binlog |mysql -u用户名 -p密码 

第二种:基于时间点恢复

基于时间点恢复
mysqlbinlog --no-defaults --start-datetime="" --stop-datetime="" 指定binlog |mysql -u用户名 -p密码 

如果需要恢复到某条sql语句之前的所有数据,就stop在这个语句的位置点或时间点之前
如果需要恢复某条sql语句及其之后的所有数据,就从这个语句的位置点或时间点开始start 

四、总结

备份方法
物理备份:直接对数据库的物理文件(数据文件、日志文件等)进行备份
逻辑备份:对数据库的库和表对象以SQL语言的形式导出进行备份

备份策略
完全备份:每次备份都备份完整的库或者表数据
差异备份:只备份上一次完全备份后的更新数据
增量备份:每次备份只备份上一次完全备份或增量备份后的更新数据


数据库上云迁移     冷迁移     物理冷备      先关闭数据库,再打包备份+恢复
                   热迁移     阿里云 DTS

完全备份
物理冷备:先关闭数据库,使用tar命令打包备份数据库的数据目录和文件  mysql/data/

mysqldump逻辑热备
mysqldump -uXXX -pXXX  --databases 库1 [库2 ....] > XXX.sql       备份一个或多个库及库中所有的表数据
mysqldump -uXXX -pXXX  --all-databases > XXX.sql                  备份所有的库
mysqldump -uXXX -pXXX  库名 > XXX.sql                             备份指定库中的所有的表数据,不包含库对象
mysqldump -uXXX -pXXX  库名 表1 [表2 ....] > XXX.sql              备份指定库中的一个或多个表数据,不包含库对象

xtrabackup物理热备


完全恢复
先登录到数据库,再执行 source XXX.sql (如果sql文件是只备份了表数据的文件,需要先创建库并 use 切换库后再执行)

mysql -uXXX -pXXX < XXX.sql         cat XXX.sql | mysql -uXXX -pXXX                          恢复库
mysql -uXXX -pXXX 库名 < XXX.sql    cat XXX.sql | mysql -uXXX -pXXX 库名                     恢复表


增量备份
通过刷新二进制日志间接实现增量备份
mysqladmin -uXXX -pXXX flush-logs

查看二进制日志内容
mysqlbinlog --no-defaults --base64-output=decode-rows -v <BINLOG>

使用二进制日志增量恢复
mysqlbinlog --no-defaults <BINLOG> | mysql -uXXX -pXXX

断点恢复
基于位置点恢复
mysqlbinlog --no-defaults --start-position='开始位置点' --stop-position='结束位置点'  <BINLOG> | mysql -uXXX -pXXX

基于时间点恢复
mysqlbinlog --no-defaults --start-datetime='YYYY-mm-dd HH:MM:SS' --stop-position='YYYY-mm-dd HH:MM:SS'  <BINLOG> | mysql -uXXX -pXXX

如果需要恢复到某条sql语句之前的所有数据,就stop在这个语句的位置点或时间点之前
如果需要恢复某条sql语句及其之后的所有数据,就从这个语句的位置点或时间点开始start

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

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

相关文章

归并排序之C++实现

描述 归并排序是一种经典的排序算法&#xff0c;采用分治的思想。 归并排序是一种基于分治思想的经典排序算法。它将待排序的数组不断地分成两个子数组&#xff0c;直到每个子数组只有一个元素。然后&#xff0c;对每个子数组进行归并排序&#xff0c;即不断地将两个有序的子数…

ros2中ros_gz_bridge/gazebo安装的注意事项

这个搞错了&#xff1a;这个是安装ros_gz_bridge的&#xff0c;不是安装gazebo的 AT:如果是安装的Harmonic&#xff0c;在安装ros_gz_bridge的时候要从源码编译 ros2完整版里面好像已经包含了gazebo的一个版本 包名应该就是叫ros-humble-ros-ign-gazebo 所以gazebo是作为一个普…

使用tesla gpu 加速大模型,ffmpeg,unity 和 UE等二三维应用

我们知道tesla gpu 没有显示器接口&#xff0c;那么在windows中怎么使用加速unity ue这种三维编辑器呢&#xff0c;答案就是改变注册表来加速相应的三维渲染程序. 1 tesla gpu p40 p100 加速 在windows中使用regedit 来改变 核显配置&#xff0c; 让p100 p40 等等显卡通过核显…

docker-compose部署kafka

docker-compose.yml配置 version: "3" services:kafka:image: bitnami/kafka:latestports:- 7050:7050environment:- KAFKA_ENABLE_KRAFTyes- KAFKA_CFG_PROCESS_ROLESbroker,controller- KAFKA_CFG_CONTROLLER_LISTENER_NAMESCONTROLLER- KAFKA_CFG_LISTENERSPLAIN…

国企和互联网怎么选?

2023年马上就要结束了&#xff0c;天气还是很冷&#xff0c;大家今年的总结做了吗&#xff1f; 正好这两天看到另外一个我关注的博主更新了一个自己的年终总结。其中有一些话令人印象深刻。 未来对我来说&#xff0c;毫无吸引力。原因很简单&#xff0c;当下已经足够令人清醒、…

WordPress主题大前端DUX v8.3源码下载

DUX主题8.3版本更新内容&#xff1a; 新增&#xff1a;Cloudflare Turnstile 免费验证功能 新增&#xff1a;子菜单页面模版&#xff0c;支持多级页面 新增&#xff1a;手机端文章内表格自动出现横向滚动条&#xff0c;可集体或单独设置滚动宽度 新增&#xff1a;标签云页面模版…

Linux:jumpserver过滤命令(5)

我们分配完Linux资产后&#xff0c;如果想让用户无法执行某些命令可以直接写入过滤&#xff0c;当执行带有改字段就会自动拒绝 注意&#xff1a;是字段 当我们禁用了passwd&#xff0c;全部带有passwd的东西都会被禁掉 passwd修改密码的命令和/etc/passwd都会被禁了&#xf…

tensorrt环境安装-可用于深度学习模型加速推理

安装python环境 在anaconda的命令行中输入conda create --name py38 python3.8 安装python环境 然后安装深度学习框架pytorch环境 Previous PyTorch Versions | PyTorch 在这里面选择合适的环境 conda install pytorch1.8.0 torchvision0.9.0 torchaudio0.8.0 cudatoolki…

智能优化算法应用:基于驾驶训练算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于驾驶训练算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于驾驶训练算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.驾驶训练算法4.实验参数设定5.算法结果6.…

【yolov5问题解决】Dataset autodownload failure

自己下载该数据集 https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip 然后解压放到平行目录下

算法(图网格)-岛屿问题-岛屿数量

岛屿数量 给你一个由 ‘1’&#xff08;陆地&#xff09;和 ‘0’&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以…

Qt 中使用 MySQL 数据库保姆级教程(上)

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 在 Qt 中默认只搭载了 QSqlLite 数据库驱动&#xff0c;若要使用其他数据库需要自己下载数据库&#xff0c;并将数据库驱动加载到…

SaaS医院信息化云his系统源码带电子病历+LIS系统

一、系统概述 •采用主流成熟技术&#xff0c;软件结构简洁、代码规范易阅读&#xff0c;SaaS 应用&#xff0c;全浏览器访问前后端分离&#xff0c;多服务协同&#xff0c;服务可拆分&#xff0c;功能易扩展&#xff1b; •支持多样化灵活配置&#xff0c;提取大量公共参数&am…

VisualStudio项目中多个同名文件处理

现象 在vs2019环境中&#xff0c;现在开发一个较大的C项目&#xff0c;它的源文件在多个文件夹中组织(在文件系统上)。在其中两个文件夹中&#xff0c;有几个同名的文件。如&#xff1a; .\ConsoleApplication1\JAMGEN_CONFIG_x4_test\firls.c .\ConsoleApplication1\NoiseCo…

网工内推 | 技术支持、解决方案工程师,RHCA认证优先,带薪年假

01 天融信 招聘岗位&#xff1a;售后技术支持工程师 职责描述&#xff1a; 1.负责公司运营商态势安全项目系统远程维护与运营支持工作。 2.负责远程对态势平台、数据探针进行日常巡检&#xff0c;及时发现故障问题&#xff0c;并反馈处置。 3.负责远程支撑态势平台的功能考核&…

TwIST算法MALTLAB主程序详解

TwIST算法MALTLAB主程序详解 关于TwIST算法的具体原理可以参考&#xff1a; 链接: https://ieeexplore.ieee.org/abstract/document/4358846 链接: https://blog.csdn.net/jbb0523/article/details/52193209 该算法的MATLAB源代码&#xff1a; 链接: http://www.lx.it.pt/~bi…

C++ DAY1 作业

1.定义自己的命名空间myspace&#xff0c;并在myspace中定义一个字符串&#xff0c;并实现求字符串长度 #include <iostream>using namespace std; namespace myspace {string str;int length_fun(){getline(cin,str);int i 0;while(str[i] ! \0){i;}return i;}} using…

How to Clean Text for Machine Learning with Python

NLP 在本教程中&#xff0c;您将了解如何清理和准备文本&#xff0c;以便使用机器学习进行建模。 完成本教程后&#xff0c;您将了解&#xff1a; 如何通过开发自己的非常简单的文本清理工具开始。 如何更上一层楼并使用 NLTK 库中更复杂的方法。 在使用现代文本表示方法&am…

论文润色有用吗 神码ai

大家好&#xff0c;今天来聊聊论文润色有用吗&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 标题&#xff1a;论文润色有用吗&#xff1f;专业软件助你提升论文质量 一、…

sheng的学习笔记-【中】【吴恩达课后测验】Course 4 -卷积神经网络 - 第二周测验

课程4_第2周_测验题 目录 第一题 1.在典型的卷积神经网络中&#xff0c;随着网络的深度增加&#xff0c;你能看到的现象是&#xff1f; A. 【  】 n H n_H nH​和 n W n_W nW​增加&#xff0c;同时 n C n_C nC​减少 B. 【  】 n H n_H nH​和 n W n_W nW​减少&#x…