Mengupgrade versi utama database secara langsung

Halaman ini menjelaskan cara melakukan upgrade versi utama database di tempat cluster AlloyDB untuk PostgreSQL. Untuk mempelajari kasus penggunaan, alur kerja, dan pencadangan otomatis upgrade versi utama database yang diterapkan, lihat Ringkasan upgrade versi utama database yang diterapkan.

Merencanakan upgrade versi utama database

Gunakan langkah-langkah berikut untuk merencanakan upgrade versi database utama:

  1. Temukan versi utama database Anda saat ini.

    Konsol

    1. Di konsol Google Cloud, buka halaman Clusters.

      Buka Cluster

    2. Pilih cluster dari daftar. Halaman Ringkasan akan muncul.

    3. Temukan versi utama database di kolom Version.

    gcloud

    Untuk mengetahui informasi tentang cara menginstal dan memulai gcloud CLI, lihat Menginstal gcloud CLI. Untuk mengetahui informasi tentang cara memulai Cloud Shell, lihat Menggunakan Cloud Shell.

    Jalankan perintah berikut untuk mendapatkan detail cluster, termasuk versi utama saat ini:

    gcloud alloydb clusters describe CLUSTER_ID --region=REGION

    Lakukan penggantian berikut:

    • CLUSTER_ID: ID cluster
    • REGION: lokasi atau region cluster

    REST v1beta

    Jalankan permintaan berikut untuk mendapatkan detail cluster, termasuk versi utama saat ini:

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID

    Lakukan penggantian berikut:

    • CLUSTER_ID: ID cluster
    • PROJECT_ID: the project ID
    • REGION: lokasi atau region cluster

    Untuk mengirim permintaan Anda, gunakan salah satu opsi berikut:

    curl (Linux, macOS, atau Cloud Shell)

    Jalankan perintah berikut:

       curl -X GET \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d @request.json \
             "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID"
       

    PowerShell (Windows)

    Jalankan perintah berikut:

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }
    
       Invoke-WebRequest `
         -Method GET `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID| Select-Object -Expand Content
       
  2. Identifikasi versi utama database target dari tabel berikut. Untuk mengetahui daftar lengkap versi database yang didukung AlloyDB, lihat Kebijakan versi dan versi database.

    Versi utama sumber Versi utama target yang didukung
    POSTGRES_14 POSTGRES_15
  3. Tinjau fitur yang ditawarkan di setiap versi utama database.

  4. Identifikasi inkompatibilitas yang perlu Anda atasi. Versi utama baru dapat memperkenalkan perubahan yang tidak kompatibel yang mungkin mengharuskan Anda mengubah kode aplikasi, skema, atau setelan database.

  5. Sebelum memulai upgrade versi utama di cluster produksi, sebaiknya Anda meng-clone cluster dan menguji upgrade versi utama di cluster yang di-clone.

    Selain memverifikasi bahwa upgrade berhasil diselesaikan, jalankan pengujian untuk memastikan aplikasi berperilaku seperti yang diharapkan pada cluster yang diupgrade.

Menyiapkan cluster untuk upgrade versi utama

