MySQL完全备份与恢复

InnoDB存储引擎的数据库在磁盘上存储成三个文件:

db.opt(表属性文件)、表名.frm(表结构文件)、表名.ibd(表数据文件)。

MySQLdump 备份与恢复

1)、完全备份一个或多个完整的库(包括其中所有的表)

[root@localhost bak]# mysqldump -uroot -pabc123 --databases school test > /opt/bak/mysql_school_test.sql 备份mysql与school和test的两个库
[root@localhost bak]# ls

在这里插入图片描述
2)、完全备份MySQL服务器中所有的库

[root@localhost bak]# mysqldump -uroot -pabc123 --all-databases > /opt/bak/mysql_all.sql;
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@localhost bak]# ls

在这里插入图片描述
3)、完全备份指定库中的部分表

[root@localhost bak]# mysqldump -uroot -pabc123 test test1 test2 > /opt/bak/test_1_2.sql;
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@localhost bak]# ls

在这里插入图片描述

[root@localhost bak]# mysqldump -uroot -pabc123 -d test test1 test2 > /opt/bak/test_1_2_jiegou.sql;
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@localhost bak]# ls

在这里插入图片描述

流程解析

先备份数据库中的数据打包,模拟数据丢失,损坏,利用备份打包恢复数据

物理冷备份

先关闭数据库,之后打包备份

恢复数据库

恢复数据库,采用将备份数据mv成线上库文件夹的方式

配置流程

首先创建数据库数据

mysql> create database awk; 创建数据库awk
Query OK, 1 row affected (0.00 sec)
mysql> use awk; 使用数据库
Database changed
mysql> create table a(id int(20));创建数据库并设置数据
Query OK, 0 rows affected (0.01 sec)
mysql> desc a;描述表a的结构

在这里插入图片描述

[root@localhost mysql]# systemctl stop mysqld 关闭数据库
[root@localhost mysql]# tar zcvf /opt/mysql_all-$(date +%F).tar.gz /usr/local/mysql/data/  源文件来源路径备份打包所有数据库,当天日期
[root@localhost mysql]# cd /opt/
[root@localhost opt]# ls -lh 查看文件

在这里插入图片描述

模拟数据库丢失,损坏

[root@localhost opt]# systemctl start mysqld 开启数据库
[root@localhost opt]# mysql -uroot -pabc123 登录数据库
mysql> show databases; 查看数据库信息

在这里插入图片描述

mysql> drop database awk; 删除数据库信息
Query OK, 1 row affected (0.00 sec)
mysql> show databases; 查看数据库

在这里插入图片描述

恢复数据

[root@localhost opt]# systemctl stop mysqld 关闭数据库
[root@localhost opt]# cd /opt/
[root@localhost opt]# tar zxvf mysql_all-2021-07-13.tar.gz 解压缩
[root@localhost opt]# ls -lh 查看文件

在这里插入图片描述

当备份时加 --databases ,表示针对于test库

[root@localhost opt]# mysqldump -uroot -pabc123 --databases test > /opt/mysql_test.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

在这里插入图片描述

mysql> drop database test;
Query OK, 2 rows affected (0.01 sec)
mysql> show databases;

在这里插入图片描述

[root@localhost opt]# mysql -uroot -pabc123 < mysql_test.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql> show databases;

在这里插入图片描述

mysql数据库增量恢复

1)、一般恢复

将所有备份的二进制日志内容全部恢复

2)、基于位置恢复

数据库在某一时间点可能既有错误的操作也有正确的操作
可以基于精准的位置跳过错误的操作
发生错误节点之前的一个节点,上一次正确操作的位置点停止

3)、基于时间点恢复

跳过某个发生错误的时间点实现数据恢复
在错误时间点停止,在下一个正确时间点开始

增备实验

1)、开启二进制日志功能

[root@localhost ~]# vim /etc/my.cnf
server-id = 1  可加可不加该命令
log-bin=mysql-bin 
binlog_format = MIXED
[root@localhost ~]# systemctl restart mysqld

查看二进制日志文件的内容

[root@localhost ~]# cd /usr/local/mysql/data/
[root@localhost data]# ls

在这里插入图片描述

[root@localhost data]# cp mysql-bin.000001 /opt/
[root@localhost data]# cd /opt/
[root@localhost opt]# ls

在这里插入图片描述

[root@localhost opt]# mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000001 

在这里插入图片描述

二进制日志中需要关注的部分

1、at :开始的位置点
2、end_log_pos:结束的位置
3、时间戳: 210712 11:50:30
4、SQL语句

进行完全备份(增量备份时基于完全备份的,所以我们直接完全备份数据库)

[root@localhost data]# mysqladmin -uroot -pabc123 flush-logs
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
[root@localhost data]# ls

在这里插入图片描述

插入新数据,以模拟数据的增加或变更

mysql> create database ky11;
Query OK, 1 row affected (0.00 sec)
mysql> use ky11;
Database changed
mysql> create table txt1 (id int(5),name varchar(3));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into txt1 values(1,'one');
Query OK, 1 row affected (0.01 sec)
mysql> insert into txt1 values(2,'two');
Query OK, 1 row affected (0.00 sec)
mysql> select * from txt1;

在这里插入图片描述

[root@localhost opt]# mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002 > mysql_02.sql
[root@localhost opt]# ls

在这里插入图片描述

[root@localhost opt]# mysqladmin -uroot -pabc123 flush-logs
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
[root@localhost opt]# ls /usr/local/mysql/data/

在这里插入图片描述

模拟丢失所有数据的恢复步骤

模拟丢失所有数据

mysql> drop database ky11;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;

在这里插入图片描述

基于mysql-bin.000002恢复

[root@localhost opt]# mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -uroot -pabc123
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost opt]# mysql -uroot -pabc123
mysql> show databases;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值