首页 > 数据库 >MySQL数据库的定时备份与还原

MySQL数据库的定时备份与还原

时间:2022-12-01 11:33:46浏览次数:37  
标签:备份 MySQL dd sql mysql backup 数据库 dir

一. MySQL备份

1. Cron 是Linux的内置服务,可以用以下的方法启动、关闭这个服务:

service crond start //启动服务

service crond stop //关闭服务

service crond restart //重启服务

service crond reload //重新载入配置

service crond status //查看服务状态

 

 

你也可以将这个服务设置在系统启动的时候自动启动:

在/etc/rc.d/rc.local这个脚本的末尾加上:

/sbin/service crond start

2. 创建一个mysql备份的shell脚本, 保存为 mysql_dump_script.sh

#!/bin/bash


#保存备份个数,备份3天数据
number=3
#备份保存路径
backup_dir=/backup/mysql
#备份名称
backup_name=mysqlbak
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=mysql@2022
#将要备份的数据库(多个请添加配置)
database_name1=nacos_config
database_name2=xxl_job


#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi

 

#备份多个数据库的结构和数据(将crontab执行的错误信息重定向到errors.log中,方便排查)
$tool -u$username -p$password --databases $database_name1 $database_name2 > $backup_dir/$backup_name-$dd.sql 2>$backup_dir/errors.log
#备份单个数据库的结构和数据
#$tool -u$username -p$password $database_name1 > $backup_dir/$backup_name-$dd.sql 2>$backup_dir/errors.log
#备份所有数据库的结构和数据
#$tool -u$username -p$password -A > $backup_dir/$backup_name-$dd.sql 2>$backup_dir/errors.log


#写创建备份日志
echo "create $backup_dir/$backup_name-$dd.sql" >> $backup_dir/log.txt


#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`


#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`


if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi

3. 给脚本文件添加执行权限

chmod +x  mysql_dump_script.sh

4. 编写定时任务

进入cron定时任务编辑页面:
crontab -e 

添加如下配置(每天凌晨3点执行):
 0 3 * * * /backup/mysql/mysql_dump_script.sh 

保存退出

5. 查看cron定时任务

crontab -l

 

二. MySQL还原

方式1: 系统命令环境下:

mysql -uroot -p123456 < /backup/mysql/mysqlbak-$dd.sql

方式2: 登录进入mysql系统中,通过source指令找到对应系统中的文件进行还原:

mysql> source /backup/mysql/mysqlbak-$dd.sql

 

三. docker下mysqldump的备份

#独立执行脚本
docker exec -it mysql容器名称 $tool -u$username -p$password $database_name1 > $backup_dir/$backup_name-$dd.sql 2>$backup_dir/errors.log

#crontab任务执行: 去除-it参数,否则crontab执行时dump出来的文件大小始终是0,文档解释-t是分配一个伪终端,但是crontab执行的时候实际是不需要的
docker exec mysql容器名称 $tool -u$username -p$password $database_name1 > $backup_dir/$backup_name-$dd.sql 2>$backup_dir/errors.log

 

标签:备份,MySQL,dd,sql,mysql,backup,数据库,dir
From: https://www.cnblogs.com/Baker-Street/p/15861547.html

相关文章

  • 一. 预装MySQL前的准备
    1.硬件标准化帮助公司和运维团队,选择最合适MySQL数据库运行的服务器硬件,从品牌、CPU、MEM、IO设备、网络设备、存储设备等各个层次进行合理建议.而不是上采购人员、......
  • 超聚变服务器操作系统FusionOS与阿里云PolarDB数据库完成兼容性认证
    近日,超聚变服务器操作系统FusionOS签署阿里巴巴开源CLA(ContributionLicenseAgreement,贡献许可协议),正式与阿里云PolarDB开源数据库社区牵手,并率先展开超聚变服务器......
  • SQLSERVER数据库三种恢复模式
    1、https://blog.csdn.net/Auspicious_air/article/details/114028422SQLServer数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。  sqlser......
  • 生产环境核心数据库切换流程
    1.整体原则按现有架构搭建一套全新的SQL群集,将现有的业务数据库迁移到新设备1、使用单台共享存储架构,不考虑使用alwayson的数据库架构,继续使用SQL群集架构2、尽量减......
  • 记录mysql服务突然不能启动,报错:windows无法启动MYSQL服务(位于本地计算机)错误1067进程
    发生这个问题的背景:在删除一些不用的数据库,然后点别的库突然报一些之前写sql时的错误,然后我就把mysql服务关了,当再点击启动时就报下边这个错了。又试了重启电脑仍然没有......
  • KingbaseES数据库通过dblink访问Oracle数据库
    本文介绍如KingbaseES数据库通过dblink访问Oracle数据库。源端:KingbaseES数据库(KingbaseESV008R006C006B0021)目标端:Oracle数据库一、配置Oracle的ODBC1、安装odbc,若有......
  • 配置ODBC连接KingbaseES数据库
    本文介绍如何通过ODBC连接KingbaseES数据库。1、配置odbc1)安装odbc,若有odbc则不用进行安装yum-yinstallunixODBC2)确认修改文件路径[root@node01~]#odbcinst-......
  • 1+N环境-分布式数据库mysql8系列故障重启问题处理
    1、背景多个业务连接异常,navicat连接数据库不稳定,连接进入数据库后也会出现卡死的,连接失败的报错2、问题分析2.1 问题描述:navicat、服务器中连接数据库均复现业务报告......
  • 快速测试SQL Server数据库的连接
    微软的SQLServer数据库应该是中小企业中使用最多的数据库,一般个人测试环境也都是用的它。下面介绍一种快速测试SQLServer数据库连接性的方法:1.新建一下记事本,将后缀名......
  • 1+N环境MySQL8.0.29/30版本BUG处理措施
    背景:前期安全漏扫后,1+N环境中部分MySQL8.0数据库由低版本通过upgrade方式升级到8.0.29版本,后又升级到8.0.30版本。此版本的upgrade升级方式,在执行altertableaddcolmun......