MySQL备份与恢复

备份大于天!!!
MySQL主要包括以下几种备份与恢复策略:

1.逻辑备份与物理备份
逻辑备份是备份命令通过查询并获取数据库信息和库内对象(表)的信息来完成的。
物理备份主要用于快速恢复发生严重故障或急需恢复的大型数据库。因为物理备份主要是备份了数据库的数据文件等文件结构,所以可以用于快速恢复。

2.冷备 、热备与温备
冷备(cold backup):在数据库彻底关闭状态下,读写请求均不允许状态下进行备份;
热备(hot backup):在数据库运行状态下进行备份,这种备份不影响正常的数据库业务。
温备(warm backup): 在数据库运行状态下进行备份,此时仅支持对数据库中数据的读请求,不允许写请求;
MyISAM不支持热备,InnoDB支持热备,但是需要专门的工具。因为MyISAM不支持事务,所以只能使用温备去进行在线备份。

3.全量备份与增量备份
全量备份是指在特定时间点对数据库中所有数据去做一个完整副本。
增量备份针对自上次备份以来已更改的备份数据(包括全量备份,增量备份)去进行备份。
差异备份是备份自上次全量备份以来已更改的数据。

4.本地备份与远程备份
本地备份就是把本地执行备份命令以后所产生的结果文件保存到本地服务器上。
远程备份就是在其他的服务器上启动MYSQL的远程客户端连接功能进行备份,那么所产生的备份文件就一定保存在了你发起命令的那台机器上。

5.快照备份
快照热备功能主要依靠MYSQL的文件结构所在的存储服务器或者LVM以及文件系统上自己所特有的快照功能进行备份。
比如说LVM的卷组复制功能和一些比较好的存储服务器上自带的存储快照功能,还有比如说ZFS的快照功能等。
这种备份不属于MYSQL所能实现的范围,而是要依靠MYSQL数据库和MYSQL数据文件结构所在的存储服务器与文件系统所提供的相关功能去实现的。

6. 基于时间点的恢复
利用二进制日志可以实现基于时间与位置的恢复,例如由于误操作删除了一张表,这时候完全恢复是没用的,因为日志里面还是存在错误语句,
我们需要的是恢复到误操作之前的状态,然后跳过误操作数据,再恢复后面操作语句。

7.备份时的压缩与加密
指的是在MYSQL备份的过程中我们可以使用相关的压缩参数,将备份文件进行压缩,并且可以给相关的备份文件进行加密。

备份语句
实例一:导出导入
1 将数据库内的数据全部导出
mysqldump -uroot -proot --all-databases > /tmp/all_db.sql
远程备份:
mysql -h 192.168.100.57 -P 3306 -uroot -proot --all-databases > /tmp/all_db_remote.sql
2 将备份后数据库内的数据全部重新导入回去
mysql -uroot -proot < /tmp/all_db.sql

实例二:导出导入指定的数据库
1 导出某个数据库
mysqldump -uroot -proot --databases hr > hr.sql
2 导出某几个数据库(切记 数据库与数据库之间千万不要加逗号’,')
mysqldump -uroot -proot --databases hr hr1 > hr_hr1.sql
3 导入某个库(进入到mysql客户端下执行相关命令)
source hr.sql;

实例三:导出(备份)指定的表
1.导出单个表
mysqldump -uroot -proot --databases hr --tables test > /tmp/test.sql
2.导出多个表
mysqldump -uroot -proot --databases hr --tables test employees > /tmp/test.sql (最正规写法)
2.1 导出多个表或视图
mysqldump -uroot -proot hr test employees emp_v > /tmp/test_employees_emp_v.sql
3.导出视图
mysqldump -uroot -proot hr emp_v > /tmp/emp_v.sql
4.若数据中 ,某些表除外,其余表都需导出,并且设置字符集
mysqldump -uroot -proot --default-character-set=utf8mb4 hr --ignore-table=hr.departments --ignore-table=hr.employees > /tmp/ig.sql
导入表数据
建议首先选择数据库后,然后使用source导入

实例四:导出(备份)表结构
–no-data只导出表结构(表的元数据),但是不导出表中的数据,缩写格式为 -d
1.不导出任何数据,只导出数据库中所有表结构。
mysqldump -uroot -proot --all-databases --no-data > /tmp/all_meta.sql
mysqldump -uroot -proot -A --no-data > /tmp/all_meta2.sql
mysqldump -uroot -proot -A -d > /tmp/all_meta3.sql
2.不导出任何数据,只导出某个数据库中所有表结构。(有些不同,大家注意!!!)
mysqldump -uroot -proot hr --no-data > /tmp/hr_meta.sql
mysqldump -uroot -proot --databases hr --no-data > /tmp/hr_meta1.sql
mysqldump -uroot -proot -B hr -d > /tmp/hr_meta2.sql
3.不导出任何数据,只导出某个表结构。
mysqldump -uroot -proot hr employees --no-data > /tmp/hr_emp_meta.sql
mysqldump -uroot -proot --databases hr --tables employees --no-data > /tmp/hr_emp_meta1.sql
mysqldump -uroot -proot --B hr --tables employees -d > /tmp/hr_emp_meta1.sql
导出多张表的元数据(表结构)
mysqldump -uroot -proot --databases hr --tables employees departments --no-data > /tmp/hr_empdept_meta1.sql

实例五:只导出数据不导出表结构
-no-create-info只导出数据不导出表结构 缩写命令格式为 -t
1.只导出所有数据库下表的数据,不导出结构
mysqldump -uroot -proot --all-databases --no-create-info > /tmp/all_data.sql
mysqldump -uroot -proot -A -t > /tmp/all_data1.sql(简化方式)
2.导出某个数据库下所有的表的数据,不导出表结构
mysqldump -uroot -proot hr --no-create-info > /tmp/hr_data.sql
导出多个数据库中的数据(如果你要导出多个数据库的数据是不能缩写的)
mysqldump -uroot -proot hr test -t > /tmp/hr_test_data.sql(这种缩写的写法是错误的)
mysqldump -uroot -proot --databases hr test -t > /tmp/hr_test_data.sql
mysqldump -uroot -proot -B hr test -t > /tmp/hr_test_data.sql
3.导出某张表上的数据,不导出表结构。
mysqldump -uroot -proot hr employees --no-create-info > /tmp/hr_emp_data.sql
导出多张表的数据
mysqldump -uroot -proot hr employees departments -t > /tmp/hr_emp_dept_data.sql
mysqldump -uroot -proot --databases hr --tables employees departments -t > /tmp/hr_emp_dept_data.sql

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值