mysql学习之旅-数据迁移-备份-恢复

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

 

posted @ 2016-09-02 18:24  年轻的卖油翁  阅读(258)  评论(0编辑  收藏  举报