searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

postgresql容器化逻辑备份实现

2023-05-25 09:08:23
48
0
数据库备份方式根据产生文件类型分为物理备份和逻辑备份。
    所谓逻辑备份,即逻辑导出数据,生成sql文件或其他格式文件。这里逻辑备份指的存量备份。
    postgresql进行逻辑备份,一般使用自带的客户端工具,pg_dump 、pg_dumpall。这两个工具可以可以远程或本地导出逻辑数据,区别是pg_dumpall 是对整个数据库集群进行备份,pg_dump 可以选择一个数据库或者部分表进行备份。
    Zalando Postgres Operator集成了pg数据库逻辑备份功能,通过指定备份镜像,可以轻松实现单次逻辑备份及周期备份,内部实现实际采用pg_dumpall实现。
    pg_dumpall 可以导出所有数据库,逻辑备份中并不会阻塞其他用户对数据库的DML操作,但由于备份过程需要对进行备份的对象加ACCESS SHARE锁,该锁与DDL操作冲突,避免备份过程中数据结构改变, 或者数据被物理的删除掉了。 所以生产环境一般不建议在主库上执行pg_dumpall。
    使用Postgres Operator实现pg逻辑备份步骤如下:
   1、operator中进行与逻辑备份相关的配置:
configLogicalBackup:
  # image for pods of the logical backup job (example runs pg_dumpall)
  logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.7.1"

  # prefix for the backup job name
  logical_backup_job_prefix: "logical-backup-"
  # storage provider - either "s3" or "gcs"
  logical_backup_provider: "s3"
  # S3 Access Key ID
  logical_backup_s3_access_key_id: ""
  # S3 bucket to store backup results
  logical_backup_s3_bucket: "my-bucket-url"
  # S3 region of bucket
  logical_backup_s3_region: ""
  # S3 endpoint url when not using AWS
  logical_backup_s3_endpoint: ""
  # S3 Secret Access Key
  logical_backup_s3_secret_access_key: ""
  # S3 server side encryption
  logical_backup_s3_sse: "AES256"
  # S3 retention time for stored backups for example "2 week" or "7 days"     S3中备份保留时间,为空将一直保留
  logical_backup_s3_retention_time: ""
  # backup schedule in the cron format
  logical_backup_schedule: "30 00 * * *"

   

      注意上述logical_backup_s3_sse为指定 S3 存储使用的服务器端加密。 如果指定了空字符串,则不会将任何参数传递给 aws s3 命令。 默认值:“AES256”。
      该配置需要根据S3实际情况填写,如果服务端未设置加密,那么该选项设置空,否则采用默认值可能如下报错:
aws s3 cp - s3://postgres/spilo/zy-test-cluster/72226680-fbf8-4e67-a518-7ec0d634f2bc/logical_backups/1653299060.sql.gz --expected-size=5398894 --endpoint-url=http://minio.minio.svc:80 --sse=AES256
      upload failed: - to s3://postgres/spilo/zy-test-cluster/72226680-fbf8-4e67-a518-7ec0d634f2bc/logical_backups/1653299060.sql.gz An error occurred (NotImplemented) when calling the PutObject operation: Server side encryption specified but KMS is not configured
      2、postgresql实例CR中开启如下相关配置:
enableLogicalBackup: true
logicalBackupSchedule: "30 00 * * *"
        备注:以上配置,默认yaml中是注释的,即实例默认不开启逻辑备份。如需进行逻辑备份,创建实例时,需要去掉注释,并设置正确的备份周期。
     3、进入minio 容器内查看备份:
[root@caas-cluster-test-2-0009 logical_backups]# ll
total 0
drwxr-xr-x 2 10000 10000 21 May 26 10:40 1653532810.sql.gz
drwxr-xr-x 2 10000 10000 21 May 26 10:50 1653533411.sql.gz
[root@caas-cluster-test-2-0009 logical_backups]# pwd
/opt/minio/pvc-2f9fd6b8-b604-4933-88ba-d0974c4e1be5_minio_2-minio-test-pg-0/postgres/spilo/zy-test-cluster/d91dbc9c-b63c-481d-8062-8bf1d042569a/logical_backups
        当备份数据不超过1MB时,备份数据将和minio元数据合并,写入xl.meta文件;
        如果超过1MB,则生成独立文件;
 
 
 
0条评论
0 / 1000
z****n
5文章数
0粉丝数
z****n
5 文章 | 0 粉丝
原创

