Sao lưu và khôi phục RPM của AlloyDB Omni vào bộ nhớ tương thích với S3 bằng pgBackRest

1. Giới thiệu

Lớp học lập trình này hướng dẫn cách định cấu hình pgBackRest để sao lưu và khôi phục một bản triển khai RPM AlloyDB Omni bằng bộ nhớ đối tượng tương thích với S3.

Lưu ý: Trong lớp học lập trình này, bạn sẽ triển khai một tệp nhị phân MinIO độc lập trên VM để đóng vai trò là một điểm cuối lưu trữ cục bộ, gọn nhẹ, tương thích với S3 cho mục đích hướng dẫn và kiểm thử. Đối với các khối lượng công việc sản xuất, hãy luôn sử dụng giải pháp lưu trữ tương thích với S3 hoặc bộ nhớ đối tượng trên đám mây được hỗ trợ và duy trì tích cực.

Điều kiện tiên quyết

  • Quyền truy cập vào một dự án Google Cloud và Cloud Shell từ Cloud Console.
  • Google Cloud SDK (gcloud) đã được cài đặt và định cấu hình.

Kiến thức bạn sẽ học được

  • Cách thiết lập một máy ảo Compute Engine cho AlloyDB Omni RPM.
  • Cách thiết lập máy chủ lưu trữ đối tượng tương thích với S3 cục bộ trên VM.
  • Cách định cấu hình pgBackRest để sử dụng bộ nhớ đối tượng tương thích với S3 làm kho lưu trữ sao lưu.
  • Cách thực hiện, liệt kê và xác minh bản sao lưu.
  • Cách khôi phục dữ liệu từ bản sao lưu.

Bạn cần có

  • Lấy đường liên kết đến URL của các RPM AlloyDB Omni. Các đường liên kết này sẽ được gửi đến email của bạn, trong đó có cả máy chủ URL kho lưu trữ. Khởi tạo biến môi trường sau để giữ URL ở trạng thái sẵn sàng sử dụng trong lớp học lập trình.
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    
  • Một cửa sổ dòng lệnh đang hoạt động có quyền truy cập vào Google Cloud. Bạn có thể sử dụng Cloud Shell cho mục đích này.

2. Thiết lập và yêu cầu

Thiết lập dự án

Tạo một dự án trên Google Cloud

  1. Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud.
  2. Đảm bảo bạn đã bật tính năng thanh toán cho dự án trên Cloud. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trong một dự án hay không.

Khởi động Cloud Shell

Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên đám mây.

Biểu tượng để kích hoạt Cloud Shell

  1. Mở Cloud Console rồi nhấp vào biểu tượng Cloud Shell trên thanh công cụ ở trên cùng bên phải.Bạn cũng có thể mở Cloud Shell theo một trong những cách sau:

Quá trình này thường mất vài phút để thiết lập và kết nối với môi trường. Khi thao tác này hoàn tất, bạn sẽ thấy nội dung tương tự như sau:

Cửa sổ dòng lệnh Google Cloud Shell cho thấy môi trường đã kết nối{: width="624"}

3. Tạo máy ảo Compute Engine

