MySQL数据备份

MySQL数据备份

 

mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql 
例如备份某个数据库 在cmd窗口输入:
mysqldump -uroot -p123 --database day45 > c:\\day45_bak_2017_10_30.sql 
备份到了C盘下 ,最好以备份的时间命名

恢复库:
mysql -uroot -p123 < c:\\day44_back_2017_10_30.sql
可以把><看出箭头,代表备份去向
一次备份多个库(每个库后面跟空格)
mysqldump -uroot -p123 --databases day43 day44 day45 > C:\\day43_day45_day44_bak_2017_10_30.sql

恢复库
mysql -uroot -p123 <  C:\\day43_day45_day44_bak_2017_10_30.sql
备份多个表
mysqldump -uroot -p  day45 employee t1 t2 > C:\\day45_t1_t2_employee_bak_2017_10_30.sql

恢复表
mysql -uroot -p day45 <  C:\\day45_t1_t2_employee_bak_2017_10_30.sql

 

备份所有的库
mysqldump -uroot -p  --all-databases > C:\\all.sql

恢复库
mysql -uroot -p <   C:\\all.sql

也可以用source恢复库

 

 表的导出和导入

SELECT... INTO OUTFILE 导出文本文件
示例:
mysql> SELECT * FROM school.student1
INTO OUTFILE 'student1.txt'
FIELDS TERMINATED BY ',' //定义字段分隔符
OPTIONALLY ENCLOSED BY '' //定义字符串使用什么符号括起来
LINES TERMINATED BY '\n' ; //定义换行符


mysql 命令导出文本文件
示例:
# mysql -u root -p123 -e 'select * from student1.school' > /tmp/student1.txt
# mysql -u root -p123 --xml -e 'select * from student1.school' > /tmp/student1.xml
# mysql -u root -p123 --html -e 'select * from student1.school' > /tmp/student1.html

LOAD DATA INFILE 导入文本文件
mysql> DELETE FROM student1;
mysql> LOAD DATA INFILE '/tmp/student1.txt'
INTO TABLE school.student1
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY ''
LINES TERMINATED BY '\n';

 

#可能会报错
mysql> select * from db1.emp into outfile 'C:\\db1.emp.txt' fields terminated by ',' lines terminated by '\r\n';
ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable


#数据库最关键的是数据,一旦数据库权限泄露,那么通过上述语句就可以轻松将数据导出到文件中然后下载拿走,因而mysql对此作了限制,只能将文件导出到指定目录
在配置文件中
[mysqld]
secure_file_priv='C:\\' #只能将数据导出到C:\\下

重启mysql
重新执行上述语句 net stop mysql \net start mysql

报错:Variable 'secure_file_priv' is a read only

数据库迁移

务必保证在相同版本之间迁移
# mysqldump -h 源IP -uroot -p123 --databases db1 | mysql -h 目标IP -uroot -p456

 

posted @ 2017-10-30 16:21  hello沃德  阅读(77)  评论(0)    收藏  举报