利用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
相关推荐
sealaugh321 天前
aws(学习笔记第一课) AWS CLI,创建ec2 server以及drawio进行aws画图
笔记·学习·aws
冰万森2 天前
亚马逊AI编程工具Amazon Q 和 Amazon CodeWhisperer使用教程
云计算·aws
Victor随笔集3 天前
AWS IoT Core for Amazon Sidewalk
物联网·aws·aws iot·sidewalk
xybDIY3 天前
解决AWS Organizatiion邀请多个Linker账号数量限额问题
云计算·aws
AlbertS5 天前
AWS上迁移WordPress遭遇若干问题记处理办法
acm·aws·wordpress·alb·route53·postfix
shiran小坚果5 天前
AWS Redshift 如何让新的table创建即自动赋予权限
数据库·云计算·database·aws
杰哥在此5 天前
Python知识点:如何使用AWS Greengrass与Python进行边缘计算
python·面试·编程·边缘计算·aws
shiran小坚果6 天前
AWS Redshift把老用户权限赋予新用户
数据库·云计算·database·aws
九河云6 天前
如何保障AWS根账号安全
安全·云计算·aws
大鹅i7 天前
AWS Network Firewall -NAT网关配置只应许白名单域名出入站
云计算·aws