mysql数据库备份与恢复

压缩备份单个数据库,mysqldump实际上就是把数据从mysql库里以逻辑的sql语句的形式导出。

mysqldump -uroot -p --default-character-set=gbk  test|gzip>test.sql.gz

备份多个库,使用-B选项
备份数据库里面的某个表

mysqldump -u 用户名 -p 数据库名 表名> 备份的文件名         #备份单个表
mysqldump -u 用户名 -p 数据库名 表名 表名> 备份的文件名      #备份多个表

只备份数据库结构,使用-b选项

[root@oldboy ~]# mysqldump -uroot -p'oldboy123' -d oldboy >/tmp/desc.sql                         
[root@oldboy ~]# egrep -v "*|--|^$" /tmp/desc.sql            
DROP TABLE IF EXISTS `ett`;
CREATE TABLE `ett` (
  `id` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=gbk;

如果有多个库,我们应该用-d来指定恢复单个库

还原数据:先还原全备,再还原增备
先还原全备:mysql –u root –p  <mysqlfile.sql
还原增备:mysql –u root –p  <binlog.sql(恢复增备的时候,需要把误操作的语句删掉后,再还原,否则,还原后,还是会和误操作后一样)

基于时间点的增量恢复
mysqlbinlog mysql-bin.000004 –start-datetime=2011-03-19 025854’—stop-datetime=2011-03-19 032244’ –r time.sql
上面语句将显示2011.03-19 02:58:54-----2011-03-19 03:22:44时间段的binlog,并输出到time.sql
拽定开始时间到文件结束
mysqlbinlog mysql-bin.000004 –start-datetime=2011-03-19 025854’ –d oldboy –r time.sql
这个语句只有开始时间,那么就是从2011-03-19 025854时刻到日志结尾,lodboy数据库的binlog输出到time.sql

基于位置点的增量恢复
指定开始位置和结束位置
mysqlbinlog mysql-bin.000004 –start-position=510 –stop-position=1312 –r pos.sql
输出初始位置510,结束位置1312的所有binlog日志到pos.sql
注意:结尾的日志点细弱特殊不会被包含。即输出1312pos以前的binlog。
指定开始位置到文件结束
mysqlbinlog mysql-bin.000004 –start-position=510 –r pos510-end.sql
输出初始位置510,结束位置到文件结尾的所有binlog到pos510-end.sql。当然,你也可以指定库名输出binlog。如:
mysqlbinlog mysql-bin.000004 --start-position=510 –r pos510-end-oldboy.sql –d oldboy
从文件开头到指定结束位置
mysqlbinlog mysql-bin.000004 --stop-position=954 -r start-954.sql
输出从文件开始位置,到954位置截止的所有binlog
原文地址:https://www.cnblogs.com/biaopei/p/7730503.html