数据备份的重要性
●在生产环境中,数据的安全性至关重要
●任何数据的丢失都可能产生严重的后果
●造成数据丢失的原因:
程序错误 |
---|
认为操作失误 |
运算错误 |
磁盘故障 |
灾难等 |
[图片上传失败…(image-799a75-1601017593330)]
数据库备份的分类
●从物理与逻辑的角度,备份可分为:
物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份
物理备份方法: |
---|
冷备份(脱机备份)︰是在关闭数据库的时候进行的 |
热备份(联机备份)∶数据库处于运行状态,依赖于数据库的日志文件 |
温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作 |
●逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份
●从数据库的备份策略角度,备份可分为
完全备份:每次对数据库进行完整的备份 |
---|
差异备份:备份自从上次完全备份之后被修改过的文件 |
增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份 |
常见的备份方法
●物理冷备
备份时数据库处于关闭状态,直接打包数据库文件 |
---|
备份速度快,恢复时也是最简单的 |
●专用备份工具mydump或mysqlhotcopy
mysqldump常用的逻辑备份工具 |
---|
mysqlhotcopy仅拥有备份MylSAM和ARCHIVE表 |
●启用二进制日志进行增量备份
进行增量备份,需要刷新二进制日志 |
---|
●第三方工具备份
免费的MySQL热备份软件Percona XtraBackup |
---|
MySQL完全备份
■是对整个数据库、数据库结构和文件结构的备份
■保存的是备份完成时刻的数据库
■是差异备份与增量备份的基础
优点: | 缺点: |
---|---|
备份与恢复操作简单方便 | 数据存在大量的重复 |
占用大量的备份空间 | |
备份与恢复时间长 |
数据库完全备份分类
■物理冷备份与恢复:
关闭MySQL数据库
使用tar命令直接打包数据库文件夹
直接替换现有MySQL目录即可
■mysqldump备份与恢复
MySQL自带的备份工具,可方便实现对MySQL的备份
可以将指定的库、表导出为SQL脚本
使用命令mysql导入备份的数据
数据库备份与恢复
MySQL数据库完全备份与恢复
(1)环境搭建
mysql> create database zz;
Query OK, 1 row affected (0.00 sec)
mysql> use auth;
ERROR 1049 (42000): Unknown database 'auth'
mysql> use zz;
Database changed
mysql> create table users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into users(user_name,user_passwd) values('zhangsan', password('123456'));
Query OK, 1 row affected, 1 warning (0.02 sec)
mysql> insert into users values('lisi', password('123456'));
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| zz |
+--------------------+
5 rows in set (0.00 sec)
mysql> select * from zz.users;
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| lisi | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| zhangsan | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
2 rows in set (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
(2)物理冷备份
tar命令直接打包数据库文件夹
[root@localhost ~]# systemctl stop mysqld
#在根下新建个backup目录
[root@localhost ~]# mkdir /backup
#/usr/local/mysql/data备份压缩
[root@localhost ~]# tar zcf /backup/mysql_all-$(date +%F).tar.gz /usr/local/mysql/data/
[root@localhost ~]# cd /backup/
[root@localhost backup]# ll
总用量 1280
-rw-r--r-- 1 root root 1310300 9月14 06:24 mysql_all-2020-09-14.tar.gz
(3)模拟故障
[root@localhost backup]#cd ~
[root@localhost backup]# mkdir /bak
#将目录data数据移动到bak 里面去
[root@localhost backup]# mv /usr/local/mysql/data/ /bak/
[root@localhost backup]# cd /usr/local/mysql/
#进mysql目录查看data
[root@localhost mysql]# ll
####查看后data目录被移走 ,模拟故障成功
总用量 64
drwxr-xr-x 2 mysql mysql 4096 8月 4 19:19 bin
-rw-r--r-- 1 mysql mysql 17987 9月 13 2017 COPYING
-rw-r--r-- 1 mysql mysql 17987 9月 13 2017 COPYING-test
drwxr-xr-x 2 mysql mysql 55 8月 4 19:19 docs
drwxr-xr-x 3 mysql mysql 4096 8月 4 19:19 include
drwxr-xr-x 4 mysql mysql 191