mysql 备份与恢复(全量与增量)

全量备份使用自带的mysqldump命令

备份命令

mysqldump -u[username] -p[password]  [database] [table] > backup.sql


恢复命令

mysql -u[username] -p[password] [database] < backuo.sql


注意恢复命令是mysql不是mysqldump了。


增量备份与恢复

我们开启日志功能,在进行备份后,在指定目录下会产生当次备份后所有操作的日志,通过这个日志,可以把全量备份后所进行的操作所改变的数据状态恢复出来。


1.在 /etc/mysql 下的my.conf 配置文件中。找到log_bin语句,并取点前面的注释符号。

#log_bin = /var/log/mysql/mysql-bin.log

2.使用一下命令进行备份

mysqldump -u[username] -p[password] --single-transaction --flush-logs --master-data=2  [database] [table] > backup.sql


single-transaction的作用是在一个事务里对全部表取得一致性快照来保证事务的一致性。

master-data=2 主要是记录Binlogde log 和pos,用于之后基于位置和时间点的恢复。


执行了上面这条命令之后,同样会得到一个backup.sql的备份文件,另外在目录/var/log/mysql/下面会有日志文件生成。

例如,在我的目录下生成了名为 “mysql-bin.000005” 的二进制文件。

使用命令 mysqlbinlog mysql-bin.000005 > test0005.sql

可以将二进制文件解析出来。

部分截取如下:

#170331  0:56:19 表示时间是2017年03月31日的0点56, end_log_pos 295 表示上一条命令的行序号

-------------------------------------


#170331  0:56:19 server id 1  end_log_pos 295  Xid = 443
COMMIT/*!*/;
# at 295
#170331  0:56:22 server id 1  end_log_pos 364  Query  thread_id=39    exec_time=0    error_code=0
SET TIMESTAMP=1490946982/*!*/;
BEGIN
/*!*/;
# at 364
#170331  0:56:22 server id 1  end_log_pos 456  Query  thread_id=39    exec_time=0    error_code=0
SET TIMESTAMP=1490946982/*!*/;
insert one value(2233,"qwe")

-----------------------------------------------------------------------------

我们同样使用命令:

mysqldump -u[username] -p[password]  [database] [table] > backup.sql

来恢复全量备份。

然后通过对日志的查看,通过使用“时间”或者“行号”作为约束条件,我们可以恢复我们所需要的增量数据。

a.使用时间作为约束条件

mysqlbinlog --start-datetime="20170331 00:56:19" --stop-datetime="20170331 00:57:11" mysql-bin.000005 | mysql -u[username] -p[password] 

b.使用行号作为约束条件

mysqlbinlog --start-position=1556 --stop-position=1648 mysql-bin.000005 |mysql -u[username] -p[password]


------

补充一下,如果要在Linux下面执行定时备份,先创建可执行脚本。

#!/bin.bash

mysqldump -u[username] -p[password] kuone | gzip  > /home/andy/testSQL/DatabaseName_$(date +%Y%m%d_%H%M%S).sql


然后使用命令 crontab -e  在里面写定时任务,比如每天0点执行一次

0 0 * * * sh /home/andy/backup.sh 

然后重启一下cron任务

service cron restart 

好了,就是这样。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值