首页 > 数据库 >Mysql数据库定时备份到OSS

Mysql数据库定时备份到OSS

时间:2023-09-25 11:49:31浏览次数:31  
标签:rclone OSS Mysql sh mysql backup 备份

背景

mysql运行在Docker中,计划每天定时备份数据并存储到阿里云OSS。其中用到了定时任务crontab、云存储管理rclone、shell脚本

部署脚本

# 创建目录
mkdir -p ~/task
cd ~/task
# 创建主备份脚本
touch backup_main.sh
# 创建mysql备份脚本,这个后面要传到运行mysql的docker容器
touch mysql_backup.sh

将一下脚本写入到mysql_backup.sh

#!/bin/bash
backUpFolder=/mnt/backup
databaseName=yourDatabaseName
backFileName="${databaseName}.sql"
password='***'

#创建备份目录
if [ ! -d $backUpFolder ];then
    mkdir -p $backUpFolder
fi
# 进入备份文件夹
cd $backUpFolder

# 导出 dbName 数据库
mysqldump -h 127.0.0.1 -u${username} -p${password} $databaseName > $backFileName

# 压缩导出的数据
tar zcvf $databaseName.tar.gz $backFileName

# 删除文件夹,只保留备份的压缩包
rm -rf $backFileName

将一下脚本写入到backup_main.sh

#!/bin/bash
# 放在宿主机上,将备份的文件拷贝到宿主机并上传到oss
dateNow=`date +%Y_%m_%d_%H%M`
# 这个fileName与mysql_backup.sh中的databaseName保持一直
fileName=yourDatabaseName
newFileName=${fileName}-$dateNow.tar.gz
backupPath=/mnt/data/dbBackup
# 这是rclone中的OSS路径
# yourRcloneConfigName:rclone中的配置名称
# yourBucketName:OSS中的Bucket名改成
# yourBackupPath:要备份到OSS的路径
rclonePath=yourRcloneConfigName:/yourBucketName/yourBackupPath

#创建备份目录
if [ ! -d $backupPath ];then
    mkdir -p $backupPath
fi
/usr/bin/docker exec mysql sh -c 'sh /mnt/mysql_backup.sh' && \
/usr/bin/docker cp mysql:/mnt/backup/${fileName}.tar.gz ${backupPath}
dateNow=`date +%Y_%m_%d_%H%M`
mv ${backupPath}/${fileName}.tar.gz ${backupPath}/${newFileName}
# 
/usr/bin/docker exec rclone sh -c "rclone copy /data/${newFileName} ${rclonePath} && rm -rf ${newFileName}"

将脚本mysql_backup.sh复制到mysql的容器中

docker cp ./mysql_backup.sh mysql:/mnt/

Docker安装Rclone

docker run --restart unless-stopped --name rclone -it \
    --privileged=true \
    --volume /mnt/data/rclone:/config/rclone \
    --volume /mnt/data/dbBackup:/data \
    rclone/rclone \
    config

执行以上指令后会直接进入rclone的配置,根据命令提示和官方文档完成OSS的配置。
然后在宿主机执行sh ~/task/backup_main.sh 然后去OSS检查备份的文件是否已经上传到云端。

添加到定时

crontab -e

输入一下代码

# 每天4点备份数据库
0 4 * * * sh /root/task/backup_main.sh

完成.

标签:rclone,OSS,Mysql,sh,mysql,backup,备份
From: https://www.cnblogs.com/andyxq/p/17727592.html

相关文章

  • mysql 查询时额外查询一个index列,类似sqlserver的ROW_NUMBER()
    --创建临时表CREATETEMPORARYTABLEtemp1AS(SELECT(@rowindex:=@rowindex+1)ASrowindex,a.city_id,b.nameas'city_name',a.dept_name,a.final_pointFROMaqjd_assessment_deptaJOINsys_citybona.city_id=b.idJOIN(SELECT(@rowindex:=......
  • mysql5.7的一些日常操作
    查看库MySQL[mysql]>showdatabases;+--------------------+|Database|+--------------------+|information_schema||auditlog||mysql||nacos_config||performance_schema||sys|+---------......
  • Mysql 字符集不一致导致连表异常的解决
    Mysql字符集不一致导致连表异常的解决 做一个简单的如下的连表查询,居然直接提示错误,居然是字符集不一致的问题,本文记录一下mysql的字符集类型,感兴趣的可以了解一下。目录1.解决方法2.mysql字符集字符集校验规则做一个简单的如下的连表查询,居然直接提示错误,居然是......
  • MySQL运维1-日志
    一、错误日志错误日志是MySQL中最重要的日志之一,它记录了当MySQL启动和停止时,以及服务器在运行过程中发生的任何严重错误时的相关信息,当数据库出现任何故障导致无法正常使用时,建议首先查看此日志错误日志默认是开启的,默认存在目录/var/log/,默认的日志文件名为mysqld.log......
  • MySQL可以查询自定义字段
     有时,为了方便起见,我们希望添加一列固定值来帮助查看MySQL中的数据,但又不希望这列出现在MySQL中。举个例子:mysql>createtablestudent(namevarchar(20));mysql>insertintostudentvalues('张三');    如果直接查询,结果如下:mysq>select*fromstudent;+--------+......
  • MySQL DATE_ADD() 函数
    定义和用法DATE_ADD()函数向日期添加指定的时间间隔。语法DATE_ADD(date,INTERVALexprtype)date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。type参数可以是下列值:Type值MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUTE_MICRO......
  • mysql查询sum出来数据是decimal,转换成int
    mysql查询count数据是decimal,用python转换json格式的时候会报错,在查询的时候处理成无符号型,用cast查询出来countNum是DecimalSELECTgid,SUM(number)countNumFROM`gift_tb`WHEREtid="1"GROUPBYgid转换成无符号型SELECTgid,CAST(SUM(number)ASSIGNED)AScoun......
  • MySQL实战实战系列 04 深入浅出索引(下)
    在上一篇文章中,我和你介绍了InnoDB索引的数据结构模型,今天我们再继续聊聊跟MySQL索引有关的概念。 在开始这篇文章之前,我们先来看一下这个问题: 在下面这个表T中,如果我执行select*fromTwherekbetween3and5,需要执行几次树的搜索操作,会扫描多少行? 下面是这......
  • PostgreSQL教程:备份与恢复(物理备份、物理恢复)
    物理备份(归档+物理)这里需要基于前面的文件系统的备份和归档备份实现最终的操作单独使用文件系统的方式,不推荐毕竟数据会丢失。这里直接上PostgreSQL提供的pg_basebackup命令来实现。pg_basebackup会做两个事情、会将内存中的脏数据落到磁盘中,然后将数据全部备份会将wal日志直接做归......
  • MySQL 的 blob 类型有哪些?
    MySQL中有两种主要的BLOB类型,用于存储二进制数据:TINYBLOB:TINYBLOB类型可以存储最多255字节的二进制数据。BLOB:BLOB类型可以存储最多65,535字节的二进制数据。此外,MySQL还有两种变体的BLOB类型,它们用于存储更大的二进制数据:MEDIUMBLOB:MEDIUMBLOB类型可以存储最多16,77......