MySQL的备份:
数据库备份必要性:
- 保证重要数据不丢失
- 数据转移
MySQL数据库备份方法:
1. mysqldump备份工具(mysqldump它是和mysql同一级别的命令)
将CREATE和INSERT INTO语句保存到文本文件
属于DOS命令
作用:
- 转储数据库
- 搜集数据库进行备份
- 将数据转移到另一个SQL服务器(不一定是MySQL服务器)
语法:
mysqldump [options] –u username –h host –p password
dbname[tbname1[,tbname2……]]>filename.sql
options:选项参数
username:用户名
host:登录主机名
password:密码
dbname:需备份的数据库名
tbname1[,tbname2……]]:需备份的表名(省略则备份所有表)
>:输出到
filename.sql:备份后的文件名称
注:
- P后面的密码可以不写直接进入填写密码的格式
- 备份后的文件名称前的大于号“>”一定要写,否则就会报错
Mysqldump --help可以帮助你查看查看Mysqldump里的可选参数
Mysqldump –help | more也可以查看查看Mysqldump里的可选参数,但是此时可以一行一行看
有记不住的参数直接百度就可以了
常用参数选项:
参数 | 描述 |
-add-drop-table | 在每个CREATE TABLE语句前添加DROP TABLE语句,默认是打开的,可以用-skip-add-drop-table来取消 |
--add-locks | 该选项会在INSERT 语句中捆绑一个LOCK TABLE 和UNLOCK TABLE 语句 好处:防止记录被再次导入时,其他用户对表进行的操作 |
-t或-no-create-info | 只导出数据,而不添加CREATE TABLE语句 |
-c或--complete-insert | 在每个INSERT语句的列上加上列名,在数据导入另一个数据库时有用 |
-d或--no-data | 不写表的任何行信息,只转储表的结构 |
--where "where- condition", -w "where- condition" | 只转储给定的WHERE条件选择的记录 |
--opt | 该选项是速记;等同于指定 --add-drop-tables --add-locking --create-option --disable-keys -- extended-insert --lock-tables --quick --set-charset |
执行结果示例:
2. 数据库管理工具,如SQLyog
步骤:
- 找到要备份的数据库,右键选择备份/导出,选择以SQL转储文件导出
- 挑选要备份的文件夹,在tables中选择要备份的表,在上面选择导出的东西
- 选择导出到的文件夹,并选择写入文件选项
(记住选择文件选项时一定不要勾选“包括‘USE database’语句”和“包括‘CREATE database’语句”;否则会出现显示导入成功,数据库中却为空的情况)
注:
打钩的选项看清楚不能影响恢复
3. 直接拷贝数据库文件和相关配置文件
在C盘中的隐藏文件夹ProgramData中找到MySQL选择MySQL Server 5.5找到data路径是:C:\ProgramData\MySQL\MySQL Server 5.5\data;然后就能看到各个数据库,在里面直接复制后缀为.frm;.MYD;.MYI这三个文件就可以
此方法不是最优的数据库备份和恢复方案
4. 使用SQL命令方式来备份
语法:
SELECT 列元素 INTO OUTFILE '文件路径' FROM 要备份的文件;
示例:
SELECT studentno,studentname INTO OUTFILE 'D:/mysqlfile/school.sql' FROM student;
注:
备份出去的文件不可以提前存在;而且文件夹路径中不能有中文
MySQL数据库的恢复:
1. mysqldump备份工具(mysqldump它是和mysql同一级别的命令)
方法一:
用SOURCE语法:
/path/是一个绝对路径,并且必须是mysql运行用户有权限读取的文件
SOURCE在MySQL命令行里执行
SOURCE
示例:
CREATE DATABASE myschoolDB2; #创建数据库
USE myschoolDB2; #选择数据库
source d:\backup\myschool_20160808.sql; #恢复数据库
步骤:
- 登录MySQL服务后使用
- use 要恢复到的数据库
- 然后再MySQL里写:source 脚本路径,这样就能恢复到数据库里
方法二:
用mysql客户端
mysql –u username –p password [dbname] < filename.sql;
filename.sql:备份文件名
步骤:
- 登录DOS系统
- 直接输入mysql –uroot –p08170327 test<脚本路径
2. 数据库管理工具,如SQLyog
步骤:
- 选择要恢复的数据库,右键选择导入,选择以SQL转储文件导入
- 填入要恢复的文件夹以及文件名,点击导入
(有时会出现显示导入成功,数据库中却为空的情况,原因是选的文件名和恢复的文件中create以及use的名字不同,请往前看)
3. 使用SQL命令方式来恢复
语法:
LOAD DATA INFILE '文件路径' INTO TABLE
示例:
USE test;
CREATE TABLE student(
id INT(4),
sname VARCHAR(20)
)
#将备份出去的数据恢复到test数据库student表中
LOAD DATA INFILE 'D:/mysqlfile/school.sql' INTO TABLE student(id,sname);
SELECT *FROM student;