Trong phần này, bạn sẽ tạo một máy ảo (VM) Compute Engine (GCE) bằng công cụ dòng lệnh gcloud. Bạn sử dụng một hình ảnh Rocky Linux 9, hoàn toàn tương thích với các RPM AlloyDB Omni.

  1. Xác định các biến môi trường cho mã dự án, tên máy ảo, loại máy, vùng và khu vực.
    export PROJECT="your-project-id"
    export INSTANCE_NAME="alloydb-omni-pgbackrest"
    export MACHINE_TYPE="e2-standard-4"
    export ZONE="us-central1-c"
    export REGION="us-central1"
    
  2. Đăng nhập bằng người dùng tài khoản Google Cloud của bạn và định cấu hình dự án mặc định.
    gcloud auth login
    gcloud config set project $PROJECT
    
  3. Tạo quy tắc tường lửa để cho phép các kết nối SSH đến VM của bạn.
    gcloud compute firewall-rules create allow-ssh-alloydb-omni \
        --project=$PROJECT \
        --direction=INGRESS \
        --action=allow \
        --rules=tcp:22 \
        --source-ranges="0.0.0.0/0"
    
  4. Vì máy ảo được tạo mà không có địa chỉ IP công khai, hãy định cấu hình Cloud Router và cổng Cloud NAT để cho phép máy ảo truy cập vào các kho lưu trữ gói bên ngoài và tải phần mềm cần thiết xuống.
    gcloud compute routers create alloydb-omni-router \
        --project=$PROJECT \
        --network=default \
        --region=$REGION
    
    gcloud compute routers nats create alloydb-omni-nat \
        --project=$PROJECT \
        --router=alloydb-omni-router \
        --region=$REGION \
        --nat-all-subnet-ip-ranges \
        --auto-allocate-nat-external-ips
    
  5. Đảm bảo mạng VPC của bạn có một tuyến cổng Internet mặc định hợp lệ. Trong một số môi trường dùng chung hoặc môi trường thử nghiệm, các tập lệnh dọn dẹp đôi khi sẽ xoá các tuyến đường mặc định. Đây là tuyến đường bắt buộc để Cloud NAT chuyển tiếp lưu lượng truy cập đi đến Internet.
    gcloud compute routes create default-internet-route \
        --project=$PROJECT \
        --network=default \
        --destination-range=0.0.0.0/0 \
        --next-hop-gateway=default-internet-gateway
    
  6. Tạo phiên bản VM Compute Engine bằng Rocky Linux 9 và ổ đĩa liên tục cân bằng 20 GB. Để tăng cường bảo mật, hãy sử dụng cờ --no-address để VM không được chỉ định địa chỉ IP công khai.
    gcloud compute instances create $INSTANCE_NAME \
        --project=$PROJECT \
        --zone=$ZONE \
        --machine-type=$MACHINE_TYPE \
        --image-family=rocky-linux-9 \
        --image-project=rocky-linux-cloud \
        --boot-disk-size=20GB \
        --boot-disk-type=pd-balanced \
        --no-address
    
  7. Sau khi tạo VM, hãy xác minh trạng thái của VM.
    gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
    

4. Thiết lập bộ nhớ đối tượng tương thích với S3

Trong phần này, bạn sẽ kết nối với VM, chuẩn bị môi trường và thiết lập một máy chủ lưu trữ đối tượng tương thích với S3 cục bộ (minio) cùng với một ứng dụng S3 (mc) để lưu trữ nhóm sao lưu.

  1. Kết nối với VM qua SSH bằng Identity-Aware Proxy (IAP). Vì máy ảo không có địa chỉ IP công khai, nên gcloud sẽ tự động chuyển hướng kết nối SSH thông qua IAP.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. Cài đặt gói policycoreutils-python-utils để bạn có thể định cấu hình chính sách SELinux sau này nếu cần.
    sudo dnf install -y policycoreutils-python-utils
    
  3. Tải tệp nhị phân của máy chủ tương thích với S3 xuống (minio).
    curl -L -o minio \
        https://github.com/minio/minio/releases/download/RELEASE.2024-05-10T01-41-38Z/minio.linux-amd64.RELEASE.2024-05-10T01-41-38Z
    chmod +x minio
    sudo mv minio /usr/local/bin/
    
  4. Tạo một thư mục dữ liệu cho máy chủ lưu trữ đối tượng.
    sudo mkdir -p /var/lib/s3-storage/data
    
  5. Khởi động máy chủ tương thích với S3 ở chế độ nền bằng thông tin đăng nhập mẫu. Xin lưu ý rằng khoá bí mật phải có độ dài ít nhất là 8 ký tự.
    export MINIO_ROOT_USER="s3admin"
    export MINIO_ROOT_PASSWORD="s3password"
    
    nohup sudo env MINIO_ROOT_USER="$MINIO_ROOT_USER" \
        MINIO_ROOT_PASSWORD="$MINIO_ROOT_PASSWORD" \
        /usr/local/bin/minio server /var/lib/s3-storage/data \
        --console-address ":9001" \
        > s3-server.log 2>&1 &
    
  6. Xác minh rằng máy chủ tương thích với S3 đang chạy.
    ps aux | grep minio
    
  7. Tải xuống và cài đặt ứng dụng S3 (mc) để quản lý bộ chứa.
    curl -L -o mc \
        https://github.com/minio/mc/releases/download/RELEASE.2024-05-09T17-04-24Z/mc.linux-amd64.RELEASE.2024-05-09T17-04-24Z
    chmod +x mc
    sudo mv mc /usr/local/bin/
    
  8. Định cấu hình bí danh của ứng dụng S3 (s3repo) và tạo một bộ chứa có tên là alloydb-backups.
    mc alias set s3repo http://localhost:9000 s3admin s3password
    mc mb s3repo/alloydb-backups
    

