接触Mysql到今天,还没有一个星期,感觉相比较mssql,mysql很多地方很不方便。今天学习备份和恢复,遇到最麻烦的一个问题,就是编码,到现在还不明白为什么,反正用mysql这几天,让我很吐血,但还是不得不用,下面正题。
数据备份
cmd
>cd c:\Program Files\MySQL\MySQL Server 5.0\bin --有的server 2003 系统这命令没反应,是 cd /d
进入bin目录后,开始备份
>mysqldump -uroot -p1 databasename>d:\\d.sql -- -p1是参数-p密码1,这里我试过,如果-p和密码1中间加空格的,会把1识别为数据库,所以一般是跟在一起的。
执行成功,是不会有任何提示的,只有到保存的位置看是否已有文件。
打开d.sql,看到里面有表和视图,但不会有存储过程。
数据还原
还原前,有二件事要做,1、备份的文件中,没有use databasename ,也就是说,不知道你要还原到那个数据库去。所以要打开d.sql,并在里面最前加 use databasename,
另一个就是删除d.sql内容最前面的这些(接触时间过短,不明白为什么),如果不删除,在还原中,会提示出错。
-- MySQL dump 10.11
--
-- Host: localhost Database: etm_one
-- ------------------------------------------------------
-- Server version 5.0.90-community-nt
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
在这里遇到一个非常非常怪的问题,差我吐血。
就是如果我先删除上面的代码,再写use databasename,用source还原,use会被识别为乱码(就是一个顺序的问题,还是不明白为什么)
>cd c:\Program Files\MySQL\MySQL Server 5.0\bin
>mysql -uroot -p1
>source d:\\d.sql --或 source d:d.sql
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
....
还原成功
用mysql,很让人郁闷,可能是用久了mssql,很多地方不习惯。
2012-05-23
刚再试了几遍,竟然没有后面那个问题了。。。。。。。。。。。
不明白。