杨思为 | 我们一家

MySQL备份数据

这些天在给学生讲数据库修改数据操作时发现学生总是会不小心把数据库、或者数据表里的数据清空,要不停的需要重新输入一些新数据来练习,所以在让其他学生做MySQL数据修改操作练习的时候,我特意加上了这么一小由于MySQL数据备份的章节,呵呵,果然能够好一些。

提示:

MySQL新手经常会因为考虑不周而在使用UPDATE和DELETE命令修改或者删除记录时误改、误删了有用的数据。为了把失误造成的损失降低到最低,应该在启动mysql程序时加上–i-am-a-dummy(我是新手的意思)选项,这样mysql程序拒绝执行不带WHERE子句的UPDATE和DELETE命令。

在开始在数据库里“胡折腾”之前,应该先为有关的数据表或是整个数据库制作一个备份,这样万一把数据库搞乱了,还可以把数据库恢复到它原来的状态。MySQL数据库备份可以选用mysqldump之类的专用工具,也可以直接使用SQL命令在制作备份;

1、为数据表制作一个副本

使用CREATE TABLE命令创建数据表的副本,如:

CREATE TABLE newtable SELECT * FROM table

上面这条命令将创建一个名为newtable的新数据表,并把table数据表里的数据全部拷贝到这个新数据表里去。新数据表里的数据列定义与老数据表的完全一样,但偶尔会出现意外,比如说,个别数据列上的AUTO_INCREMENT属性可能会丢失(但AUTO_INCREMENT字段的数据值会保存下来),新数据表里没有任何索引等。

2、用数据表副本恢复数据表

下面两条命令中的第一条将把数据表talbe里的现有记录全部删除,第二条命令将把保存在newtable数据表表里的数据全部插入talbe数据表里去(在插入过程中,原始的AUTO_INCREMENT字段值得到恢复),命令如下:

DELETE FROM table

INSERT INTO table SELECT * FROM newtalbe

最后别忘了,如果不需要保留数据表副本,则把newtable删除即可:

DORP TABLE newtable

3、为整个数据库制作一份备份

我们可以用mysqldump程序把一个完整的数据库备份为一个文件格式的文件。注意,mysqldump是一个独立的程序而不是mysql程序里的一个命令;也就是说,不能在mysql程序里执行mysqldump命令,必须像下面这样在一个shell或者命令窗口里启动它:

cizi$ mysqldump -u loginame -p dbname > backupfile

Enter password: xxxx

4、用mysqldump生成的备份文件恢复数据库

没有与mysqldump程序功能相对应的数据恢复工具,需要依靠mysql命令去读入一个用mysqldump程序制作的数据库备份文件。备份文件将被用作输入源,而目标数据库(下边的代码中为dbname)必须已经存在:

cizi$ mysql -u loginname -p dbname < backupfile

Enter password: xxxx

当然,也可以在交互模式下用mysqldump生成的备份文件重建数据库:

cizi$ mysql -uroot -p

Enter password: xxxx

mysql> CREATE DATABASE dbname; –如果数据库dbname不存在

mysql>USE dbname;

mysql>SOURCE backupfile

作者: 分类:数据库 标签: 时间:2007年12月16日

当前位置:首页>开发研究>数据库>

上一篇:

下一篇:

  1. 没有任何评论。
  1. 没有任何引用。

热门文章