当前位置: 首页 > news >正文

mysql数据库备份与恢复

mysql数据备份:

数据备份方式

  • 物理备份:
  • 冷备:.冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库
  • 热备:一般用于保证服务正常不间断运行,用两台机器作为服务机器,一台用于实际数据库操作应用,另外一台实时的从前者中获取数据以保持数据一致.如果当前的机器熄火,备份的机器立马取代当前的机器继续提供服务
  • 冷备常用命令:cp tar scp …
  • 逻辑备份:
  • mysqldump //备份命令
  • mysql /恢复数据命令

1. 物理备份及恢复:

1.1. 备份操作:

实例1:
mkdir -p /data/mysql
cp -r /var/lib/mysql/ /data/mysql/mysql.bak
实例2:
tar -zcvf /data/mysql/mysql.tar.gz  /var/lib/mysql
实例3:
#在备份数据库创建备份目录:
mkdir /data
#备份数据
scp -r /var/lib/mysql  192.168.2.20:/data/mysql.bak

2. Mysqldump备份:

2.1. 只备份表,不备份数据本身:

备份mysql数据库中的所有表,但是不会自动生成创建mysql数据库的语句:
[root@www ~]# mysqldump -uroot -p1234  mysql  > /root/mysql.sql

2.2. 备份数据库与表:

备份mysql数据库中的所有表,并且会生成创建mysql数据库的SQL语句,也就是导入时不需要先创建数据库:
[root@www ~]# mysqldump -uroot -p1234 --databases mysql  > /root/mysql.sql

2.3. 备份多个数据库:

备份数据库MySQL、ys到/root/ys_mysql.sql
[root@www ~]# mysqldump -uroot -p1234 --databases mysql ys  > /root/ys_mysql.sql

2.4. 备份所有数据库:

[root@www ~]# mysqldump -uroot -p1234 --all-databases >/root/all.sql
或者:
[root@www ~]# mysqldump -uroot -p1234 -A >/root/all.sql

2.5. 备份mysql数据库,并且记录pos点:

[root@www ~]# mysqldump -uroot -p1234 --master-data mysql > /root/mysql.sql

2.6. 备份数据库,并刷新日志:

[root@www ~]# mysqldump -uroot -p1234 --master-data --flush-logs mysql > /root/mysql.sql

2.3. 数据库的恢复:

