1、数据迁移
将/tmp/t3.txt中的数据导入到t3表中,数据以逗号为分割符
load data infile ‘/tmp/t3.txt’ into table t3 fields terminated by ',';
将table2表中的数据导出为文件data.txt,以逗号为分隔符
SELECT * INTO OUTFILE 'data.txt'
-> FIELDS TERMINATED BY ','
-> FROM table2;
#####在mysql命令行内执行 ? select 查看select命令的帮助信息
2、逻辑备份
查看mysqldump的帮助,使用方法
mysqldump --help
备份前使用FLUSH TABLES;更新事物
备份命令
mysqldump -uroot -p d1 > /tmp/d1.sql
恢复命令,要先create 数据库 d1
mysql -uroot -p d1 < /tmp/d1.sql
在操作系统命令窗口执行sql语句的方式
mysql -uroot -p d1 -e 'show tables;'
3、物理备份
先停止服务
cp data文件夹
如果出现问题需要恢复就把备份的文件夹 重命名为data放到该放的位置
要修改文件夹的属主属组为原来的属主属组,比如mysql:mysql
chown -R mysql:mysql data
再启动已经就没问题了,而且数据已经恢复
4、基于binlog的恢复到制定时间点
查看binlog情况,ON为开启
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set, 1 warning (0.02 sec)
查看binlog清单
mysql> show binary logs;
+-----------------+-----------+
| Log_name | File_size |
+-----------------+-----------+
| data-bin.000001 | 154 |
+-----------------+-----------+
1 row in set (0.00 sec)
比如7点时,进行了数据库的mysqldump的备份
mysqldump -uroot -p d1 --master-data=2 > d1-7.sql
之后,在d1库中又建了两张表,t4和t5
但是在9点的时候,有人不小心把t4表删除掉了
现在要求数据库恢复到t5,t4刚创建时候的状态
恢复
先看dump备份时,日志走到了哪里?
MASTER_LOG_FILE='mysql-bin-0000009' MASTER_LOG_POS=325
用mysqlbinlog解析mysql-bin-000009
找到时间点at 325,拆分出日志文件
mysqlbinlog mysql-bin-000009 --start-position=325 --stop-position=511 > log1.txt
检查日志是否符合要求,用cat log1.txt
使用拆分的日志文件restore,
用use d1
source log1.txt