mysql复制 还原_mysql数据库的复制和一键还原

大家平时自己做了程序,带出去演示的时候,很多人都是重新建表,然后一个表一个表地用navicat导入数据,有的人更悲剧,连建表语句都没写,是用图形界面按鼠标建表的,重新建一次的时候真是.....................因为你不大可能点鼠标就点出一个很复杂的一模一样的表出来。本文除了说一下怎样一双击鼠标就建好整个数据库兼导入数据以外,还说一说如何在编程的时候管理一下你的数据库。由于我学mysql还没到半年,本文仅代表我的一些见解,有不同意见的一定要留言哦。

先说数据库的备份。数据库的备份一般来说你在备份的时候没有运行程序并修改数据库的话(一般就是准备拿出去演示的说,这是我们学生经常做的事情),可以静态地备份数据库。进入名利提示符,不要进入mysql的命令提示符,也就是说你还没有在命令提示符启动mysql。输入命令:

mysqldump -uroot -pxxxxxxxx >xxx.sql

具体地说是:

mysqldump -u用户名-p密码 数据库名称>要导出的文件名(含路径,随便扩展名)

那个-u和用户名,-p和密码之间不要有空格,这是最规范的写法,如果你没有密码就不用写-p密码 了,这样可以不用提示输入,反正是自己操作,不用管安全性啦。

> 符号的右面是导出的文件名,是已经包含路径的,如果你只输入了一个文件名,就是在你的命令提示符当前目录下,是相对目录,当然你可以改变命令提示符的路径或者用绝对路径,例如,我要导出mysql这个数据库(注意,mysql是数据库名,不要对里面的数据进行修改,是系统的数据库来的,修改了可能你就完了)到F盘的根目录下,我的数据库root用户没有设密码,就是这样写:

a4c26d1e5885305701be709a3d33442f.png

导出文件的扩展名是随便起的,你不用扩展名也行。等他运行完没有报错就行了,如果报错你看看是不是输漏了你要备份的数据库名字(这里是mysql)或者是没有输入密码了。那样F盘根目录下就多了个文件mysqldata.nihao,用txt可以打开看里面有一大堆东西,不是乱码就行了,导入就用到这个文件。

现在说数据库的导入。先建一个数据库,最好是空的,编码最好也是相同的,我不知道不同会出现什么情况,大概会有乱码吧,不是太清楚。然后可以开始导入了,格式是:

mysql -uroot -pxxxxxx 

具体的说是:

mysql -u用户名-p密码 数据库名

实际上就是运行批处理文件。

循例,-u和用户名,-p和密码之间不要有空格,例如我建了一个数据库叫mysqlbeifen,然后在名令提示符(还没有进入mysql)输入如下代码(我的mysql还是不带密码的,有密码的要注意了):

a4c26d1e5885305701be709a3d33442f.png

备份的路径要你自己写,可以写相对路径。这样,mysqlbeifen 就有表有数据了,而且和mysql数据库一样了。下面教大家怎样一键双击运行所有导入操作。

要做到一双击就完成所有导入操作,就要用到双重的批处理。首先说说mysql的批处理。你先建一个文件夹,把刚才备份的文件mysqldata.nihao也拷贝进那个文件。现在新建一个txt文件叫jianshujuku.txt(还是拼音最亲切,神马的)。里面写上:

drop database if exists mysqlbeifen;

create database mysqlbeifen;

意思是:如果存在数据库,首先删除数据库(貌似对于非空的数据库导入数据库的操作是不成功的,我只试过一次,大家多点试一下),再建立数据库。重点说明的是:数据库的名字要自己再三核对,删除了自己不想删的数据库(你又没有备份)可就是万劫不复了。然后在另一个windows的批处理文件中运行这个mysql的批处理文件。

新建一个叫 run.txt的文本文档,那样,先在这个写好批处理命令。记得,现在run.txt jianshujuku.txt mysqldata.nihao三个文件是在同一级目录下的。运行批处理的命令提示符语句跟刚才导入表的语句一样:

mysql -u用户名-p密码 数据库名

如果你的 jianshujuku.txt就在旁边的话就是:

mysql -uroot 

注意有密码的还是要加上密码。这里是删除数据库,没有用到具体哪一个数据库,所以就不用加数据库名字了。

平时你不加数据库名字但是要用到具体的某一个数据库的话,可以在批处理文件头加上一条语句:

use 数据库名称;

来实现(最好加上分号,虽然命令提示符上是不用加的)。

然后保存三个文件,退出,然后重命名 run.txt,把扩展名改成.bat(就是run.bat),然后你会看到图标会改变成批处理的图标。双击run.bat,然后再在图形界面(例如navicat)看看数据库是不是建好了,如果是已经存在的数据库是不是变成空了。

成功了就代表离最后的胜利只差一步了。就是右键 run.bat,编辑。进入txt编辑界面(就是刚才的)。把导入数据库的语句写在第二行,总的来说,整个文件就是:

mysql -uroot 

mysql -uroot mysqlbeifen 

注意:这里都是用相对路径的,就是现在bat文件在那两个mysql的批处理文件旁边。

保存退出,然后双击 run.bat看数据是不是都导入了?如果没有看看你是不是漏输了密码还是路径啊什么的错了。然后你把这个文件拿去演示只要双击一下bat文件就建好数据库并导入数据了,当然,bat文件要修改用户名和密码,也要先看一下那里的数据库是不是有同名的,不要随便把人家的删除了,不然就悲剧了。如果你怎么运行这两句都没有效果,可以尝试在命令提示符那里运行一下bat文件里面的那两句(注意要改变批处理文件路径),是不是有语法错误。

下面说一说我平时用数据库编程的一些体会。

1、建表一定要用sql语句建,别以为图形界面建表很简单,其实你根据需求修改得太多你也不知道你建的是什么表了,但是你只是在sql语句那里修改,就很明了了。而且到了别人那里你可以用回这些sql语句建出一个一模一样的表出来。

2、一般开发中用sql语句建表可以在之前加上一句:

drop table if exists 表名;

这样就不用每次建表都删除原来的表这么麻烦了。当然这是在经常要改动的时候用的。

3、表到了一个阶段可以用xml文件把所有表到处一次(我用的是navicat做的这个备份)。如果你的表的列做了修改,那就要重新单独的导入这个表的数据了,而不是整个数据库复制(那样修改会没有效的)。如果是增加了一些not null的列最好加一个default方便导入。

好了,以上仅供参考之用,觉得有用的记得留个言哦。还有,转载请注明原文出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值