Untuk menyelesaikan langkah apa pun yang mengharuskan Anda terhubung ke database, gunakan AlloyDB Studio, psql, atau metode koneksi lainnya.

  1. Hapus atau promosikan replika lintas region Anda. Upgrade versi utama Database In-place tidak mendukung replika lintas region. Untuk informasi selengkapnya, lihat Replikasi lintas region.
  2. Pastikan setelan encoding dan lokalitas untuk database postgres dan template1 sama dengan database template0.

    Jalankan perintah berikut:

    SELECT pg_encoding_to_char(encoding), datcollate, datctype
    FROM pg_database
    WHERE datname IN ('postgres', 'template1', 'template0');
    

    Jika nilai untuk database postgres atau template1 berbeda dengan nilai untuk database template0, upgrade akan gagal. Untuk menyelesaikan masalah ini, ikuti langkah berikut:

    1. Buat dump database lain (bukan template). Untuk mengetahui informasi selengkapnya, lihat Mengekspor data.

    2. Hapus database dengan menjalankanDROP DATABASE <database_name>;

    3. Buat ulang database dengan setelan lokalitas dan encoding yang sama seperti database template0 dengan menjalankan perintah berikut:

      CREATE DATABASE <database_name>
      ENCODING = '<template0_encoding>'
      LC_COLLATE = '<template0_datcollate>'
      LC_CTYPE = '<template0_datctype>';
      
    4. Muat ulang data Anda. Untuk mengetahui informasi selengkapnya, lihat Mengimpor data.

  3. Jika cluster AlloyDB Anda adalah sumber replikasi logis, nonaktifkan langganan downstream dan hapus semua slot replikasi logis. Anda dapat mengaktifkan kembali langganan dan membuat ulang slot replikasi logika setelah upgrade. Jika instance AlloyDB hanya merupakan target replikasi logis, langkah-langkah ini tidak diperlukan. Untuk menonaktifkan langganan dan menghapus slot replika logika, ikuti langkah-langkah berikut:

    1. Nonaktifkan setiap langganan downstream di subscriber atau target replikasi downstream. Jangan nonaktifkan langganan downstream di instance AlloyDB yang diupgrade:

      • Jika Anda menggunakan pglogical, jalankan perintah berikut:

        SELECT * FROM
        pglogical.alter_subscription_disable(subscription_name, immediate);
        

        Ganti subscription_name dalam kueri dengan nama langganan yang sudah ada. Jika langganan perlu segera dinonaktifkan, tetapkan nilai parameter immediate ke true. Secara default, nilainya adalah false dan langganan dinonaktifkan hanya setelah transaksi saat ini berakhir.

        Contoh:

        postgres=> SELECT * FROM pglogical.alter_subscription_disable('test_sub',true);
        alter_subscription_disable
        ----------------------------
        t
        (1 row)
        
      • Jika Anda menggunakan ekstensi selain pglogical, jalankan perintah berikut:

        ALTER SUBSCRIPTION <subscription_name> DISABLE;
        
    2. Hapus semua slot replikasi logis di instance utama AlloyDB dengan menjalankan perintah berikut:

      SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_type = 'logical';
      
  4. Mengelola ekstensi PostgreSQL Anda. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi ekstensi database.

    Pemeriksaan pra-upgrade mendeteksi inkompatibilitas ekstensi dan menampilkan pelanggaran tersebut dalam log, beserta tindakan yang disarankan. Untuk informasi selengkapnya, lihat Melihat kegagalan pemeriksaan pra-upgrade.

    Anda mungkin perlu melakukan hal berikut:

    1. Hapus semua ekstensi yang tidak lagi didukung di versi target.
    2. Upgrade PostGIS dan ekstensi terkait (address_standardizer, address_standardizer_data_us, postgis_raster, postgis_sfcgal, postgis_tiger_geocoder, dan postgis_topology) ke versi yang didukung dalam versi PostgreSQL target. Untuk informasi selengkapnya, lihat Ekstensi PostGIS. Tabel berikut mencantumkan versi ekstensi PostGIS minimum yang didukung untuk setiap versi utama PostgreSQL:

      Versi PostgreSQL Versi minimum PostGIS yang didukung
      PG14 3.1
      PG15 3.2

      Misalnya, jika versi PostGIS Anda adalah 3.1.x dan Anda ingin mengupgrade dari POSTGRES 14 ke POSTGRES 15, gunakan perintah berikut untuk mengupgrade ekstensi PostGIS:

      ALTER EXTENSION postgis UPDATE TO '3.2.3';
      SELECT PostGIS_Version();
      
  5. Pastikan koneksi diizinkan untuk setiap database, kecuali untuk template0, dengan menjalankan kueri berikut dan memeriksa kolom datallowconn untuk setiap database:

    SELECT datname,datallowconn from pg_database;
    

    Nilai t di kolom datallowconn berarti koneksi diizinkan. Nilai f menunjukkan bahwa koneksi tidak dapat dibuat. Database template0 tidak boleh mengizinkan koneksi.

    Untuk mengizinkan koneksi ke database, jalankan perintah berikut:

    ALTER DATABASE <database> WITH ALLOW_CONNECTIONS = true;
    

