MySQL数据备份与恢复

一、MySQL数据备份与恢复
1.数据备份方式:
物理备份:cp tar mysqlhotcopy
逻辑备份:mysqldump  mysql

备份策略:
完全备份  差异备份  增量备份

常用备份组合:
完全备份+差异备份
完全备份+增量备份


2.完全备份
缺点: 无法恢复完整备份后产生的数据,只能把数据恢复到备份时的状态。

样例1
备份:mysqldump -hlocalhost -uroot -p 源库名 > 路径/xxx.sql
恢复:mysql -hlocalhost -uroot -p 目标库名 < 路径/xxx.sql

源库名的表示:
所有库:--all-databases
指定单个库:库名
指定单个表:库名 表名(注:中间没有.)
备份多个库:-B 库1 库2


3.增量备份
启动MySQL   binlog 日志,实现数据的增量备份)
二进制日志(binlog日志)记录使数据发生改变的sql语句(除查询之外的sql语句)
                                           
3.1启用日志方法:
vim   /etc/my.cnf
[mysqld]
log-bin
#log-bin=日志名
#log-bin=目录名/日志名
service  mysql  restart
注:
默认目录   /var/lib/mysql/
日志名字:主机名-bin.000001 (当该日志体积大于500M会自动创建新的日志)
xxx-bin.index  记录当前已有的binlog日志文件名

3.2查看日志内容:
mysqlbinlog    主机名-bin.000001
mysqlbinlog    主机名-bin.000001    |  mysql   -hip   -u用户名  -p密码   数据库名   

3.3手动生成新的binlog日志               
flush logs;   
mysql   -hip   -u用户名  -p密码  -e   "flush logs"
mysqldump    -hip   -u用户名  -p密码   --flush-logs  数据库名   >  备份文件名
service   mysql  restart

3.4根据日志恢复数据
默认mysqlbinlog 命令  把文件的内容从头读到尾
语法格式
mysqlbinlog   主机名-bin.000001    |  mysql   -uroot -p999
mysqlbinlog    $(cat /var/lib/mysql/mail-bin.index)    |  mysql   -uroot  -p999

选项
字符偏移量
--start-position=num      启始偏移量
--stop-position=num      结束偏移量

mysqlbinlog   --start-position=310      主机名-bin.000001
mysqlbinlog   --stop-position=578     主机名-bin.000001
mysqlbinlog  --start-position=201   --stop-position=740     mail-bin.000004  

时间点
--start-datetime="yyyy-mm-dd  hh:mm:ss"   启始时间
--stop-datetime="yyyy-mm-dd  hh:mm:ss"   结束时间


mysqlbinlog   --start-datetime="2014-11-11 23:17:51"    --stop-datetime"=2014-11-11 23:17:52"   /var/lib/mysql/mail-bin.000006   | mysql   -uroot -p999

3.5删除早于指定版本的binlog日志
 PURGE    MASTER LOGS TO  'binlog文件';
 PURGE    MASTER LOGS TO   "mail-bin.000004";
            
删除所有binlog日志,重建新日志
RESET MASTER;

你可能感兴趣的:(MySQL数据备份与恢复)