MySQL的数据建了也有段日子了,但始终没有做备份,确实很不符合数据库的理论,倒是很符合我的懒癌风格。
Using mysqldump
in Command Prompt
在Google搜索”MySQL Backup Restore”出现最多的词应该就是mysqldump
了,一开始以为是一个需要另外安装的软件,所以一直避开不看,结果绕了弯路。
mysqldump
其实是完全复制创建数据库和数据表的过程,导出sql语句文件。这样,在恢复备份时,只需要重新跑一遍导出的sql语句即可。
优缺点
优点是快速复制了数据库和数据表的结构和内容;缺点是碰到如我现在碰到的庞大的表格(一开始一次性导入都十分困难,只能有R循环分批导入的表格),导出过程就如卡死了一般,非常缓慢,也不知道是否能够完全复制。
备份过程
- 点击
Startup
,输入cmd
,打开Windows Command Prompt。 - 输入
cd C:\Program Files\MySQL\MySQL Server 5.6\bin
(具体以使用的版本和路径为准哟)。 mysqldump
基本语法- 备份一个数据库中多个表:
mysqldump -u username -p dbname table1 table2 ...> BackupName.sql
- dbname: 数据库的名称;
- table n: 需要备份的数据表的名称,为空则备份整个数据库;
- BackupName.sql: 备份文件的名称,文件名前面可以加上一个绝对路径。
- 备份多个数据库:
mysqldump -u username -p --databases dbname2 dbname2 ...> BackupName.sql
- 备份所有数据库:
mysqldump -u username -p --all-databases > BackupName.sql
- 备份一个数据库中多个表:
- 输入
root
的password。
恢复过程
仍然在Windows Command Prompt中,把>
之前最低一级单位的名称删除,然后把>
换成<
即可。
注意要在C:\Program Files\MySQL\MySQL Server 5.6\bin
目录下。
- 恢复一个数据库中多个表:
mysqldump -u username -p dbname < BackupName.sql
- 恢复一个或多个数据库:
mysqldump -u username -p < BackupName.sql
可能出现的问题
- 我一开始把导出的目标文件夹命名为
MySQL DB Backup
,中间有空格,结果提示说mysqldump: Couldn't find table: "DB"
,让我很是无语啊,于是就改成了MySQL_Backup
。 - 备份之前请一定检查一下目标文件夹的空间够不够,否则就会碰到我碰到的窘况。
Backup failed: mysqldump: Got errno 28 on write Meaning: Insufficient disk space to store output. Solution: Free up some disk space. You might want to track down the reason you’re low on disk space too.
Copy data
file from MySQL Server Path
原先二师兄好像也研究过这一块,然而今天在一篇博客中看到详解,让我茅塞顿开(虽然还来不及完全尝试╮(╯▽╰)╭)。
优缺点
据说是直接复制出来,要还原的时候直接粘贴在相同路径就欧儿了!
补充 2016-04
试了几次貌似并不成功。恢复时粘贴回原来的文件,文件夹里看起来跟原始状态一样,MySQL里面也能看到那张表,但是无法成功打开或操作。 建议还是使用数据库生成方式进行备份与恢复。 应该是有解决方案的才对=。=
具体过程
这里说的data
文件夹并不是C:\Program Files\MySQL\MySQL Server 5.6\data
,而是隐藏文件夹: C:\Users\All Users\MySQL\MySQL Server 5.6\data
。
- 先设置
Folder and search options
中隐藏文件夹可见。 - 找到文件夹
C:\Users\All Users\MySQL\MySQL Server 5.6\data
,打开可以看到之前创建的数据库。 - 复制 & 粘贴。
- 恢复时只要粘贴到此目录下即可。
- 最好在备份好后仍然隐藏文件夹,以避免误删某些系统文件。
快去尝试一下吧!说你呢,二师兄!;p