postgresql容器化逻辑备份实现

2023-05-25 09:08:23
48
0
数据库备份方式根据产生文件类型分为物理备份和逻辑备份。
    所谓逻辑备份,即逻辑导出数据,生成sql文件或其他格式文件。这里逻辑备份指的存量备份。
    postgresql进行逻辑备份,一般使用自带的客户端工具,pg_dump 、pg_dumpall。这两个工具可以可以远程或本地导出逻辑数据,区别是pg_dumpall 是对整个数据库集群进行备份,pg_dump 可以选择一个数据库或者部分表进行备份。
    Zalando Postgres Operator集成了pg数据库逻辑备份功能,通过指定备份镜像,可以轻松实现单次逻辑备份及周期备份,内部实现实际采用pg_dumpall实现。
    pg_dumpall 可以导出所有数据库,逻辑备份中并不会阻塞其他用户对数据库的DML操作,但由于备份过程需要对进行备份的对象加ACCESS SHARE锁,该锁与DDL操作冲突,避免备份过程中数据结构改变, 或者数据被物理的删除掉了。 所以生产环境一般不建议在主库上执行pg_dumpall。
    使用Postgres Operator实现pg逻辑备份步骤如下:
   1、operator中进行与逻辑备份相关的配置:
configLogicalBackup:
  # image for pods of the logical backup job (example runs pg_dumpall)
  logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.7.1"

  # prefix for the backup job name
  logical_backup_job_prefix: "logical-backup-"
  # storage provider - either "s3" or "gcs"
  logical_backup_provider: "s3"
  # S3 Access Key ID
  logical_backup_s3_access_key_id: ""
  # S3 bucket to store backup results
  logical_backup_s3_bucket: "my-bucket-url"
  # S3 region of bucket
  logical_backup_s3_region: ""
  # S3 endpoint url when not using AWS
  logical_backup_s3_endpoint: ""
  # S3 Secret Access Key
  logical_backup_s3_secret_access_key: ""
  # S3 server side encryption
  logical_backup_s3_sse: "AES256"
  # S3 retention time for stored backups for example "2 week" or "7 days"     S3中备份保留时间,为空将一直保留
  logical_backup_s3_retention_time: ""
  # backup schedule in the cron format
  logical_backup_schedule: "30 00 * * *"

   

      注意上述logical_backup_s3_sse为指定 S3 存储使用的服务器端加密。 如果指定了空字符串,则不会将任何参数传递给 aws s3 命令。 默认值:“AES256”。
      该配置需要根据S3实际情况填写,如果服务端未设置加密,那么该选项设置空,否则采用默认值可能如下报错:
aws s3 cp - s3://postgres/spilo/zy-test-cluster/72226680-fbf8-4e67-a518-7ec0d634f2bc/logical_backups/1653299060.sql.gz --expected-size=5398894 --endpoint-url=http://minio.minio.svc:80 --sse=AES256
      upload failed: - to s3://postgres/spilo/zy-test-cluster/72226680-fbf8-4e67-a518-7ec0d634f2bc/logical_backups/1653299060.sql.gz An error occurred (NotImplemented) when calling the PutObject operation: Server side encryption specified but KMS is not configured
      2、postgresql实例CR中开启如下相关配置:
enableLogicalBackup: true
logicalBackupSchedule: "30 00 * * *"
        备注:以上配置,默认yaml中是注释的,即实例默认不开启逻辑备份。如需进行逻辑备份,创建实例时,需要去掉注释,并设置正确的备份周期。
     3、进入minio 容器内查看备份:
[root@caas-cluster-test-2-0009 logical_backups]# ll
total 0
drwxr-xr-x 2 10000 10000 21 May 26 10:40 1653532810.sql.gz
drwxr-xr-x 2 10000 10000 21 May 26 10:50 1653533411.sql.gz
[root@caas-cluster-test-2-0009 logical_backups]# pwd
/opt/minio/pvc-2f9fd6b8-b604-4933-88ba-d0974c4e1be5_minio_2-minio-test-pg-0/postgres/spilo/zy-test-cluster/d91dbc9c-b63c-481d-8062-8bf1d042569a/logical_backups
        当备份数据不超过1MB时,备份数据将和minio元数据合并,写入xl.meta文件;
        如果超过1MB,则生成独立文件;
 
 
 
文章来自个人专栏
中间件云原生实践
5 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0