利用AWS batch备份PostgreSql数据库到S3

这里只是关键步骤,使用需要对PostgreSql,docker,aws有一定的了解。

PostgreSql 数据备份和恢复

备份PostgreSql数据库成二进制文件(压缩率高)
  • 利用pg_dump备份
r 复制代码
pg_dump  -h {pg_host} -U {pg_username} -d {pg_database} -F c -f {pg_backupfile}
恢复
  • 恢复时候首先需要创建数据库
ini 复制代码
CREATE DATABASE {pg_database};
  • 利用pg_restore直接还原二进制文件备份文件到相应的数据库。

    pg_restore -h {pg_host} -U {pg_username} -d {pg_database} {pg_backupfile}

利用AWS batch备份PostgreSql数据库到S3

有了上面的基础我们就可以利用aws batch 实现数据库的备份

  • 首先我们写一个Dockerfile(这里aws的权限直接使用batch的配置,所以没在docker里面配置)
bash 复制代码
FROM ubuntu
RUN apt update
RUN apt install postgresql-client unzip curl -y
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN ./aws/install
RUN ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
COPY ./postgresql_backup.sh .
RUN  chmod +x postgresql_backup.sh
  • 下面是Dockerfile 用到的sh脚本 (里面用到了batch环境变量,不使用batch直接替换成明文即可)
bash 复制代码
#!/bin/bash
echo "start"
echo $pg_host
echo $pg_username
echo $pg_database
echo $pg_backupfile
echo $pg_s3_path
aws --version
export PGPASSWORD=$pg_password
pg_dump  -h $pg_host -U $pg_username -d $pg_database -F c -f $pg_backupfile
aws s3 cp $pg_backupfile $pg_s3_path
echo "end"
  • 这时候可以本地自己生成images放到AWS ECR. 也可以使用gitlab的CI/CD. 下面是.gitlab-ci.yml 参考

CI/CD环境请自行配置

css 复制代码
stages:
    - dockerimage

dockerize:
    stage: dockerimage
    script:
        - aws --version
        - echo `aws ecr get-login --registry-ids {aws_account_id} --no-include-email --region <region>`
        - docker buildx build --file Dockerfile --pull --tag <aws_account_id>.dkr.ecr.<region>.amazonaws.com/postgresql_backup:$CI_COMMIT_TAG --build-arg VersionSuffix=$CI_COMMIT_TAG --push .
    tags:
        - linux
    only:
        - tags

AWS Batch简单配置

任务运行命令,以及环境变量

Job command : ["/bin/bash","./postgresql_backup.sh"]

Job environment variable:

key value
pg_backupfile
pg_s3_path
pg_username
pg_host
pg_password
pg_database
相关推荐
翼龙云_cloud14 天前
亚马逊云代理商:GPT-6 Astra 上线 Amazon Bedrock API 调用与企业集成实操
云计算·aws·gpt-6 astra
上海英方软件股份有限公司15 天前
什么是 VMware Cloud on AWS 灾难恢复
云计算·vmware·虚拟化·aws·容灾·灾难恢复·云灾备
yunlaodacom16 天前
AWS亚马逊云服务代理商:EC2和S3为什么建议放在同一Region?跨Region流量费和网络成本怎么规划
网络·云计算·aws
科技每日热闻17 天前
AWS Activate云积分可以用于哪些云服务和AI开发场景?
人工智能·ai·云计算·aws
2501_9304724418 天前
深度复盘|数据库迁移实战(上):腾讯云助手解析慢查询日志,定位索引缺失与语法不兼容
数据库·阿里云·ffmpeg·云计算·腾讯云·aws
万象新讯18 天前
申请 AWS Activate 的初创企业要满足什么条件,需准备哪些资料?
大数据·人工智能·aws
商业看点解说18 天前
AWS Activate除了提供云积分,还能为初创企业提供哪些技术和生态资源?
aws
johnny23319 天前
云计算AWS:服务简介与实战
aws
zhojiew20 天前
让 Agent 安全地“借用别人的钥匙“:AgentCore 上用 Authentik 打通 OAuth 出站的一次实战
安全·ai·aws·agentcore
2601_9622986721 天前
AWS推ADOP:用AI Agent把数据工程从周压缩到小时
ai·自动化·agent·aws·数据工程