一· mysql分逻辑备份和物理备份。
逻辑备份将数据库备份为一个文本文件,备份文件可以查看编辑。mysqldump工具完成。
1. 指定数据库,或者库中的表。
shell> mysqldump [options] db_name [tables]
2.备份一个或者多个数据库
shell> mysqldump [options] ---database DB1 [DB2 DB3...]
3.备份全库
shell> mysqldump [options] --all-database
例子:
1.备份所有数据库:$mysqldump -uroot -p --all-database > all.sql
2.备份test数据库:$mysqldump -uroot -p test > test.sql
3.备份test下的emp:$mysqldump -uroot -p test emp > emp.sql
4.备份test下的emp和dept:$mysqldump -uroot -p test emp dept > emp_dept.sql
二·数据库恢复
1.完全恢复
mysql -uroot -p dbname < bakfile
注:备份后数据不完整,还需要将备份后执行的日志重做:mysqlbinlog binlog-file |mysql -u root -p ***
例子:
备份数据
#mysql -uroot -p -l -F test >test.dump
-l给所有表加读索,-F生成新的日志文件
故障需要恢复备份:
#mysql -uroot -p test < test.dmp
使用mysqlbinlog恢复自mysqldump备份以来的BINLOG
#mysqlbinlog localhost-bin.000015 | mysql -u root -p test
2.基于时间的恢复
误操作删除了一张表,没必要完全恢复,不完全恢复。分为基于时间的恢复和基于位置的恢复。
如上午10点发生误操作,恢复到故障前:
shell>mysqlbinlog --stop-date="2012-11-21 9:59:59"/var/log/mysql/bin.123456 | mysql -u root -pmypwd
跳过故障时间点继续执行后面的BINLOG完成恢复。
shell>mysqlbinlog --start-date="2012-11-21 10:01:00"/var/log/mysql/bing.123456 | mysql -u root -pmypwd \
3.基于位置恢复
和基于时间类似,但是精确。一个时间点可能有很多条SQL语句同时执行。
shell执行如下命令:
shell > mysqlbinlog --stat-date="2012-11-21 9:55:00" --stop-date="2012-11-21 10:05:00" /var/log/mysql/bin.123456 >/tmp/mysql_restore.sql
该命令在/tmp目录下创建小的文本文件。编辑此文件。找到出错语句的位置,368312和368315
恢复了以前的备份后,输入下面内容
shell > msyqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 \ | mysql -u root -pmypwd
shell > mysqlbinlog --stop-position="368315" /var/log/mysql/bin.123456 \ | mysql -u root -pmypwd \
转载于:https://blog.51cto.com/xiaofeier/1065712