备份的类型

冷备份:

这些备份在用户不能访问数据时进行,因此无法读取或修改数据。这些脱机备份会阻止执行任

何使用数据的活动。这些类型的备份不会干扰正常运行的系统的性能。但是,对于某些应用程

序,会无法接受必须在一段较长的时间里锁定或完全阻止用户访问数据。

温备份:

这些备份在读取数据时进行,但在多数情况下,在进行备份时不能修改数据本身。这种中途备

份类型的优点是不必完全锁定最终用户。但是,其不足之处在于无法在进行备份时修改数据

集,这可能使这种类型的备份不适用于某些应用程序。在备份过程中无法修改数据可能产生性

能问题。

热备份:

这些动态备份在读取或修改数据的过程中进行,很少中断或者不中断传输或处理数据的功能。

使用热备份时,系统仍可供读取和修改数据的操作访问。

备份的方式

逻辑备份

——基于SQL语句的备份

binlog

into outfile

mysqldump

replication

[root@servera ~]# vim /etc/my.cnf
[mysqld]
secure_file_priv=/tmp
mysql> select * from world.city into outfile '/tmp/world_city.csv';

物理备份

——基于数据文件的备份

Xtrabackup(percona公司)

备份工具

备份策略

全量备份 full

增量备份 increamental

备份工具

mysqldump(逻辑)

——mysql原生自带很好用的逻辑备份工具

mysqlbinlog(逻辑)

——实现binlog备份的原生态命令

xtrabackup(物理)

——precona公司开发的性能很高的物理备份工具

备份工具使用——mysqldump

连接服务端参数(基本参数):-u -p -h -P -S

-A, --all-databases:全库备份

[root@servera ~]# mysqldump -uroot -p123456 -A > /backup/full.sql
* 不加参数:单库、单表多表备份
[root@servera ~]# mysqldump -uroot -p123456 db1 > /backup/db1.sql
[root@servera backup]# mysqldump -uroot -p123456 world city >
/backup/city.sql
* -B:指定库备份
[root@servera ~]# mysqldump -uroot -p123456 -B db1 > /backup/db1.sql
[root@servera ~]# mysqldump -uroot -p123456 -B db1 db2 > /backup/db1_db2.sql
* -F:flush logs在备份时自动刷新binlog(不怎么常用)
[root@servera backup]# mysqldump -uroot -p123456 -A -R –triggers -F >
/backup/full_2.sql
* -d:仅表结构
* -t:仅数据

备份额外扩展项

-R, --routines:备份存储过程和函数数据

--triggers:备份触发器数据

[root@servera backup]# mysqldump -uroot -p123456 -A -R --triggers >
/backup/full_2.sql

mysqldump特殊参数

-x:锁表备份(myisam温备份)

--single-transaction:快照备份

[root@servera backup]# mysqldump -uroot -p123456 -A -R --triggers --master-data=2 -
-single-transaction>/backup/full.sql
[root@servera backup]# mysqldump -uroot -p123456 -A -R --triggers --singletransaction>/backup/full.sql
--master-data=2默认不指定是=1,指定之后可以记录下来binlog的位点,方便后续恢复

gzip:压缩备份

[root@servera ~]# mysqldump -uroot -p123 -A -R --triggers --master-data=2 –
single-transaction|gzip>/backup/full.sql.gz
[root@servera ~]# gzip -d /backup/full.sql.gz
[root@servera ~]# zcat /backup/full.sql.gz > linshi.sql

常用的热备份备份语句

[root@servera ~]# mysqldump -uroot -p3306 -A -R --triggers --master-data=2 --single-transaction|gzip > /tmp/full_$(date +%F).sql.gz

mysqldump的恢复

mysql> set sql_log_bin=0;
#先不记录二进制日志
mysql> source /backup/full.sql
#库内恢复操作
[root@servera ~]# mysql -uroot -p123456 < /backup/full.sql
#库外恢复操作

注意

mysqldump在备份和恢复时都需要MySQL实例启动为前提

一般数据量级100G以内,大约15-30分钟可以恢复(PB、EB就需要考虑别的方式)

mysqldump是以覆盖的形式恢复数据的