5. Cài đặt AlloyDB Omni

Trong phần này, bạn sẽ cài đặt và định cấu hình AlloyDB Omni.

  1. Xác định các biến môi trường trên máy ảo cho thư mục dữ liệu, URL kho lưu trữ AlloyDB Omni và mật khẩu mạnh cho người dùng quản trị viên PostgreSQL postgres. Thay thế URL bằng URL bạn nhận được từ biểu mẫu đăng ký.
    export PGDATA="/var/lib/alloydbomni"
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export PGPASSWORD="YourStrongPassword123!"
    
    Lưu ý: Việc truyền mật khẩu bằng cách sử dụng các biến môi trường trên dòng lệnh (ví dụ: PGPASSWORD=$PGPASSWORD) được dùng ở đây để đơn giản hoá lớp học lập trình, nhưng có thể để lộ mật khẩu trong danh sách quy trình. Trong quá trình phát hành chính thức, hãy sử dụng các phương thức an toàn hơn, chẳng hạn như tệp .pgpass hoặc trình quản lý bí mật.
  2. Tạo thư mục dữ liệu nơi AlloyDB Omni sẽ lưu trữ các tệp cơ sở dữ liệu.
    sudo mkdir -p $PGDATA
    
  3. Định cấu hình kho lưu trữ YUM trên máy ảo bằng cách tạo tệp cấu hình kho lưu trữ.
    sudo tee /etc/yum.repos.d/alloydbomni.repo << EOF
    [alloydbomni]
    name=alloydbomni
    baseurl=$ALLOYDB_OMNI_REPOSITORY_URL
    enabled=1
    repo_gpgcheck=0
    gpgcheck=1
    gpgkey=https://dl.google.com/linux/linux_signing_key.pub
    EOF
    
  4. Cập nhật bộ nhớ đệm YUM.
    sudo yum makecache
    
  5. Cài đặt phiên bản 18 của gói AlloyDB Omni RPM.
    sudo dnf install -y alloydbomni18
    
  6. Khởi động phiên bản cơ sở dữ liệu AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
    
  7. Tạm thời tắt chế độ thực thi SELinux để tạo điều kiện thuận lợi cho việc thiết lập, theo các phương pháp tiêu chuẩn của lớp học lập trình.
    sudo setenforce 0
    
  8. Chuẩn bị thực thể cơ sở dữ liệu AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  9. Bật và khởi động dịch vụ systemd AlloyDB Omni.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    
  10. Xác minh rằng dịch vụ AlloyDB Omni đang hoạt động và chạy thành công.
    sudo systemctl status alloydbomni18
    

6. Định cấu hình pgBackRest