Mengupgrade versi utama cluster secara langsung

Upgrade versi utama database yang diterapkan dapat memerlukan waktu antara 40 menit hingga 48 jam untuk diselesaikan, bergantung pada faktor seperti ukuran database, ukuran skema, dan jumlah instance kumpulan operasi baca di cluster. Waktu nonaktif instance utama biasanya 20 menit hingga satu jam, dan terutama bergantung pada skema database Anda.

Saat Anda mengajukan permintaan upgrade versi utama secara langsung, AlloyDB akan melakukan pemeriksaan pra-upgrade terlebih dahulu. Jika AlloyDB menentukan bahwa cluster Anda belum siap untuk upgrade versi utama, permintaan akan gagal. Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah upgrade langsung versi utama.

Untuk mengupgrade versi utama database secara langsung, ikuti langkah-langkah berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  2. Pilih cluster dari daftar. Halaman Ringkasan akan muncul.

  3. Klik Upgrade untuk memulai proses upgrade versi utama database.

  4. Pada langkah Pilih versi database, pilih salah satu versi utama database yang tersedia sebagai versi utama target.

  5. Klik Lanjutkan.

  6. Pada langkah Upgrade cluster di kolom Cluster ID, masukkan nama cluster.

  7. Klik Mulai upgrade. Anda akan diarahkan ke langkah Status Upgrade, tempat Anda dapat memeriksa status upgrade. Untuk mengetahui informasi selengkapnya, lihat Memantau upgrade versi database utama.

gcloud

Mulai upgrade versi utama secara langsung dengan menjalankan perintah berikut:

gcloud alloydb beta clusters upgrade CLUSTER_ID --region=REGION --version=DATABASE_VERSION --async

Berikut adalah contoh perintah:

gcloud alloydb beta clusters upgrade my-cluster --region=us-central1 --version=POSTGRES_15 --async

REST v1beta

Mulai upgrade versi utama secara langsung dengan menjalankan perintah berikut:

PATCH https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:upgrade

Meminta isi JSON:

{
  "version": "DATABASE_VERSION"
}

Ganti dengan enum untuk versi utama database target, yang harus lebih baru dari versi saat ini.

Contoh isi JSON permintaan:

{
"version": "POSTGRES_15"
}

Memantau upgrade versi utama cluster

Setelah upgrade versi database utama in-place dimulai, Anda dapat memantau status upgrade menggunakan konsol Google Cloud, gcloud CLI, atau REST API.

Konsol

Ikuti langkah-langkah berikut untuk memeriksa status upgrade di konsol Google Cloud:

  1. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  2. Pilih cluster yang sedang diupgrade. Halaman Ringkasan akan muncul.

  3. Buka halaman Ringkasan.

  4. Klik Status Upgrade. Halaman Status Upgrade akan muncul, tempat Anda dapat memeriksa status upgrade.

gcloud

Ikuti langkah-langkah berikut untuk memeriksa status upgrade di gcloud CLI:

  1. Dapatkan ID operasi upgrade dengan menjalankan perintah berikut. Sebelum menjalankan perintah, ganti variabel CLUSTER_ID dengan nama cluster:

    gcloud alloydb operations list --cluster=CLUSTER_ID --region=REGION_ID --filter=metadata.verb:upgrade

    Panggilan gcloud CLI yang digunakan untuk memicu upgrade versi utama. alloydb beta clusters upgrade, menampilkan ID operasi sebagai respons sinkron. Atau, gunakan perintah gcloud alloydb operations list dengan flag --cluster.

    Berikut adalah contoh perintah:

    gcloud alloydb operations list --cluster=my-cluster --region=us-central1 --filter=metadata.verb:upgrade
  2. Pantau status upgrade dengan menjalankan perintah berikut:

    gcloud alloydb operations describe OPERATION_ID
    --region=REGION
    https://cloud.google.com/sdk/gcloud/reference/alloydb/operations/describe

