使用阿里云OSS备份数据库

在搭建的服务器运行一段时间之后,因为本身不是专业运维出身,担心服务器挂掉以及数据丢失,所以有了按时备份数据库的想法。服务器是部署在阿里云的,并且也在用阿里云的 OSS,所以直接使用阿里云 OSS 来备份。

我使用的是如 MySQL,所以直接用如 MySQL 自带的 mysqldump 进行备份。

安装 ossutil

1. 下载 ossutil。

sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash

说明

  • 安装过程中,需要使用解压工具(unzip、7z)解压软件包,请提前安装其中的一个解压工具。
  • 安装完成后,ossutil 会安装到/usr/bin/目录下。

2. 配置 ossutil。

  1. 输入配置命令。

    ossutil config
  2. 根据提示设置配置文件路径。

    请输入配置文件名,文件名可以带路径(默认为:/home/user/.ossutilconfig,回车将使用默认路径。
    如果用户设置为其它路径,在使用命令时需要将--config-file选项设置为该路径):

    ossutil 默认使用/home/user/.ossutilconfig 作为配置文件,若您设置了配置文件的路径,则每次使用命令时需增加-c 选项指定配置文件。例如配置文件保存为/home/config,使用 ls 时,命令格式如下:

    ossutil ls oss://examplebucket -c /home/config
  3. 根据提示设置工具的语言。请输入语言CHEN。工具使用的语言默认与操作系统保持一致。该配置项将在此次 config 命令设置成功后生效。

  4. 根据提示分别设置EndpointAccessKey IDAccessKey SecretSTSToken参数。关于参数的更多信息,请参见通过 config 命令进行快速配置。 参数说明:

    参数 说明
    endpoint 填写 Bucket 所在地域的 Endpoint。关于各地域 Endpoint 的更多信息,请参见访问域名和数据中心。您也可以增加http://https://指定 ossutil 访问 OSS 使用的协议,默认使用 HTTP 协议。例如,使用 HTTPS 协议访问华东 1(杭州)的 Bucket,设置为https://oss-cn-hangzhou.aliyuncs.com
    accessKeyID accessKeySecret 填写账号的 AccessKey。- 使用阿里云账号或 RAM 用户访问时,AccessKey 的获取方式,请参见创建 AccessKey。- 使用 STS 临时授权账号访问时,AccessKey 的获取方式,请参见使用 STS 临时访问凭证访问 OSS
    stsToken 使用 STS 临时授权账号访问 OSS 时需要配置该项,否则置空即可。关于 stsToken 的生成方式,请参见临时访问凭证

3. 验证是否已成功安装 ossutil。

ossutil

如果屏幕中输出 ossutil 所有支持的命令,表明已成功安装 ossutil。 ossutil

使用数据库自带的备份工具并上传到 OSS

1. MySQL

  1. 使用mysqldump进行备份
    mysqldump -u [username] -p[password] [database_name] > backup.sql
  2. 使用阿里云 OSS 命令行工具(ossutil)上传备份文件
    ossutil cp backup.sql oss://your-bucket-name/backup.sql

使用脚本自动化备份和上传

1. 编写自动化备份脚本

每天自动备份 MySQL 数据库并将备份文件上传到 OSS,并设置权限为private,可以编写一个 Bash 脚本。例如,脚本backup_and_upload.sh如下: 脚本实例

#!/bin/bash
 
# 配置部分
DB_USER="your_mysql_username"
DB_PASS="your_mysql_password"
DB_NAME="your_database_name"
OSS_BUCKET="your-oss-bucket-name"
OSS_ENDPOINT="your-oss-endpoint"
OSS_DIR="your-oss-directory" # 可选,用于指定备份文件在OSS中的子目录
 
# 创建备份文件名
BACKUP_FILE="backup_$(date +%Y%m%d%H%M%S).sql"
 
# 执行数据库备份
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FILE
 
# 上传备份文件到OSS,并设置权限为private
ossutil cp $BACKUP_FILE oss://$OSS_BUCKET/$OSS_DIR/$BACKUP_FILE --endpoint $OSS_ENDPOINT --acl private
 
# 删除本地备份文件
rm $BACKUP_FILE~

2. 设置脚本执行权限

确保脚本具有执行权限:

chmod +x backup_and_upload.sh

3. 配置定时任务

使用cron定期执行脚本。编辑cron任务列表:

crontab -e

添加以下任务,每天凌晨 2 点执行备份脚本:

0 2 * * * /path/to/backup_and_upload.sh

保存并退出编辑器。

4. 验证上传和权限设置

可以手动执行一次脚本,验证备份文件是否成功上传到 OSS 并且权限设置为private

./backup_and_upload.sh

5. 备份结果

res

数据库备份工具有很多,不同的数据库系统(如 MySQL、PostgreSQL、Oracle 等)有各自专用的备份工具。以下是一些常见的:

数据库备份工具

MySQL/MariaDB

  1. mysqldump:MySQL 自带的命令行工具,适用于逻辑备份。
  2. Percona XtraBackup:开源工具,支持热备份,不影响数据库的运行。
  3. MySQL Enterprise Backup:MySQL 官方提供的企业级备份工具。

PostgreSQL

  1. pg_dump:PostgreSQL 自带的逻辑备份工具。
  2. pg_basebackup:用于物理备份的工具,适用于流复制设置。
  3. Barman (Backup and Recovery Manager):针对 PostgreSQL 的备份和恢复管理工具。

Oracle

  1. RMAN (Recovery Manager):Oracle 提供的强大备份和恢复工具,支持物理和逻辑备份。
  2. Oracle Data Pump:用于逻辑备份和导出的工具。

SQL Server

  1. SQL Server Management Studio (SSMS):图形化管理工具,提供备份和恢复功能。
  2. sqlcmd:命令行工具,可以执行备份和恢复命令。
  3. Azure Backup:适用于托管在 Azure 上的 SQL Server 实例。

MongoDB

  1. mongodump:MongoDB 自带的备份工具,适用于逻辑备份。
  2. MongoDB Atlas Backup:MongoDB Atlas 提供的云备份服务。

通用备份工具

  1. Bacula:开源的网络备份工具,支持多种数据库系统的备份。
  2. Amanda:开源备份解决方案,支持多种数据库和文件系统。
  3. Veeam Backup:商业备份解决方案,支持虚拟机和数据库备份。

云端备份工具

  1. AWS Backup:支持多种数据库的云备份服务,包括 Amazon RDS、DynamoDB 等。
  2. Google Cloud Backup:Google Cloud 提供的备份服务,支持 Cloud SQL 等数据库。
  3. Azure Backup:Azure 提供的备份服务,支持多种数据库实例。