Trong phần này, bạn sẽ cài đặt pgBackRest từ kho lưu trữ AlloyDB Omni Common, định cấu hình /etc/pgbackrest/pgbackrest.conf để sử dụng vùng lưu trữ đối tượng tương thích với S3 làm kho lưu trữ sao lưu và bật tính năng lưu trữ WAL trong AlloyDB Omni.

  1. Xác định một biến môi trường trên máy ảo cho URL kho lưu trữ chung AlloyDB Omni. Thay thế URL bằng URL bạn nhận được từ biểu mẫu đăng ký.
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..."
    
  2. Định cấu hình kho lưu trữ pgBackRest YUM và cài đặt pgbackrest-2.58.0.
    sudo tee /etc/yum.repos.d/pgbackrest.repo <<EOF
    [pgbackrest]
    name=Google Alloydb Omni Orchestrator
    baseurl=$ALLOYDB_OMNI_COMMON_REPOSITORY_URL
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    gpgkey=https://dl.google.com/linux/linux_signing_key.pub
    EOF
    
    sudo dnf install -y pgbackrest-2.58.0
    
  3. Tạo các thư mục spool và log cho pgBackRest, đồng thời chỉ định quyền sở hữu cho người dùng postgres.
    sudo mkdir -p /var/log/pgbackrest
    sudo mkdir -p /var/lib/pgbackrest
    
    sudo chown -R postgres:postgres /var/log/pgbackrest
    sudo chown -R postgres:postgres /var/lib/pgbackrest
    
  4. Tạo /etc/pgbackrest/pgbackrest.conf và định cấu hình quyền truy cập nghiêm ngặt đối với tệp.
    sudo mkdir -p /etc/pgbackrest/conf.d
    
    sudo tee /etc/pgbackrest/pgbackrest.conf <<EOF
    [global]
    spool-path=/var/lib/pgbackrest
    lock-path=/var/lib/pgbackrest
    
    # S3 Repository details
    repo1-type=s3
    repo1-s3-endpoint=http://localhost:9000
    repo1-s3-bucket=alloydb-backups
    repo1-s3-key=s3admin
    repo1-s3-key-secret=s3password
    repo1-s3-region=us-east-1
    repo1-s3-uri-style=path
    repo1-path=/pgbackrest
    
    # Retention policy
    repo1-retention-full=3
    repo1-retention-full-type=count
    repo1-retention-diff=16
    
    # Force immediate checkpoint during backup start
    start-fast=y
    
    # Logging
    log-path=/var/log/pgbackrest
    log-level-console=info
    log-level-file=info
    
    # Compression
    compress-type=zst
    
    # Asynchronous WAL archiving
    archive-async=y
    archive-push-queue-max=1024MB
    archive-get-queue-max=256MB
    archive-missing-retry=y
    
    [global:archive-push]
    process-max=2
    
    [global:archive-get]
    process-max=2
    
    [omni]
    pg1-user=postgres
    pg1-socket-path=/tmp
    pg1-path=$PGDATA
    EOF
    
    sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf
    sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
    
  5. Khởi động stanza pgBackRest với tư cách là người dùng postgres.
    sudo -u postgres pgbackrest --stanza=omni stanza-create
    
    Xác nhận rằng stanza-create command end: completed successfully xuất hiện trong đầu ra.
  6. Định cấu hình các thông số lưu trữ AlloyDB Omni bằng psql.
    sudo -u postgres /usr/lib/postgresql/18/bin/psql \
        -c "ALTER SYSTEM SET archive_mode = 'on';" \
        -c "ALTER SYSTEM SET archive_command = 'pgbackrest --stanza=omni archive-push %p';" \
        -c "ALTER SYSTEM SET wal_level = 'replica';" \
        -c "ALTER SYSTEM SET max_wal_senders = 10;"
    
  7. Khởi động lại dịch vụ AlloyDB Omni để áp dụng các thay đổi về việc lưu trữ.
    sudo systemctl restart alloydbomni18
    
  8. Xác minh tính toàn vẹn và khả năng kết nối của cấu hình pgBackRest.
    sudo -u postgres pgbackrest --stanza=omni check
    
    Xác nhận rằng check command end: completed successfully xuất hiện trong đầu ra.

7. Sao lưu

Trong phần này, bạn sẽ sử dụng pgBackRest để thực hiện một bản sao lưu đầy đủ và một bản sao lưu gia tăng cho cơ sở dữ liệu AlloyDB Omni vào bộ nhớ đối tượng tương thích với S3.

  1. Kích hoạt quá trình sao lưu đầy đủ bằng cách sử dụng pgbackrest.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=full backup
    
  2. Kích hoạt bản sao lưu gia tăng bằng cách sử dụng pgbackrest.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=diff backup
    
    Lưu ý: Các loại bản sao lưu được hỗ trợ khác bao gồm incr (gia tăng).

8. Liệt kê và xác minh bản sao lưu

