介绍一种,最简单的备份方法。
其实,算不上是备份方法,只能算是导出数据的方法。
一、OUTFILE 命令
1.1 概述
DBA运维,常用;
开发,会找DBA运维,线上导出一些数据,就是用的这个;
二、OUTFILE 命令的使用方式
2.1 理论
- MySQL,都会有一个安全操作的文件目录。
即,想要将OUTFILE的内容,导出为文件,可以查询导出路径目录:
- 没有中间红框,就是一个非常正常的SQL语句
2.2 示例
1.找到MySQL的安全操作的文件目录:
show variables like '%secure%';
variables
变量
2.看数据表中的数据
- 切库;
- 看一下该库下,数据表t1的数据
3.使用into outfile命令,存进安全目录里的一个文件中;
- 本来是
select * from t1;
- 需要将上述查询的内容,存放到安全目录的一个新文件里:
select * into outfile '/var/lib/mysql-files/t1-out' from t1;
- 退出数据库,再用cat命令,查看这个系统中的文件:确实存进去了
4.能否通过最简单的OUTFILE 命令,来备份同一时刻的,所有的数据表呢?
可以。因为MySQL数据库,的默认隔离级别是Compeatable Read
可重复读,即事务begin时的状态。
这非常重要,否则就是备份的是这一秒的t1数据表,下一秒的t2数据表,存在不一致性。
5.适当美化:
中间加逗号:select * into outfile '/var/lib/mysql-files/t2-out' fields terminated by ',' from t2;
行末加分号:select * into outfile '/var/lib/mysql-files/t2-out2' fields terminated by ',' lines terminated by ';' from t2;
2.3 注意事项
- 这是MVCC的贡献
MVCC 在 MySQL InnoDB 中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。
2.4 缺陷
- 不像数据备份的命令,而只是数据导出的命令
- 不能数据还原。运维、开发,只是用它来简单的导出数据,看一看
三、小结
- 虽然OUTFILE 命令,有缺陷不足,但是,它是有启发性的。它是后面的备份工具的基础。
Comments | NOTHING