REST v1beta

Ikuti langkah-langkah berikut untuk memeriksa status upgrade di REST API:

  1. Mendapatkan ID operasi upgrade.

    Gunakan permintaan GET berikut dengan metode operations.list untuk mencantumkan semua operasi upgrade dan menemukan operasi yang sesuai dengan cluster target:

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/filter=metadata.verb:upgrade

    Panggilan REST API menampilkan ID operasi sebagai respons sinkron.

  2. Pantau status upgrade.

    Gunakan permintaan GET dengan metode operations.get:

      GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

    Lakukan penggantian berikut:

    • PROJECT_ID: the project ID
    • REGION: lokasi atau region cluster
    • OPERATION_ID: ID operasi upgrade, yang diambil di langkah sebelumnya.

    Berikut adalah contoh respons saat operasi sedang berlangsung:

    {
    "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "metadata": {
    "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
    "createTime": "2024-09-16T23:17:39.727319438Z",
    "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
    "verb": "upgrade",
    "requestedCancellation": false,
    "apiVersion": "v1",
    "upgradeClusterStatus": {
       "state": "IN_PROGRESS",
       "cancellable": true,
       "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "CLEANUP",
          "state": "NOT_STARTED"
        }
       ]
     }
    },
    "done":false
    }
    

    Berikut adalah contoh respons, saat operasi selesai:

    {
    "operations": [
    {
     "metadata": {
     "@type": "type.googleapis.com/google.cloud.alloydb.v1betaalpha.OperationMetadata",
     "createTime": "2024-09-16T21:52:17.303861317Z",
     "endTime": "2024-09-16T22:29:13.947527949Z",
     "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
     "verb": "upgrade",
     "requestedCancellation": false,
     "apiVersion": "v1beta",
     "upgradeClusterStatus": {
      "state": "SUCCESS",
      "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "CLEANUP",
          "state": SUCCESS"
        }
       ]
     }
    },
    "response": {
         …
    },
    "name":  "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "done": true
    }
    ]
    }
    

    Untuk mengetahui informasi selengkapnya tentang struktur response, lihat Respons operasi upgrade.

Respons operasi upgrade

Respons operasi UpgradeCluster mencakup hal berikut:

  • status: status keseluruhan operasi upgrade. Nilai yang mungkin adalah SUCCESS, FAILED, dan PARTIAL_SUCCESS.
  • message: memberikan ringkasan singkat tentang hasil operasi upgrade.
  • clusterUpgradeDetails: detail upgrade untuk cluster yang sedang diupgrade. Kolom ini adalah array. AlloyDB hanya mengizinkan upgrade cluster tunggal, sehingga hanya boleh memiliki satu entri.
    • name: nama cluster yang sepenuhnya memenuhi syarat.
    • upgradeStatus: status upgrade cluster. Nilai yang mungkin adalah SUCCESS, FAILED, PARTIAL_SUCCESS. PARTIAL_SUCCESS berarti satu atau beberapa instance kumpulan baca tidak dapat diupgrade.
    • clusterType: jenis cluster. AlloyDB hanya memungkinkan Anda mengupgrade satu cluster PRIMARY. Jenis ini harus selalu PRIMARY.
    • databaseVersion: versi database cluster saat ini.
    • stageInfo: informasi tentang tahap upgrade inti.
      • status: SUCCESS atau FAILED
      • logs_url: link ke log yang dihasilkan oleh tahap. Kosong untuk tahap yang tidak menghasilkan log.
    • instanceUpgradeDetails: informasi upgrade untuk semua instance dalam cluster.
      • name: nama instance yang sepenuhnya memenuhi syarat
      • upgradeStatus: SUCCESS atau FAILED
      • instanceType: PRIMARY atau READ_POOL

