MySQL备份恢复数据的一般步骤 |
本文标签:备份恢复数据 MySQL 下面是备份一个数据库的例子: 1、备份前读锁定涉及的表 mysql>LOCK TABLES tbl1 READ,tbl1 READ,… 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数据库 。
|