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

浙公网安备 33010602011771号