[root@www ~]# mysqldump -uroot -p1234 --databases ys > /root/ys.sql
首先把ys数据库删除
mysql> drop database ys;
Query OK, 31 rows affected, 2 warnings (0.06 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| mysql                |
| sys                 |
+--------------------+
4 rows in set (0.00 sec)
mysql> exit
Bye
## 恢复数据库ys
[root@www ~]# mysql -uroot -p1234 < /root/ys.sql 
[root@www ~]#  mysql -uroot -p1234
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| sys                |
| mysql              |
| ys                 |
+--------------------+
4 rows in set (0.00 sec)或者是:mysql> source /root/ys.sql;   ---source 命令导入数据库需要先登录到数库终端:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| sys                |
| mysql              |
| ys                 |
+--------------------+
4 rows in set (0.00 sec) 

3. 增量备份与恢复

  • 增量备份与恢复的特点
  • 增量备份的优点是没有重复数据,备份量不大,时间短。但缺点也很明显,需要建立在上次完全备份及完全备份之后所有的增量才能恢复。

3.1. binlog日志概述:

  1. 什么是binlog日志?
  2. 也称作二进制日志
  3. mysql服务日志文件的一种
  4. 记录除查询外的所有SQL语句
  5. 可用于数据备份和恢复
  6. 配置mysql主从同步的必要条件

3.2. 启动日志

配置项用途
server_id=数字指定id值(1-255)
log_bin[=目录名/文件名]启用binlog日志
max_binlog_size=数值m指定binlog日志文件容量(默认1G)
[root@localhost ~]# vim /etc/my.cnf
修改内容如下:
[mysqld]
.....
log_bin
server_id=100
[root@localhost ~]# systemctl restart mysqld
###查看binlog日志是否开启
登录数据库
mysql> show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| localhost-bin.000001 |      154 |              |                  |                   |
+----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
  • binlog相关文件默认存放在/var/lib/mysql/
  1. 主机名-bin.index 索引文件
  2. 主机名-bin.000001 第一个二进制文件
  3. 主机名-bin.000002 第二个二进制文件
  • 正常情况下binlog二进制文件默认1G容量,超过重新创建新的binlog二进制文件,想生成新的binlog日志文件方法如下:
1.重启mysql服务
systemctl   restart  mysqld
或者:
mysql  -root -p密码  -e 'flush logs'
或者:
mysqldump  --flush-logs

3.3.增量备份

  • 定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些文件保存到一个安全的地方即完成了一个时间段的增量备份
##创建数据库
create database school default charset=utf8mb4;
##创建表格
use school;
create table stuinfo(-> id int primary key auto_increment,-> name char(20) not null,-> sex enum('boy','girl') not null,-> age int unsigned not null,-> likes set('run','go fishing','Listen to the music','Play basketball') default'run,play basketball');
##往stuinfo表格里插入数据
insert into stuinfo values(1,'bob','boy',25,'run,go fishing');
##查看表格数据:
select * from stuinfo;
+----+------+-----+-----+----------------+
| id | name | sex | age | likes          |
+----+------+-----+-----+----------------+
| 1  | bob  | boy | 25  | run,go fishing |
+----+------+-----+-----+----------------+
##退出数据库并使用mysqldump完全备份school数据库并重新创建一个binlog文件。
exit    ---退出数据库
mkdir /data ---创建存放数据的目录
mysqldump -uroot -p1234  --flush-logs -B school > /data/$(date +%Y-%m-%d)-school.sql
ls /data/
2023-02-14-school.sql
##进入数据库继续往表格里插入数据
use school;
insert into stuinfo values(2,'tom','boy',28,'run,play basketball');
select * from stuinfo;
+----+------+-----+-----+---------------------+
| id | name | sex | age | likes               |
+----+------+-----+-----+---------------------+
| 1  | bob  | boy | 25  | run,go fishing      |
| 2  | tom  | boy | 28  | run,Play basketball |
+----+------+-----+-----+---------------------+
##退出数据库生成增量备份文件
exit;    ---退出数据库
mysql -uroot -p1234 -e "show master status;flush logs"    ----查看当前的binlog文件名称,然后创建一个新的binlog文件
+----------------------+----------+--------------+------------------+-------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| localhost-bin.000002 |      436 |              |                  |                   |
+----------------------+----------+--------------+------------------+-------------------+
##把localhost-bin.000002文件拷贝到/data下并修改当前日期作为增量备份文件
cp -r /var/lib/mysql/localhost-bin.000002 /data/
mv /data/localhost-bin.000002 /data/$(date +%Y-%m-%d)-localhost-bin.000002
ls /data/
2023-02-14-localhost-bin.000002  2023-02-14-school.sql

3.4. 数据恢复

##删除school的所有表
drop table stuinfo;
##查看还有其他表格
show tables;
+------------------+
| Tables_in_school |
+------------------+
+------------------+
##退出数据库,恢复数据
quit;
mysql -uroot -p1234 < /data/2023-02-14-school.sql  ---先恢复完全备份的文件
mysqlbinlog /data/2023-02-14-localhost-bin.000002 | mysql -uroot -p1234  --恢复增量备份的部分。

3.5.恢复指定范围的数据

  • 语法:
mysqlbinlog  选项  binlog日志名称 | mysql -uroot -p密码

在这里插入图片描述

3.5.1. 查看binlog日志文件

[root@localhost ~]# mysqlbinlog /data/2023-02-14-localhost-bin.000002

可以看的出来这种日志格式不易看懂

3.5.2. 修改日志记录格式

##查看当前日志记录格式
mysql> show variables like "binlog_format";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.00 sec)
三种记录格式:
1.statement    报表模式
2.row          行模式
3.mixed        混合模式##修改日志记录格式:
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
....
binlog_format=mixed
[root@localhost ~]# systemctl restart mysqld
###查看是否修改成功
mysql> show variables like "binlog_format";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | MIXED |
+---------------+-------+
1 row in set (0.01 sec)

