MySQL之:备份和恢复

2020-03-31  本文已影响0人  Simon_Ye

为什么要备份

灾难恢复:硬件故障、软件故障、自然灾害、黑客攻击、误操作测试等数据丢失场景

备份注意要点

还原要点

备份类型

完全备份,部分备份

增量备份、差异备份

注意:二进制日志文件不应该与数据文件放在同一磁盘

备份和恢复

冷、温、热备份

MyISAM:温备,不支持热备
InnoDB:都支持

物理和逻辑备份

备份时需要考虑的因素

温备的持锁多久
备份产生的负载
备份过程的时长
恢复过程的时长

备份什么

数据
二进制日志、InnoDB的事务日志
程序代码(存储过程、存储函数、触发器、事件调度器)
服务器的配置文件

设计备份方案

备份工具:

备份工具的选择:

逻辑备份工具:mysqldump,mydumper,phpMyAdmin

Schema和数据存储在一起、巨大的SQL语句、单个巨大的备份文件
mysqldump工具:客户端命令,通过mysql协议连接至mysqld服务器进行备份
  mysqldump [OPTIONS] database [tables]
  mysqldump [OPTIONS] -B DB1 [DB2 DB3...]
  mysqldump [OPTIONS] -A [OPTIONS]

mysqldump常见选项:

MyISAM备份选项:

支持温备;不支持热备,所以必须先锁定要备份的库,而后启动备份操作锁定方法如下:
-x,--lock-all-tables:加全局读锁,锁定所有库的所有表,同时加--single-transaction--lock-tables选项会关闭此选项功能

注意:数据量大时,可能会导致长时间无法并发访问数据库

-l,--lock-tables:对于需要备份的每个数据库,在启动备份之前分别锁定其所有表,默认为on--skip-lock-tables选项可禁用,对备份 MyISAM 的多个库,可能会造成数据不一致

注:以上选项对 InnoDB 表一样生效,实现温备,但不推荐使用

InnoDB备份选项:

支持热备,可用温备但不建议用
--single-transaction
此选项 InnoDB 中推荐使用,不适用 MyISAM,此选项会开始备份前,先执行 START TRANSACTION 指令开启事务
此选项通过在单个事务中转储所有表来创建一致的快照。仅适用于存储在支持多版本控制的存储引擎中的表(目前只有InnoDB可以);转储不保证与其他存储引擎保持一致。在进行单个事务转储时,要确保有效的转储文件(正确的表内容和二进制日志位置),没有其它连接应该使用以下语句:ALTER TABLE,DROP TABLE,RENAME TABLE,TRUNCATE TABLE
此选项和--lock-tables(此选项隐含提交挂起的事务)选项是相互排斥
备份大型表时,建议将--single-transaction选项和--quick结合一起使用


生产环境实战备份策略

InnoDB建议备份策略

mysqldump -uroot -A -F [-E -R] --single-transaction --master-data=1 --flush-privileges [--triggers --hex-blob] > $BACKUP/fullabk_$BACKUP_TIME.sql

MyISAM建议备份策略

mysqldump -uroot -A -F [-E -R] -x --master-data=1 --flush-privileges [--triggers --hex-blob] > $BACKUP/fullabk_$BACKUP_TIME.sql

上一篇 下一篇

猜你喜欢

热点阅读