标签: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;
本文出自 “刘福” 博客,请务必保留此出处http://liufu1103.blog.51cto.com/9120722/1656834
标签:mysql数据备份与恢复
原文地址:http://liufu1103.blog.51cto.com/9120722/1656834