3.5.3. 恢复指定范围数据:

##往stuinfo表格中插入数据:
insert into stuinfo values(3,'grace','girl',20,'run,play basketball');
insert into stuinfo values(4,'andy','boy',23,'play basketball');
select * from stuinfo;
+----+-------+------+-----+---------------------+
| id | name  | sex  | age | likes               |
+----+-------+------+-----+---------------------+
| 1  | bob   | boy  | 25  | run,go fishing      |
| 2  | tom   | boy  | 28  | run,Play basketball |
| 3  | grace | girl | 20  | run,Play basketball |
| 4  | andy  | boy  | 23  | Play basketball     |
+----+-------+------+-----+---------------------+
##删除grace这个数据
delete from stuinfo where name='grace';
select * from stuinfo;
+----+------+-----+-----+---------------------+
| id | name | sex | age | likes               |
+----+------+-----+-----+---------------------+
| 1  | bob  | boy | 25  | run,go fishing      |
| 2  | tom  | boy | 28  | run,Play basketball |
| 4  | andy | boy | 23  | Play basketball     |
+----+------+-----+-----+---------------------+
##查看当前的binlog日志文件名称;
show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| localhost-bin.000006 | 1095     |              |                  |                   |
+----------------------+----------+--------------+------------------+-------------------+
### 恢复grace的数据信息
[root@localhost ~]# mysqlbinlog /var/lib/mysql/localhost-bin.000006   ---查看binlog日志内容
# at 302   ---起始pos值
#230214 17:27:39 server id 100  end_log_pos 449 CRC32 0x2dbf2580        Query   thread_id=3     exec_time=0     error_code=0
use `school`/*!*/;
SET TIMESTAMP=1676366859/*!*/;
insert into stuinfo values(3,'grace','girl',20,'run,play basketball')
/*!*/;
# at 449
#230214 17:27:39 server id 100  end_log_pos 480 CRC32 0x3116b5d3        Xid = 21
COMMIT/*!*/;      ---回车操作
# at 480          ---结束pos值
#230214 17:28:12 server id 100  end_log_pos 545 CRC32 0x0b918b41        Anonymous_GTID  last_committed=1        sequence_number=2 rbr_only=no
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 545
[root@localhost ~]# mysqlbinlog --start-position=302 --stop-position=480 /var/lib/mysql/localhost-bin.000006 | mysql -uroot -p1234
或者
[root@localhost ~]# mysqlbinlog --start-datetime="2023-02-14 17:27:39" --stop-datetime="2023-02-14 17:28:12"  /var/lib/mysql/localhost-bin.000006 | mysql -uroot -p1234
###查看是否恢复:
select * from stuinfo;
+----+-------+------+-----+---------------------+
| id | name  | sex  | age | likes               |
+----+-------+------+-----+---------------------+
| 1  | bob   | boy  | 25  | run,go fishing      |
| 2  | tom   | boy  | 28  | run,Play basketball |
| 3  | grace | girl | 20  | run,Play basketball |
| 4  | andy  | boy  | 23  | Play basketball     |
+----+-------+------+-----+---------------------+

相关文章:

mysql数据库备份与恢复

mysql数据备份&#xff1a; 数据备份方式 物理备份&#xff1a; 冷备&#xff1a;.冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库热备&#xff1a;一般用于保证服务正常不间断运行&#xff0c;用两台机器作为服务机器&#xff0c;一台用于实际数据库操作应用,另外…...

