MySQL管理与优化(20):备份与恢复
2014-10-07 11:03
369 查看
备份与恢复:
备份使得数据库的中的数据更加高效和安全。备份/恢复策略:
进行备份或恢复时需要考虑的一些因素:确定要备份的表的存储引擎是事务性还是非事务性,两种不同存储引擎备份方式在处理数据一致性方面是不太一样的。
确实使用全量备份还是增量备份。全备份的优点是备份保持最新备份,恢复的时候可以花费更少的时间;缺点是如果数据量过大,将花费很多的时间,并对系统造成较长时间的压力。增量备份则恰恰相反,只需备份每天的增量日志,备份时间少,对负载压力下;缺点是恢复的时候需要全备份加上次备份到故障前的所有日志,恢复时间会长些。
可以考虑采取复制的方法来做异地备份,但复制不能代替备份,它对数据库的误操作也是无能为力。
要定期做备份,备份的周期要充分考虑系统可以承受的恢复时间。备份要在系统负载较小的时候进行。
确保MySQL打开log-bin选项,有了BINLOG,MySQL才可以在必要的时候做完整恢复,或基于时间点的恢复,或基于位置的恢复。
要经常做备份恢复测试,确保备份是有效的,并且是可以恢复的。
逻辑备份和恢复:
逻辑备份可以针对不同的存储引擎,而使用相同的方法来备份;而物理备份对于不同的存储引擎会有不同的方法。备份:
MySQL中的逻辑备份将数据库中的数据备份为一个文本文件,备份的文件可以查看和编辑。我们可以是使用mysqldump工具实现备份,如:
-- 备份所有数据库 mysqldump -uroot -p --all-database > all.sql -- 备份数据库test mysqldump -uroot -p test > test.sql -- 备份数据库test下的表emp mysqldump -uroot -p test emp > test_emp.sql -- 备份数据库test下的表emp, dept mysqldump -uroot -p test emp dept > test_emp_dept.sql -- mysqldump --help可查看更多选项
为了保证数据备份的一致性,对于MyISAM表备份时需要加上-l参数,对于InnoDB可采用--single-transaction选项。
完全恢复:
同样,我们可以使用mysqldump实现简单的恢复:-- 恢复某个数据库 mysql -uroot -p db_name < bakfile -- 上面的恢复可能不完整,还需要将备份后执行的日志进行重做 mysqlbinlog binlog-file | mysql -uroot -p db_name
基于时间点恢复:
MySQL恢复中分为完全恢复和非完全恢复,非完全恢复分为基于时间点的恢复和基于位置的恢复。基于时间点的恢复:
-- 若上午10点发生了误操作,可以用下面的语句进行恢复 mysqlbinlog --stop-date="2014-10-06 9:59:59" bin_log_file | mysql -uroot -p**** -- 跳过10点的误操作,再恢复 mysqlbinlog --start-date="2014-10-06 10:00:01" bin_log_file | mysql -uroot -p****
基于位置恢复:
-- 保存某时间段内的日志 mysqlbinlog --start-date="2014-10-06 12:10:20" --stop-date="2014-10-06 12:15:00" bin_log_file > temp_file -- 越过某些位置的日志,进行恢复,如跳过1000~2000位置的日志 mysqlbinlog --stop-position="1000" bin_log_file | mysql -uroot -p**** mysqlbinlog --start-position="2000" bin_log_file | mysql -uroot -p****
物理备份和恢复:
物理备份又分为冷备份和热备份两种,和逻辑备份相比,优点是备份和恢复的速度更快。冷备份:
停掉MySQL服务,在操作系统级别恢复MySQL的数据文件;重启MySQL服务,使用mysqlbinlog工具恢复备份以来所有的BINLOG。热备份:
热备份需要针对不同存储引擎,主要是MyISAM和InnoDB。MyISAM存储引擎:
-- 1. 使用mysqlhotcopy工具 mysqlhotcopy -u root -p **** db_name /path/to/new_directory -- 2. 手动锁表复制 flush tables for read; -- 复制数据文件到备份目录
InnoDB存储引擎:
可以参考收费工具ibbackup,http://dev.mysql.com/doc/mysql-enterprise-backup/3.7/en/ihb-meb-compatibility.html
表的导入导出:
导出:
有时我们需要对数据库表进行导出,以:1. 作为Excel显示;
2. 为了节省备份空间;
3. 为了快速加载数据,LOAD DATA的加载速度比普通的SQL加载快20倍以上。
可以有两种办法来实现:
-- 使用SELECT ... INTO OUTFILE ... SELECT * FROM table_name INTO OUTFILE 'file_name' [option];
其中option选项:
NOTE: SELECT ... INTO OUTFILE ...产生的输出文件如果已存在,将会创建失败,不会覆盖原文件。
第2种方法是用mysqldump导出:
mysqldump -u username -T target_dir db_name table_name [option]其中option选项:
导入:
使用LOAD DATA INFILE:LOAD DATA [LOCAL] INFILE 'file_name' INTO TABLE table_name [option]其中option选项如下:
使用mysqlimport:
mysqlimport -u root -p*** [--LOCAL] db_name file_name [option]其中option:
NOTE: 如果导入和导出是跨平台操作的(Windows和Linux),那么要注意设置参数line-terminated-by,Windows上设置为line-terminated-by='\r\n',Linux上设置line-terminated-by='\n'。
不吝指正。
相关文章推荐
- MySQL管理之数据备份及恢复 推荐
- mysql用户管理、常用sql语句、mysql数据库备份恢复
- MySQL常用操作(2) 之 用户管理、常用语句、数据库备份恢复
- MySQL管理与优化(20):MySQL日志
- MYSQL常用操作(二),MYSQL用户管理,数据备份恢复
- mysql用户管理-常用sql-数据库备份恢复
- 04: 用户授权及撤销 、 数据备份与恢复 、 MySQL管理工具
- MySQL管理命令、备份与恢复、授权远程访问
- MySQL用户管理、常用SQL语句、MySQL数据库备份恢复
- MySQL 用户管理 备份复制 恢复
- 项目实战6—Mysql实现企业级日志管理、备份与恢复实战
- MySQL用户管理、常用sql语句、备份和恢复数据
- MySQL优化之——备份和恢复
- 【MySQL】mysql用户管理、常用sql语句和mysql数据库备份恢复
- Mysql实现企业级日志管理、备份与恢复的实战教程
- MySQL用户管理、常用sql语句、数据库备份恢复
- mysql用户管理 ,常用sql语句 ,mysql数据库备份恢复
- 用户授权及撤销 、 数据备份与恢复 、 MySQL管理工具
- MySQL5.5.22版本安装配置以及基本命令的使用和管理数据库备份与恢复操作详解
- MySQL管理命令、备份与恢复、授权远程访问