数据库系列-MySQL-备份还原导入导出–待验证

Backup/Restore

备份方式

温  服务在线,仅支持读请求,效率一般,存在数据刷新问题。

冷  需关闭mysql服务,读写请求均不允许,效率高,适应初期或完整备份

热  备份的同时,业务不受影响, 效率低,存在数据冗余和一致性问题。

备份工具  mysqldump

MyISAM不支持热备,InnoDB支持热备

完全+增量+二进制日志

完全+差异+二进制日志

— 锁定读写 添加参数

–lock-all-tables;  — 所有表

–lock-tables;

— 刷新 表只读锁

flush tables with read lock;

— 刷新 innodb 引擎

show engine innodb status;

— 数据库离线

 

— 完全备份

mysqldump -uroot –single-transaction –master-data=2 –databases hellodb > /backup/hellodb_`date +%F`.sql;

–single-transaction: 基于此选项能实现热备InnoDB表;因此,不需要同时使用–lock-all-tables;

–master-data=2 记录备份那一时刻的二进制日志的位置,并且注释掉,1是不注释的

–databases hellodb 指定备份的数据库
create table tb1(id int); 创建表

insert into tb1 values (1),(2),(3); 插入数据,这里只做演示

cat hellodb_2013-09-08.sql | less

— CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000013′, MASTER_LOG_POS=15684; 记录了二进制日志的位置

show master status;

显示此时的二进制日志的位置,从备份文件里边记录的位置到我们此时的位置,即为增量的部分

+——————+———-+————–+——————+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000004 | 15982 | | |

+——————+———-+————–+——————+

做增量备份

mysqlbinlog –start-position=15694 –stop-position=15982

/mydata/data/mysql-bin.000013 > /backup/hellodb_`date +$F_%H`.sql

insert into tb1 values (4),(5); 在插入一些数值

mysql> drop database hellodb; 删除hellodb库

导出二进制日志:

mysqlbinlog –start-position=15982 /mydata/data/mysql-bin.000013

查看删除操作时二进制日志的位置

# mysqlbinlog –start-position=15982 –stop-position=16176 /mydata/data/mysql-bin.000013 > /tmp/hellodb.sql

//导出二进制日志

2.10先让mysql离线

set sql_log_bin=0; — 关闭二进制日志

flush logs;  — 滚动下日志

 

— 日志开启和二进制日志文件状态

SET sql_log_bin=0; — 0 关闭  1 开启

SHOW MASTER STATUS ; — 状态

— 还原顺序

1 完整

2 增量/差异

3 二进制日志

 

 

 

import/Output

1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u root -p dataname >dataname.sql
这个时候会提示要你输入root用户名的密码,输入密码后dataname数据库就成功备份在mysql/bin/目录中.

2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u root -p dataname users> dataname_users.sql

3.导出一个数据库结构
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
-d 没有数据 
–add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库
常用source 命令
source d:\wcnc_db.sql

5. 选择(编辑)导入文件
delete from students where Age > 30;
load data infile '/tmp/stud.txt' into table students;