《NFL橄榄球》:辛辛那提猛虎·橄榄1号位

辛辛那提猛虎&#xff08;英语&#xff1a;Cincinnati Bengals&#xff09;&#xff0c;又译辛辛那提孟加拉虎&#xff0c;是一支职业美式橄榄球球队位于俄亥俄州辛辛那提。他们现时为美联北区的其中一支球队&#xff0c;他们在1968年加入美国橄榄球联合会&#xff0c;并在1970…...

2、线程、块和网格

目录一、线程、块、网格概念二、代码分析2.1 打印第一个线程块的第一线程2.2 打印当前线程块的当前线程2.3 获取当前是第几个线程一、线程、块、网格概念 CUDA的软件架构由网格&#xff08;Grid&#xff09;、线程块&#xff08;Block&#xff09;和线程&#xff08;Thread&am…...

C++ 算法主题系列之贪心算法的贪心之术

1. 前言 贪心算法是一种常见算法。是以人性之念的算法&#xff0c;面对众多选择时&#xff0c;总是趋利而行。 因贪心算法以眼前利益为先&#xff0c;故总能保证当前的选择是最好的&#xff0c;但无法时时保证最终的选择是最好的。当然&#xff0c;在局部利益最大化的同时&am…...

请注意,PDF正在传播恶意软件

据Bleeping Computer消息&#xff0c;安全研究人员发现了一种新型的恶意软件传播活动&#xff0c;攻击者通过使用PDF附件夹带恶意的Word文档&#xff0c;从而使用户感染恶意软件。 类似的恶意软件传播方式在以往可不多见。在大多数人的印象中&#xff0c;电子邮件是夹带加载了恶…...

【Kubernetes】【二】环境搭建 环境初始化

本章节主要介绍如何搭建kubernetes的集群环境 环境规划 集群类型 kubernetes集群大体上分为两类&#xff1a;一主多从和多主多从。 一主多从&#xff1a;一台Master节点和多台Node节点&#xff0c;搭建简单&#xff0c;但是有单机故障风险&#xff0c;适合用于测试环境多主…...

Python:每日一题之发现环(DFS)

题目描述 小明的实验室有 N 台电脑&#xff0c;编号 1⋯N。原本这 N 台电脑之间有 N−1 条数据链接相连&#xff0c;恰好构成一个树形网络。在树形网络上&#xff0c;任意两台电脑之间有唯一的路径相连。 不过在最近一次维护网络时&#xff0c;管理员误操作使得某两台电脑之间…...

C++设计模式(14)——享元模式

亦称&#xff1a; 缓存、Cache、Flyweight 意图 享元模式是一种结构型设计模式&#xff0c; 它摒弃了在每个对象中保存所有数据的方式&#xff0c; 通过共享多个对象所共有的相同状态&#xff0c; 让你能在有限的内存容量中载入更多对象。 问题 假如你希望在长时间工作后放…...

SpringCloud之Eureka客户端服务启动报Cannot execute request on any known server解决

项目场景&#xff1a; 在练习SpringCloud时&#xff0c;Eureka客户端(client)出现报错&#xff1a;Cannot execute request on any known server 问题描述 正常启动SpringCloud的Server端和Client端&#xff0c;结果发现Server端的控制台有个Error提示&#xff0c;如下&#…...

从零开始搭建kubernetes集群环境(虚拟机/kubeadm方式)

文章目录1 Kubernetes简介&#xff08;k8s&#xff09;2 安装实战2.1 主机安装并初始化2.2 安装docker2.3 安装Kubernetes组件2.4 准备集群镜像2.5 集群初始化2.6 安装flannel网络插件3 部署nginx 测试3.1 创建一个nginx服务3.2 暴漏端口3.3 查看服务3.4 测试服务1 Kubernetes简…...

【零基础入门前端系列】—表格(五)