Berikut adalah contoh respons operasi upgrade:

"response": {
  "@type": "type.googleapis.com/google.cloud.alloydb.v1alpha.UpgradeClusterResponse",
  "status": "SUCCESS",
  "message": "Cluster upgraded successfully.",
  "clusterUpgradeDetails": [
    {
      "name": "projects/1234/locations/us-central1/clusters/abc",
      "upgradeStatus": "SUCCESS",
      "clusterType": "PRIMARY",
      "databaseVersion": "POSTGRES_15",
      "stageInfo": [
        {
          "stage": "ALLOYDB_PRECHECK", 
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "READ_POOL_INSTANCES_UPGRADE",
          "status": "SUCCESS",
        }
      ],
      "instanceUpgradeDetails": [
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/primary",
          "upgradeStatus": "SUCCESS",
          "instanceType": "PRIMARY",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read1",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read2",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        }
      ]
    }
  ]
}

Lihat log upgrade

AlloyDB memublikasikan semua log upgrade ke nama log postgres_upgrade.

Untuk melihat log terkait upgrade, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Logs Explorer:

    Buka Logs Explorer

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.

  2. Pilih alloydb.googleapis.com/postgres_upgrade sebagai nama log. Hal ini diterjemahkan ke kueri "logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade".

  3. Gunakan label berikut untuk memfilter log:

    Label Deskripsi

    LOG_TYPE

    Tahap upgrade yang menghasilkan log. Nilai yang mungkin adalah ALLOYDB_PRECHECK, PG_UPGRADE_CHECK, dan PG_UPGRADE.

    OPERATION_NAME

    Nama operasi lengkap untuk operasi upgrade.

    FILE_NAME

    Hanya diisi untuk log pg_upgrade_check dan pg_upgrade, dan sesuai dengan file log yang dihasilkan oleh utilitas pg_upgrade.

Berikut adalah contoh kueri yang menampilkan log upgrade pra-pemeriksaan AlloyDB untuk operasi tertentu:

logName="projects/project1234/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
labels.LOG_TYPE="ALLOYDB_PRECHECK"
labels.OPERATION_NAME="projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID"

Untuk informasi selengkapnya tentang pemeriksaan upgrade, lihat Ringkasan upgrade versi utama database yang diterapkan.

Melihat log upgrade untuk cluster

Untuk melihat log upgrade untuk cluster jika Anda tidak mengetahui ID operasi dan operasi telah berakhir masa berlakunya, ikuti langkah-langkah berikut:

  1. Buat kueri untuk log pra-pemeriksaan AlloyDB untuk cluster Anda.

    logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.LOG_TYPE="ALLOYDB_PRECHECK"
    resource.labels.cluster_id=CLUSTER_ID
    
  2. Temukan Operation_ID dari label log OPERATION_NAME.

    Pada contoh berikut, Operation_ID dari OPERATION_NAME adalah operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013.

    labels.OPERATION_NAME="projects/myproject/locations/us-central1/operations/operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    
  3. Buat kueri untuk semua log postgres_upgrade untuk operasi tertentu.

    logName="projects/production-1/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.OPERATION_NAME="operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    

Membatalkan upgrade versi utama database yang diterapkan

Anda dapat membatalkan operasi upgrade versi utama yang sedang berlangsung dari konsol Google Cloud, gcloud CLI, atau REST API.

Menemukan ID operasi

Untuk membatalkan operasi upgrade versi utama menggunakan gcloud CLI atau REST API, Anda memerlukan ID operasi. Anda harus menentukan ID ini dalam perintah gcloud CLI atau REST API agar AlloyDB mengetahui operasi mana yang akan dibatalkan.

