MySQL备份与恢复

ops/2024/9/25 21:21:24/

一、MySQL的数据库备份概述

1.数据库备份类型

(1)从物理与逻辑角度分类

物理备份可以分为冷备份,热备份和温备份。

冷备份:在数据库关闭状态下进行备份。

热备份:数据库处于运行状态下进行备份,备份方法依赖数据库的日志文件。

温备份:数据库锁定表格的状态进行备份。

(2)从数据库备份策略角度分类

数据库备份策略角度,可以分为完全备份,差异备份,增量备份

完全备份:对数据库进行完整备份,及对整个数据库,数据结构进行备份和 文件结构进行备份,保存的是备份完成时的数据库

差异备份:备份完全备份之后被修改的文件,备份的时间节点从完全备份起。

增量备份:以上次时间为节点,备份之间的数据变化,因而备份数据量小,占用空间小,备份速度快。

2.常见的备份方法

物理备份
备份数据库处于关闭状态,直接打包数据
备份速度快,恢复简单

常用的备份工具
mysqldump

启用二进制日志进行增量备份
进行增量备份,需要刷新二进制文件

第三方工具备份
MySQL热备份软件Percona XtraBackup

二、物理备份与恢复

1.物理冷备份与恢复

(数据备份)
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# mkdir /bak
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ls
bin  etc  games  include  lib  lib64  libexec  mysql  sbin  share  src
[root@localhost local]# tar zcvf /bak/mysql_$(date +%F).tar.gz mysql/

备注:
z 压缩
c 创建
v 详细信息
f   生成文件
F:格式化,单独提取年月日

(模拟故障)
[root@localhost backup]# systemctl start mysqld
[root@localhost backup]# mysql -uroot -ppwd123 -e 'drop database auth;'
[root@localhost backup]# mysql -u root -ppwd123 -e 'select * from auth.users;'
备注:
-e 直接在系统命令行进行,无需进入MySQL命令行

(数据恢复)

[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# cd /bak/
[root@localhost  bak]# tar zxvf mysql_2024-06-26.tar.gz 
[root@localhost backup]# cd /usr/local/
[root@localhost local]# mv mysql/ mysql.bak   (把系统文件进行重命名)

[root@localhost ~]# mv  /bak/mysql /usr/local/

[root@localhost local]# systemctl restart mysqld
[root@localhost local]# mysql -uroot -ppwd123 -e 'select * from auth.users;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------+------+
| id   | name |
+------+------+
|    1 | aaa  |
|    2 | bbb  |
|    3 | ccc  |
+------+------+
 

2.MySQLdump备份与恢复

(导出数据)
[root@localhost local]# mysqldump -uroot -ppwd123 auth users>/opt/auth-users.sql

语法解读:
将MySQL库中auth库中users表导出到opt目录下,重命名为auth-users.sql

[root@localhost opt]# mysqldump -uroot -ppwd123 auth>/opt/auth.sql      (导出数据库)
[root@localhost opt]# mysqldump -uroot -ppwd123  --opt--all-databases>/opt/all-data.sql    (备份所有数据库
备注:--opt:表示优化执行速度

(导入表)
已存在现有的数据库,可以将表导入任何现有的数据库
[root@localhost opt]# mysql -uroot -ppwd123 -e 'create database test';     (新建库)
root@localhost ~]# mysql -uroot -ppwd123 test</opt/auth-users.sql      (导入到其他库[root@localhost ~]# mysql -uroot -ppwd123 auth < /opt/auth-users.sql   ##导入到原始所在的库[root@localhost ~]# mysql -uroot -ppwd123 -e 'show tables from test;'

(导入库)
[root@localhost ~]# mysql -uroot -ppwd123 auth</opt/auth.sql

(全库还原)
[root@localhost ~]# mysql -uroot -ppwd123 </opt/all-data.sql

3.增量备份与恢复

      增量备份(incremental backup)是备份的一个类型,是指在一次完全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。

(启动二进制日志功能)
[root@localhost ~]# vim /etc/my.cnf
在[mysqld]模块下添加  
log-bin=mysql-bin      (二进制log)
server-id=1        (id标识)
binlog_format=MIXED     
[root@localhost ~]# systemctl restart mysqld

(生成新的日志文件)
[root@localhost ~]# cd /usr/local/mysql/data/
[root@localhost data]# mysqladmin -uroot -ppwd123 flush-logs    (更新日志文件)

(查看日志内容)
[root@localhost data]# mysqlbinlog --no-defaults --base64-output=DECODE-ROWS mysql-bin.000001
 

<在表中创建若干数据>
 

<模拟数据故障>
[root@localhost data]# mysql -uroot -ppwd123 -e 'drop table auth.users';
[root@localhost data]# mysql -uroot -ppwd123 -e 'select * from auth.users';

