在搭建的服务器运行一段时间之后,因为本身不是专业运维出身,担心服务器挂掉以及数据丢失,所以有了按时备份数据库的想法。服务器是部署在阿里云的,并且也在用阿里云的 OSS,所以直接使用阿里云 OSS 来备份。
我使用的是如 MySQL,所以直接用如 MySQL 自带的 mysqldump
进行备份。
sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash
说明
- 安装过程中,需要使用解压工具(unzip、7z)解压软件包,请提前安装其中的一个解压工具。
- 安装完成后,ossutil 会安装到/usr/bin/目录下。
输入配置命令。
ossutil config
根据提示设置配置文件路径。
请输入配置文件名,文件名可以带路径(默认为:/home/user/.ossutilconfig,回车将使用默认路径。
如果用户设置为其它路径,在使用命令时需要将--config-file选项设置为该路径):
ossutil 默认使用/home/user/.ossutilconfig 作为配置文件,若您设置了配置文件的路径,则每次使用命令时需增加-c 选项指定配置文件。例如配置文件保存为/home/config,使用 ls 时,命令格式如下:
ossutil ls oss://examplebucket -c /home/config
根据提示设置工具的语言。请输入语言CH
或EN
。工具使用的语言默认与操作系统保持一致。该配置项将在此次 config 命令设置成功后生效。
根据提示分别设置Endpoint
、AccessKey ID
、AccessKey Secret
和STSToken
参数。关于参数的更多信息,请参见通过 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 的生成方式,请参见临时访问凭证。 |
ossutil
如果屏幕中输出 ossutil 所有支持的命令,表明已成功安装 ossutil。
mysqldump
进行备份:
mysqldump -u [username] -p[password] [database_name] > backup.sql
ossutil cp backup.sql oss://your-bucket-name/backup.sql
每天自动备份 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~
确保脚本具有执行权限:
chmod +x backup_and_upload.sh
使用cron
定期执行脚本。编辑cron
任务列表:
crontab -e
添加以下任务,每天凌晨 2 点执行备份脚本:
0 2 * * * /path/to/backup_and_upload.sh
保存并退出编辑器。
可以手动执行一次脚本,验证备份文件是否成功上传到 OSS 并且权限设置为private
:
./backup_and_upload.sh
数据库备份工具有很多,不同的数据库系统(如 MySQL、PostgreSQL、Oracle 等)有各自专用的备份工具。以下是一些常见的: