1、备份与恢复的类型:
逻辑备份与物理备份
线上备份与线下备份
本地备份与远程备份:mysqldump,mysqlhotcopy(第三方PERL程序),select ... into outfile
快照备份(mysql自身不支持),可使用第三方工具Veritas,LVM,ZFS
全备份与增量备份
全恢复与时间点(point-in-time)(增量)恢复
2、数据库备份方法
2.1 通过拷贝表文件进行备份
如MyISAM表的三个数据文件:*.frm,*.MYD,*.MYI. 为了保证数据的完整性,需要停止服务或通过:LOCK TABLES先锁定表,再通过FLUSH TABLES 来将所有活动状态的索引页写入磁盘.
2.2 带分隔符的文本文件备份
i) 通过SELECT * INTO OUTFILE 'filename' FROM table_name,此方法只能在本在进行,且只包含表的数据信息,不包含结构信息.
ii)通过mysqldump --tab,些方法可远程备份且包含表的结构信息
采用以上两种办法备份的数据可以通过:LOAD DATE INFILE 或mysqlimport 进行恢复
2.3 使用mysqldump or mysqlhotcopy 脚本进行备份
i) mysqldump 作为最通用的方法,对所胡存储引擎都适用
如:
shell>mysqldump db_name > dump file
shell>mysqldump --tab=/path/to/save/dir db_name
ii)mysqlhotcopy作为第三方脚本只支持MyISAM数据库
如:
shell>mysqlhotcopy db_name /path/to/save/dir
如果备份innodb引擎的数据库需要使用:ibbackup
2.4 使用Binary Log来实现增量备份
MySQL支持增量备份,但必须开启--log-bin选项来记录二进制日志.以下是使用Binary log进行恢复的相关步骤:
i) mysql> show binary logs; 来查看一共有多少条二进制日志记录
ii) mysql>show master status; 来查看当前正在使用的日志文件是哪一个,可以通过FLUSH LOGS来开启新的日志
iii) 通过 shell>mysqlbinlog binlog_file.00001 binlog_file.00002 ... | mysql -u root -p 来恢复某一或多个阶段的数据
如果想查看log中的数据可以使用
iiii) shell>mysqlbinlog binlog_files | more 或通过
shell>mysqlbinlog binlog_files > tmpfile 导出成可读数据进行查看,当然此时可以通过
shell>mysql -uroot -p <tmpfile 来导入数据
如果同时有多个日志文件需要导出,且希望导出到一个文件内,可以采用>>进行增量导出,如
shell>mysqlbinlog binlog_file.000001 > /tmp/backup.sql
shell>mysqlbinlog binlog_file.000002 >> /tmp/backup.sql
同时通过
shell>mysql -uroot -p -e "source /tmp/backup.sql" 进行导入.sdetailC.php/63.html