Anda tidak dapat membatalkan upgrade setelah upgrade instance utama mencapai titik tertentu.

Saat Anda memulai upgrade versi utama di tempat, ID operasi akan ditampilkan di kolom name respons. Lihat Contoh respons.

Anda juga dapat menemukan ID operasi dengan melakukan panggilan operations.list di cluster AlloyDB.

Membatalkan upgrade

Untuk membatalkan upgrade versi utama di tempat, ikuti langkah-langkah berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  2. Pilih cluster dari daftar. Halaman Ringkasan akan muncul.

  3. Klik Upgrade status.

  4. Klik Cancel. Jika upgrade tidak dapat dibatalkan, tombol ini akan berwarna abu-abu.

gcloud

Gunakan perintah gcloud alloydb operations cancel untuk membatalkan operasi:

gcloud alloydb operations cancel OPERATION_ID

Ganti variabel OPERATION_ID dengan ID operasi.

Jika cancellable di UpgradeClusterStatus adalah false dalam output perintah gcloud alloydb operations cancel, AlloyDB akan mengabaikan permintaan pembatalan dan melanjutkan upgrade. Dalam hal ini, API tidak menampilkan error, dan menampilkan respons kosong. Untuk mengetahui informasi selengkapnya tentang status upgrade, lihat Memantau upgrade versi utama cluster.

REST v1beta

Jalankan perintah berikut:

POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID:cancel

Sebelum menggunakan data permintaan apa pun, buat penggantian berikut:

  • PROJECT_ID: project ID.
  • OPERATION_ID: ID operasi impor atau ekspor.

Jika cancellable di UpgradeClusterStatus adalah false, Anda tidak dapat membatalkan upgrade.

Untuk mengirim permintaan Anda, gunakan salah satu opsi berikut:

curl (Linux, macOS, atau Cloud Shell)

Jalankan perintah berikut:

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d "" \
            "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID/cancel"
  

PowerShell (Windows)

Jalankan perintah berikut:

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }

       Invoke-WebRequest `
         -Method POST `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID/cancel"| Select-Object -Expand Content
    

Anda akan melihat respons JSON seperti berikut:

Respons

Panggilan REST API ini tidak menampilkan respons apa pun.

Menyelesaikan upgrade versi utama di tempat

Untuk menyelesaikan upgrade versi utama, hubungkan ke instance AlloyDB menggunakan AlloyDB Studio, psql, atau metode koneksi lainnya.

Jika Anda menggunakan sistem non-AlloyDB, lihat dokumentasi sistem Anda untuk mengetahui petunjuk koneksi.

Setelah mengupgrade cluster, ikuti langkah-langkah berikut untuk menyelesaikan upgrade:

  1. Jika sebelumnya Anda menonaktifkan pglogical, aktifkan kembali replikasi pglogical. Mengaktifkan replikasi pglogical akan otomatis membuat slot replikasi yang diperlukan.

    1. Lepaskan langganan pglogical pada replika tujuan dengan menggunakan perintah berikut:

      select pglogical.drop_subscription(subscription_name name);
      

      Ganti name dengan nama langganan yang sudah ada. Contoh:

      postgres=> select pglogical.drop_subscription(subscription_name:= 'test_sub');
      -[ RECORD 1 ]-----+--
      drop_subscription |1
      
    1. Buat ulang langganan pglogical di tujuan atau replika dengan memberikan informasi koneksi berikut ke instance utama AlloyDB:

      SELECT pglogical.create_subscription(
       subscription_name :='test_sub',<br>
       provider_dsn := 'host=primary-ip port=5432 dbname=postgres user=replication_user password=replicapassword'
      );
      
    2. Periksa status langganan menggunakan perintah berikut:

      SELECT * FROM pglogical.show_subscription_status('test_sub');
      
    3. Uji replikasi dengan melakukan transaksi tulis dan memverifikasi bahwa perubahan tersebut terlihat di tujuan.

  1. Muat ulang statistik database.

    Setelah upgrade selesai, jalankan ANALYZE di cluster utama untuk memperbarui statistik sistem. Statistik yang akurat memastikan bahwa perencana kueri PostgreSQL memproses kueri secara optimal. Statistik yang tidak ada dapat menyebabkan rencana kueri yang tidak akurat, yang dapat menurunkan performa dan menggunakan memori secara berlebihan.

  2. Jalankan pengujian penerimaan untuk memastikan sistem yang diupgrade berjalan seperti yang diharapkan.

  3. Pastikan versi utama database in-place yang diupgrade muncul di halaman Ringkasan cluster di konsol Google Cloud.

