记录对Mysql数据库备份与恢复

首先我的mysql数据库是使用docker容器运行的,为了防止误操作或者容器挂掉导致的数据丢失,所以需要定时对mysql进行备份。

备份的一些基础知识:
冷备:就是停用mysql服务来备份,备份的同时不支持读写
热备:不需要停用服务,支持读写操作
温备:不停用服务,只支持读库
全量备份:相当于打一个镜像
增量备份:只针对时间段的数据进行备份
数据库的备份方式

  1. 通过mysqldump 命令
  2. 使用binlog

一:使用mysqldump备份

  1. 这里我们备份mall库

    mall中一共有76张表
    在这里插入图片描述
  2. 创建backup目录用于存放备份文件
  3. 备份命令
  • mysqldump -uroot -p --databases mall > /backup/mall.sql

在这里插入图片描述
4.这里我们删除所有表,然后再尝试恢复

这里mall中表已经完全删除了
5.切换到需要导入的库中

  • 恢复命令 source /backup/mall.sql
  1. 恢复成功

二:使用binlog的方式恢复【要恢复内容需要被binlog记录】

注:从mysql8开始默认会开启binlog,之前的版本需要手动开启

  1. 查看是否开启binlog
  2. 设置binlog的生成位置
  • vim etc/mysql/my.cnf
  • show variables like ‘log_bin’;
  1. 做一些正常操作,创建库test01,创建表 table01
  2. 现在做一次误操作删库

    4.查看binlog日志
  • show binary logs;
  1. 通常最近的操作会在最后一个日志,进入binlog目录,将binlog提取为 .sql文件
    在这里插入图片描述
  • 提取binlog命令 mysqlbinlog mysql-bin.000004 > /backup/reconver.sql
  • 查看sql,找到创建库和误操作记录
    在这里插入图片描述
  • 根据两个操作编号恢复
  • mysqlbinlog --start-position=232 --stop-position=1054 /var/lib/mysql/mysql-bin.000004 | mysql -u root -p
    在这里插入图片描述
  1. 查看数据库,被删除的库恢复成功

3. 根据脚本定时备份

  • 脚本如下
	# mysql 为安装mysql的docker
	#!/bin/bash
	docker_name=mysql
	data_dir="/backup/mysql/"  #宿主机中备份的位置
	docker exec $docker_name mysqldump -uroot -p123456 mall > "$data_dir/solo_`date +%Y%m%d%H%M%S`.sql"
	# 删除7天以前的备份
	find $data_dir -mtime +7 -name 'solo_*.sql' -exec rm -rf {} \;

使用linux自带的定时调度

  • crontab -e
#每分钟一次
*/1 * * * *  /bin/sh /mysqlBackup.sh
  • 添加执行权限 chmod +x mysqlBackup.sh
  • 查看备份文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值