<恢复数据>
(恢复完全备份)
[root@localhost opt]# mysql -uroot -ppwd123 auth</opt/auth-users.sql 
[root@localhost opt]# mysql -uroot -ppwd123 -e 'select * from auth.users';
+------+----------+
| id   | name     |
+------+----------+
|    1 | zhangsan |
|    2 | lisi     |
+------+----------+

<恢复增量备份>
[root@localhost data]# mysqlbinlog --no-defaults --base64-output=DECODE-ROWS mysql-bin.000002       (查看日志内容)

备注:
-
no-defaults不读取任何选项文件其后需要直接跟日志文件或开始停止位置
--base64-output=DECODE-ROWS  文件加密,(仅查看文件可无)

[root@localhost data]# mysqlbinlog --no-defaults mysql-bin.000002 | mysql -uroot -ppwd123
[root@localhost data]# mysql -uroot -ppwd123 -e 'select * from auth.users' (查看文件是否完整)
+------+----------+
| id   | name     |
+------+----------+
|    1 | zhangsan |
|    2 | lisi     |
|  333 | aaa      |
|  333 | bbb      |
|  444 | ccc      |
|  555 | ddd      |
+------+----------+
 

<基于位置恢复>
<删除表中某一行>
[root@localhost data]# mysqladmin -u root -p flush-logs

[root@localhost data]# mysqlbinlog --no-defaults mysql-bin.000002
方法一:指定位置恢复
[root@localhost data]# mysqlbinlog --no-defaults --start-position='870' --stop-position='1012' mysql-bin.000002 | mysql -uroot -ppwd123
备注:
--start-position='870'   开始位置
--stop-position='1012'   结束位置

方法二:指定时间恢复
[root@localhost data]# mysqlbinlog --no-defaults --start-datetime='2024-06-27 14:54:06' --stop-datetime='2024-06-27 14:54:25' mysql-bin.000002 | mysql -uroot -ppwd123
 


http://www.ppmy.cn/ops/53005.html

相关文章

ComfyUI+PhotoMaker|一键创造个性化人物形象

ComfyUI和PhotoMaker&#xff0c;两款引领AI图像编辑潮流的软件&#xff0c;以其强大的功能和便捷的操作&#xff0c;深受广大艺术爱好者和专业人士的喜爱。本文将带你深入了解ComfyUI和PhotoMaker的结合使用&#xff0c;助你轻松打造个性化人物形象&#xff0c;让你的作品更加…

等保测评后的持续监控和安全运维体系建设

等保测评是中国特有的网络安全制度&#xff0c;旨在确保网络运营者履行安全保护义务&#xff0c;保障网络免受干扰、破坏或未经授权的访问。等保测评后的持续监控和安全运维体系建设是确保信息系统长期安全稳定运行的关键步骤。 持续监控 等保测评后&#xff0c;企业需要建立…

全国211大学名单及排名

序号 名称 省份 985 211 双一流 1 北京大学 北京 是 是 是 2 清华大学 北京 是 是 是 3 复旦大学 上海 是 是 是 4 上海交通大学 上海 是 是 是 5 浙江大学 浙江 是 是 是 6 国防科技大学 湖南 是 是 是 7 中国人民大学 北京 是 …

经典小游戏(一)C实现——三子棋

switch(input){case 1:printf("三子棋\n");//这里先测试是否会执行成功break;case 0:printf("退出游戏\n");break;default :printf("选择错误&#xff0c;请重新选择!\n");break;}}while(input);//直到输入的结果为假&#xff0c;循环才会结束} …

Docker 下载与安装以及配置

安装yum工具 yum install -y yum-ulits配置yum源 阿里云源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装Docker 17.03后为两个版本&#xff1a; 社区版&#xff08;Community Edition&#xff0c;缩写为 CE&#x…

NAPI篇【2】——OpenHarmony含NAPI工程cpp详解

NAPI篇【1】中&#xff0c;讲解如何创建一个支持NAPI的OpenHarmony工程&#xff0c;其中有一个步骤是在OpenHarmony工程添加Harmony的NAPI工程中的cpp文件夹。cpp文件夹包含支持NAPI所需要的c/c源码、接口导出文件以及编译文件等。本文将进行详解其中各文件的作用&#xff0c;帮…

Master PDF Editor v5 解锁版安装教程(小巧多功能PDF )

前言 Master PDF Editor&#xff0c;小巧的多功能PDF编辑器&#xff0c;轻松查看&#xff0c;创建&#xff0c;修改&#xff0c;批注&#xff0c;签名&#xff0c;扫描&#xff0c;OCR和打印PDF文档。高级注释工具&#xff0c;可以添加任意便笺指示对象突出显示&#xff0c;加…

mac 安装mysql启动报错 ERROR!The server quit without update PID file

发现问题&#xff1a; mac安装mysql初次启动报错&#xff1a; 一般出现这种问题&#xff0c;大多是文件夹权限&#xff0c;或者以前安装mysql卸载不干净导致。首先需要先确定问题出在哪&#xff1f;根据提示我们可以打开mysql的启动目录&#xff0c;查看启动日志。 问题解决&a…