备份的类型
冷备份:
这些备份在用户不能访问数据时进行,因此无法读取或修改数据。这些脱机备份会阻止执行任
何使用数据的活动。这些类型的备份不会干扰正常运行的系统的性能。但是,对于某些应用程
序,会无法接受必须在一段较长的时间里锁定或完全阻止用户访问数据。
温备份:
这些备份在读取数据时进行,但在多数情况下,在进行备份时不能修改数据本身。这种中途备
份类型的优点是不必完全锁定最终用户。但是,其不足之处在于无法在进行备份时修改数据
集,这可能使这种类型的备份不适用于某些应用程序。在备份过程中无法修改数据可能产生性
能问题。
热备份:
这些动态备份在读取或修改数据的过程中进行,很少中断或者不中断传输或处理数据的功能。
使用热备份时,系统仍可供读取和修改数据的操作访问。
备份的方式
逻辑备份
——基于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是以覆盖的形式恢复数据的
Comments | NOTHING