mysql数据备份和恢复

  • 创建测试库和表,并插入测试数据
CREATE TABLE `t_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `test`.`t_user`(`id`, `name`, `age`) VALUES (1, 'zhangsan', 20);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`) VALUES (2, 'lisi', 21);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`) VALUES (3, 'wangwu', 22);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`) VALUES (4, 'zhaoliu', 30);

  •  执行mysqldump导出数据
mysqldump -uroot -pjusthyc1234 --databases test > /data/dump_test.sql
#-u指定用户
#-p指定密码
#--databases 指定要备份的库,多个库以空格分隔,也可以指定--all-databases参数来备份全部的数据库
  • 查看备份文件是否存在

  •  此时更新id=4的记录的age字段为35(好可怜,马上要被辞退了。。。)

update t_user set age = 35 where id = 4;
  •  假设有人执行了删库操作(新手会犯这类错误,删数据忘记加条件)
-- 删除数据忘记加条件
delete from t_user
  •  不怕,我们有备份数据,紧急恢复下,把数据恢复到执行dump的那个状态
mysql -uroot -pjusthyc1234 test < /data/dump_test.sql

  •  数据是恢复了,但是版本有点老了,丢掉了我们之前的update操作,这个咋办,没事,我们还有binlog日志,这个日志可以帮助我们增量恢复数据,来看一下binlog日志吧
mysqlbinlog --no-defaults --set-charset=utf8 mysql-bin.000001 -d test
#--no-defaults:忽略默认值
#--set-charset=utf8:指定字符集
#-d:指定数据库

好吧,一大推看不懂的东西 ,不过我们可以找到执行delete的那个时间点,我们只需要把数据恢复到这个时间点之前就好了

  •  执行mysqlbinlog恢复数据,然后查询下数据,可以看到从dump到删库之前的数据改动恢复回来啦,可以下班回家啦
mysqlbinlog --no-defaults --set-charset=utf8 --start-datetime "2020-06-03 15:00:00" --stop-datetime "2020-06-03 16:18:19" /opt/mysql/binlogs/mysql-bin.000001 | mysql -uroot -p

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值