Cirry's Blog

Debian11备份Postgres到华为对象存储

2023-04-04
技术
postgres
最后更新:2024-03-21
8分钟
1406字

Linux系统安装obsutil

上传文件到华为对象存储中需要使用到工具obsutil,需要先下载安装obsutil。

1.打开命令行终端,执行wget命令下载obsutil工具。

Terminal window
1
wget https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz

2.在软件包所在目录,执行以下解压命令

Terminal window
1
tar -xzvf obsutil_linux_amd64.tar.gz

3.进入obsutil所在目录,执行以下命令,为obsutil增加可执行权限。

Terminal window
1
chmod 755 obsutil

4.继续在目录中执行以下命令,如果能顺利返回obsutil版本号,说明安装成功。

Terminal window
1
./obsutil version

准备环境

使用obsutil前您需要执行注册云服务帐号、开通OBS服务以及获取访问密钥(AK和SK)等环境准备操作。

如果您还没有账号和存储服务,请参考快速入门-准备环境创建账号并开通服务。

如果您已经有了账号和开通过存储服务,前往管理控制台,进入对象存储服务OBS,找到用户帐号中的AK和SK进行签名验证。

以下是对AK和SK的解释说明:

Access Key Id(AK):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。

Secret Access Key(SK):与访问密钥ID结合使用的私有访问密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。

创建访问密钥

1.在控制台单击页面右上角的用户名,并选择“我的凭证”。

我的凭证

2.在“我的凭证”页面,单击左侧导航栏的“访问密钥”。

访问密钥

3.在“访问密钥”页面,单击“新增访问密钥”。

新增访问密钥

4.添加成功提示

成功提示

5.在弹出的“下载确认”提示框中,单击“确定”后,密钥会直接保存到浏览器默认的下载文件夹中。

6.打开下载下来的“credentials.csv”文件即可获取到访问密钥(AK和SK),请妥善保存密钥文件

说明: 每个用户最多可创建两个有效的访问密钥。

配置obsutil与OBS的对接

这里需要获取OBS当前开通的区域和终端节点地址,您可以从这里查看

例如,访问区域为华北-北京四,则实际的OBS服务地址为:https://obs.cn-north-4.myhuaweicloud.com。

可以先在这里查看自己的OBS开通区域:

查看自己的OBS开通区域

再根据上述网页中找到对应的信息。

Linux环境下的配置

永久配置(推荐使用)

使用永久AK、SK进行初始化配置:

Terminal window
1
./obsutil config -i=ak -k=sk -e=endpoint
2
# 举例 ./obsutil config -i=WP2OMTI6Z0V9EBxxxxxx -k=KJEsijUUCDCIGAExJ9knsw67yApMtkcxxxxxxxxx -e=https://obs.cn-east-3.myhuaweicloud.com

配置完成后提示:

配置完成后提示

临时配置

使用临时AK、SK、SecurityToken进行初始化配置:

Terminal window
1
./obsutil config -i=ak -k=sk -t=token -e=endpoint

您可以在这里查看完整的obsutil配置参数

快速使用命令

关于utils的简单使用,参考文档快速使用

使用命令简单测试本地上传:

Terminal window
1
obsutil_linux_amd64_5.4.11/obsutil cp index.txt obs://postgresbak/index.txt

测试上传

测试上传

上传成功

上传成功

Shell脚本备份数据库

准备工作都已经完成了,接下来可以进入正题了。

1
#!/bin/bash
2
3
# 定义备份目录和时间戳
4
BACKUP_DIR="/tmp/postgresbak" # 根据自身情况修改修改备份目录
5
TIMESTAMP=$(date +%Y%m%d)
6
7
BACKUP_DIR=$BASE_BACKUP_DIR-$TIMESTAMP
8
mkdir $BACKUP_DIR
9
10
# 定义Obsutil文件位置和OBS上传目录
11
OBSUTIL_TOOL_FILE_PATH="/root/obsutil_linux_amd64_5.4.11" # 根据自身情况修改
12
OBSUTIL_UPLOAD_PATH="obs://postgresbak" # 根据自身情况修改
13
14
# 定义连接信息和密码
15
PG_HOST="localhost"
26 collapsed lines
16
PG_PORT="5432"
17
PG_USER="postgres"
18
PG_PASSWORD="password" # 修改为你的数据库密码
19
20
# 获取所有数据库名称
21
DATABASES=$(sudo -u postgres psql -qAt -c "SELECT datname FROM pg_database WHERE NOT datistemplate AND datname<>'postgres'")
22
23
# 遍历所有数据库并备份
24
for DB_NAME in $DATABASES; do
25
# 定义备份文件名
26
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$TIMESTAMP.backup"
27
28
# 使用pg_dump命令备份数据库(禁用密码提示)
29
PGPASSWORD=$PG_PASSWORD pg_dump -Fc -v -h $PG_HOST -p $PG_PORT -U $PG_USER -w -f $BACKUP_FILE $DB_NAME
30
31
# 验证备份文件是否存在
32
if [ -f "$BACKUP_FILE" ]; then
33
echo "备份已成功创建:$BACKUP_FILE"
34
else
35
echo "备份创建失败。"
36
fi
37
done
38
39
# 上传备份文件到OBS中
40
$OBSUTIL_TOOL_FILE_PATH/obsutil cp -r -f $BACKUP_DIR $OBSUTIL_UPLOAD_PATH
41
echo "备份文件夹:$BACKUP_DIR,成功上传至:$OBSUTIL_UPLOAD_PATH"

以上脚本就是我正常使用的脚本,接下来添加定时任务。

添加定时任务

在进行此操作之前,您最好有过了解cron表达式相关内容。

如果不知道的话,也可以直接复制配置内容,只需要修改执行文件的路径即可。

以下是在Debian 11中添加一个每周日凌晨四点执行脚本的示例:

  1. 打开终端并以root用户身份登录。

  2. 输入以下命令来编辑crontab文件:

Terminal window
1
crontab -e

在crontab文件的末尾添加以下一行,用于设置每周日凌晨四点执行脚本的定时任务:

Terminal window
1
0 4 ** 7 /path/to/your/script.sh # 修改路径为你要执行的脚本路径

在这行命令中,0 4 ** 7表示每周日的凌晨四点执行脚本。/path/to/your/script.sh是您要执行的脚本的完整路径。

保存并关闭crontab文件。

现在,您的定时任务已经添加到cron中,会在每周日凌晨四点自动执行您的脚本。

如果您需要删除或编辑已添加的定时任务,可以再次输入crontab -e命令来打开crontab文件,并编辑或删除相应的行。

到这里,我们每周自动备份数据库到华为对象存储服务的任务就完成啦!!!

本文标题:Debian11备份Postgres到华为对象存储
文章作者:Cirry
发布时间:2023-04-04
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
感谢大佬送来的咖啡☕
alipayQRCode
wechatQRCode