【零基础入门前端系列】—表格&#xff08;五&#xff09; 一、表格 表格在数据展示方面非常简单&#xff0c;并且表现优秀&#xff0c;通过与CSS的结合&#xff0c;可以让数据变得更加美观和整齐。 单元格的特点&#xff1a;同行等高、同列等宽。 表格的基本语法&#xff1…...

C#开发的OpenRA的只读字典IReadOnlyDictionary实现

C#开发的OpenRA的只读字典IReadOnlyDictionary实现 怎么样实现一个只读字典? 这是一个高级的实现方式,一般情况下,开发人员不会考虑这个问题的。 毕竟代码里,只要小心地使用,还是不会出问题的。 但是如果在一个大型的代码,或者要求比较严格的代码里,就需要考虑这个问题了…...

mulesoft MCIA 破釜沉舟备考 2023.02.14.06

mulesoft MCIA 破釜沉舟备考 2023.02.14.06 1. A company is planning to extend its Mule APIs to the Europe region.2. A mule application is deployed to a Single Cloudhub worker and the public URL appears in Runtime Manager as the APP URL.3. An API implementati…...

Python网络爬虫 学习笔记(1)requests库爬虫

文章目录Requests库网络爬虫requests.get()的基本使用框架requests.get()的带异常处理使用框架&#xff08;重点&#xff09;requests库的其他方法和HTTP协议&#xff08;非重点&#xff09;requests.get()的可选参数网络爬虫引发的问题&#xff08;非重点&#xff09;常见问题…...

Splay

前言 Splay是一种维护平衡二叉树的算法。虽然它常数大&#xff0c;而且比较难打&#xff0c;但Splay十分方便&#xff0c;而且LCT需要用到。 约定 cnticnt_icnti​&#xff1a;节点iii的个数 valival_ivali​&#xff1a;节点iii的权值 sizisiz_isizi​&#xff1a;节点iii的子…...

智能网联汽车ASIL安全等级如何划分

目录一、功能安全标准二、功能安全等级定义三、危险事件的确定四、ASIL安全等级五、危险分析和风险评定六、功能安全目标的分解一、功能安全标准 ISO 26262《道路车辆功能安全》脱胎于IEC 61508《电气/电子/可编程电子安全系统的功能安全》&#xff0c;主要定位在汽车行业&…...

Stable Diffusion 1 - 初始跑通 文字生成图片

文章目录关于 Stable DiffusionLexica代码实现安装依赖库登陆 huggingface查看 huggingface token下载模型计算生成设置宽高测试迭代次数生成多列图片关于 Stable Diffusion A latent text-to-image diffusion model Stable Diffusion 是一个文本到图像的潜在扩散模型&#xff…...

【cuda入门系列】通过代码真实打印线程ID

【cuda入门系列】通过代码真实打印线程ID1.gridDim(6,1),blockDim(4,1)2.gridDim(3,2),blockDim(2,2)【cuda入门系列之参加CUDA线上训练营】在Jetson nano本地跑 hello cuda&#xff01; 【cuda入门系列之参加CUDA线上训练营】一文认识cuda基本概念 【cuda入门系列之参加CUDA线…...

【Python语言基础】——Python NumPy 数据类型

Python语言基础——Python NumPy 数据类型 文章目录 Python语言基础——Python NumPy 数据类型一、Python NumPy 数据类型一、Python NumPy 数据类型 Python 中的数据类型 默认情况下,Python 拥有以下数据类型: strings - 用于表示文本数据,文本用引号引起来。例如 “ABCD”…...

数据工程师需要具备哪些技能?

成为数据工程师需要具备哪些技能&#xff1f;数据工程工作存在于各个行业&#xff0c;在银行业、医疗保健业、大型科技企业、初创企业和其他行业找到工作机会。许多职位描述要求数据工程师、拥有数学或工程学位&#xff0c;但如果有合适的经验学位往往没那么重要。 大数据开发…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...