Pulihkan ke versi utama sebelumnya

Jika sistem database yang telah diupgrade tidak berfungsi seperti yang diharapkan, Anda mungkin perlu kembali ke status pra-upgrade. Anda dapat melakukannya dengan memulihkan dari cadangan pra-upgrade –baik yang dibuat otomatis oleh AlloyDB selama proses upgrade atau cadangan pra-upgrade yang ada– untuk membuat cluster baru dengan status pra-upgrade.

Untuk memulihkan ke status sebelum upgrade, ikuti langkah-langkah berikut:

  1. Identifikasi cadangan pra-upgrade yang akan digunakan untuk pemulihan. Selama proses upgrade, AlloyDB secara otomatis membuat cadangan pra-upgrade dengan awalan pre-upgrade-bkp. Untuk mengetahui informasi selengkapnya, lihat Melihat daftar cadangan.

  2. Mulai pemulihan dari pencadangan pra-upgrade, yang akan membuat cluster baru dengan versi PostgreSQL sebelumnya. Untuk informasi selengkapnya, lihat Memulihkan cluster dari cadangan yang disimpan.

  3. Hubungkan aplikasi Anda. Perbarui aplikasi Anda dengan detail tentang cluster yang dipulihkan dan replika bacanya. Anda dapat melanjutkan penayangan traffic di cluster yang dipulihkan.

Anda juga dapat melakukan pemulihan point-in-time ke titik waktu pra-upgrade. Untuk informasi selengkapnya, lihat Menggunakan pemulihan point-in-time (PITR).

Batasan

Batasan berikut memengaruhi upgrade versi utama secara langsung untuk AlloyDB:

  • Anda tidak dapat melakukan upgrade versi utama di tempat pada cluster sekunder.
  • Mengupgrade instance yang memiliki lebih dari 1.000 database dari satu versi ke versi lainnya mungkin memerlukan waktu yang lama, dan upgrade mungkin mencapai batas waktu.
  • AlloyDB tidak mendukung upgrade cluster yang menggunakan pg_largeobject_metadata. Jika select count(*) from pg_largeobject_metadata; bukan nol, upgrade akan gagal.
  • Operasi upgrade versi utama yang diterapkan mungkin selesai sebelum pencadangan per upgrade atau pencadangan pasca-upgrade selesai, terutama saat Anda memiliki database besar dengan lebih sedikit objek.
  • Mungkin ada penundaan singkat antara waktu penulisan dimulai lagi di instance yang diupgrade dan saat pencadangan pasca-upgrade dibuat. Artinya, konten cadangan pasca-upgrade mungkin tidak cocok dengan konten database dari sebelum upgrade versi utama.
  • Cadangan pra-upgrade mungkin masih dibuat saat upgrade versi utama in-place gagal.
  • Karena cadangan upgrade otomatis bersifat berkelanjutan, Anda tidak dapat menghapusnya hingga cadangan berkelanjutan dan retensi maksimum pemulihan tercapai. Saat retensi maksimum tercapai, cadangan akan dihapus oleh garbage collector; sebagai alternatif, Anda dapat menggunakan gcloud CLI untuk menghapus cadangan secara manual. Untuk mengetahui informasi selengkapnya, lihat Pembatasan penghapusan cadangan.

Langkah selanjutnya