技术开发 频道

MySQL备份恢复数据的一般步骤

  【IT168 文档

  下面是备份一个数据库的例子:

  1、备份前读锁定涉及的表

  mysql>LOCK TABLES tbl1 READ,tbl1 READ,…

  如果,你在mysqldump实用程序中使用--lock-tables选项则不必使用如上SQL语句。

  2、导出数据库中表的结构和数据

  shell>mysqldump --opt db_name>db_name.sql

  3、启用新的更新日志

  shell>mysqladmin flush-logs

  这样可以记录你备份后的数据改变为恢复数据准备。

  4、解除表的读锁

  mysql>UNLOCK TABLES;

  为了加速上述过程,你可以这样做:

  shell> mysqldump --lock-tables --opt db_name>db_name.sql; mysqladmin flush-logs

  但是这样可能会有点小问题。上命令在启用新的更新日志前就恢复表的读锁,

  在更新繁忙的站点,可能有备份后的更新数据没有记录在新的日志中。

  现在恢复上面备份的数据库

  1、对涉及的表使用写锁

  mysql>LOCK TABLES tbl1 WRITE,tbl1 WRITE,…

  2、恢复备份的数据

  shell>mysql db_name < db_name.sql

  3、恢复更新日志的内容

  shell>mysql --one-database db_name < hostname.nnn

  假设需要使用的日志名字为hostname.nnn

  4、启用新的更新日志

  shell>mysqladmin flush-logs

  5、解除表的写锁

  mysql>UNLOCK TABLES;

  希望上面的例子能给你启发,因为备份数据的手法多种多样,你所使用的和上面所述可能大不一样,但是对于备份和恢复中,表的锁定、启用新的更新日志的时机应该是类似的,仔细考虑这个问题。

  思考题

  请在完成这些思考题之前,启用常规日志和更新日志,因为下面的思考题将涉及到这个问题。

  1、使用带有带有--all-databases选项的mysqldump实用程序,备份你现有的所有数据到一个文件all.sql中(如果你的数据不太多的话),查看输出的SQL语句。

  2、使用带有--ab选项的mysqldump,把你的test数据库中的表结构和数据分别备份到一个目录中。检查一下生成的SQL语句与上题中备份文件中的有什么不同。

  3、建立一个新的数据库test1,把上题的备份文件恢复到该数据库中。请简述一下过程。

  4、查看你的更新日志和常规日志,看看上述操作是否都留下了记录以及留下了什么记录。

  5、先在test数据库中的任意一个表中INSERT一个记录,然后在删除这个记录。(目的是在更新日志中留下记录。)删除数据库test1,试试如何从更新日志恢复test1数据库。

0
相关文章