Trong phần này, bạn liệt kê các bản sao lưu và xác minh rằng chúng đã hoàn tất thành công.

  1. Liệt kê các bản sao lưu bằng lệnh pgbackrest info.
    sudo -u postgres pgbackrest \
        --stanza=omni info
    
    Xác nhận rằng kết quả cho thấy status: ok cùng với thông tin sao lưu cho mỗi lệnh sao lưu mà bạn đã thực hiện:
    • Sao lưu toàn bộ: full backup: F (ví dụ: 20260908-093545F)
    • Sao lưu gia tăng: diff backup: F_D (ví dụ: 20260908-093545F_20260908-094016D)
  2. Xác minh các tệp sao lưu được lưu trữ trong vùng chứa bằng ứng dụng S3 (mc).
    mc ls s3repo/alloydb-backups/pgbackrest/
    
    Bạn sẽ thấy backup, archive và stanza.info trong kết quả.

9. Khôi phục dữ liệu từ bản sao lưu

Trong phần này, bạn sẽ dừng dịch vụ cơ sở dữ liệu AlloyDB Omni và khôi phục dữ liệu từ một bản sao lưu cụ thể bằng cách sử dụng pgbackrest.

Thận trọng: Thao tác khôi phục sẽ dừng cơ sở dữ liệu và ghi đè tất cả dữ liệu trong cơ sở dữ liệu của bạn.

  1. Xác định một biến môi trường cho mã sao lưu mà bạn muốn khôi phục. Thay thế giá trị bằng mã sao lưu xuất hiện trong đầu ra pgbackrest info.
    export BACKUPID="20260908-093545F"
    
  2. Dừng dịch vụ AlloyDB Omni và xác minh rằng dịch vụ này không hoạt động.
    sudo systemctl stop alloydbomni18
    sudo systemctl status alloydbomni18
    
    Xác nhận rằng đầu ra cho thấy Active: inactive.
  3. Chạy pgbackrest restore bằng tuỳ chọn --delta để khôi phục cơ sở dữ liệu từ bản sao lưu đã chọn.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --set=$BACKUPID \
        --delta restore
    
    Xác nhận rằng restore command end: completed successfully xuất hiện trong đầu ra.
  4. Khởi động dịch vụ AlloyDB Omni và xác minh rằng dịch vụ này đang hoạt động và chạy.
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    Xác nhận rằng đầu ra cho thấy Active: active (running).

10. Dọn dẹp và khảo sát

Sau khi hoàn tất lớp học lập trình, bạn có thể dọn dẹp các tài nguyên trên Google Cloud để tránh bị tính phí không mong muốn.

  1. Ngắt kết nối khỏi phiên SSH trên VM để quay lại thiết bị đầu cuối Cloud Shell cục bộ.
    exit
    
  2. Xoá phiên bản VM Compute Engine.
    gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet
    
  3. Xoá quy tắc tường lửa đã tạo cho quyền truy cập SSH.
    gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet
    
  4. Xoá cổng Cloud NAT và Cloud Router.
    gcloud compute routers nats delete alloydb-omni-nat --router=alloydb-omni-router --region=$REGION --project=$PROJECT --quiet
    gcloud compute routers delete alloydb-omni-router --region=$REGION --project=$PROJECT --quiet
    
  5. Xoá tuyến đường tuỳ chỉnh.
    gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
    

11. Xin chúc mừng

Chúc mừng bạn đã hoàn thành lớp học lập trình này! Bạn đã định cấu hình thành công pgBackRest để sao lưu và khôi phục một bản triển khai AlloyDB Omni RPM bằng bộ nhớ đối tượng tương thích với S3.

Nội dung đã đề cập

  • Cách thiết lập một máy ảo Compute Engine cho AlloyDB Omni RPM.
  • Cách thiết lập một bộ chứa lưu trữ đối tượng tương thích với S3.
  • Cách định cấu hình pgBackRest bằng một kho lưu trữ tương thích với S3.
  • Cách thực hiện, liệt kê và xác minh bản sao lưu đầy đủ và bản sao lưu gia tăng.
  • Cách khôi phục dữ liệu từ bản sao lưu bằng pgBackRest.

Để biết thêm thông tin, hãy xem bài viết Tổng quan về AlloyDB Omni.

12. Khảo sát

Bạn sẽ sử dụng hướng dẫn này như thế nào?

Chỉ đọc qua Đọc và hoàn thành bài tập