Memisahkan pecahan dalam grup pecahan DB - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memisahkan pecahan dalam grup pecahan DB

Anda dapat membagi pecahan dalam grup pecahan DB secara manual menjadi dua pecahan yang lebih kecil. Ini disebut pemecahan pecahan yang diprakarsai pengguna.

Aurora PostgreSQL Limitless Database juga dapat membagi pecahan ketika mereka memiliki jumlah data yang sangat besar atau penggunaan yang sangat tinggi. Ini disebut pemisahan pecahan yang diprakarsai sistem.

Prasyarat

Pembagian pecahan yang diprakarsai pengguna memiliki prasyarat berikut:

  • Anda harus memiliki grup pecahan DB.

  • Grup pecahan DB tidak dapat kosong: harus berisi setidaknya satu tabel sharded.

  • Seorang pengguna harus memiliki hak rds_aurora_limitless_cluster_admin istimewa. rds_superuserMemiliki hak istimewa ini; oleh karena itu pengguna master juga memilikinya. rds_superuserDapat memberikan hak istimewa kepada pengguna lain:

    /* Logged in as the master user or a user with rds_superuser privileges */ CREATE USER username; GRANT rds_aurora_limitless_cluster_admin to username;
  • Anda harus mengetahui ID subcluster (node) dari pecahan yang ingin Anda pisahkan. Anda dapat memperoleh ID dengan menggunakan kueri berikut:

    SELECT * FROM rds_aurora.limitless_subclusters; subcluster_id | subcluster_type ---------------+----------------- 1 | router 2 | router 3 | shard 4 | shard 5 | shard 6 | shard

Untuk mengaktifkan pemisahan pecahan yang dimulai sistem, setel parameter cluster DB berikut dalam grup parameter cluster DB kustom yang terkait dengan cluster DB Anda:

Parameter Nilai

rds_aurora.limitless_enable_auto_scale

on

rds_aurora.limitless_auto_scale_options

Entah split_shard atau add_router,split_shard

rds_aurora.limitless_finalize_split_shard_mode

Parameter ini menentukan bagaimana pemisahan pecahan yang diprakarsai sistem diselesaikan. Nilai dapat menjadi salah satu dari yang berikut:

  • user_initiated— Anda memutuskan kapan harus menyelesaikan pecahan pecahan. Ini adalah nilai default.

  • immediate— Shard split segera diselesaikan.

Untuk informasi selengkapnya, lihat Menyelesaikan pecahan pecahan.

catatan

Parameter ini hanya berlaku untuk pemisahan pecahan yang diprakarsai sistem.

Untuk informasi selengkapnya, lihat Grup parameter cluster DB untuk cluster Amazon Aurora DB.

Memisahkan pecahan

Untuk membagi pecahan dalam grup pecahan DB, gunakan fungsinya. rds_aurora.limitless_split_shard Fungsi ini memulai pekerjaan shard-split yang berjalan secara asinkron.

SELECT rds_aurora.limitless_split_shard('subcluster_id');

Tunggu kembalinya ID pekerjaan setelah penyerahan pekerjaan berhasil, misalnya:

SELECT rds_aurora.limitless_split_shard('3'); job_id --------------- 1691300000000 (1 row)
catatan

Operasi pecahan pecahan bersamaan tidak didukung. Jalankan setiap operasi secara berurutan dan selesaikan setiap operasi sebelum memulai operasi penambahan lainnya.

Melacak pecahan pecahan

Anda dapat menggunakan ID pekerjaan untuk melacak pekerjaan shard-split. Untuk mendeskripsikan pekerjaan tertentu dan mendapatkan detail lebih lanjut tentangnya, jalankan kueri berikut:

SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(job_id);

Misalnya:

SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(1691300000000); job_id | action | job_details | status | submission_time | message ---------------+-------------+-----------------------+---------+------------------------+------------------------------------------- 1691300000000 | SPLIT_SHARD | Split Shard 3 by User | SUCCESS | 2023-08-06 05:33:20+00 | Scaling job succeeded. + | | | | | New shard instance with ID 7 was created. (1 row)

Kueri mengembalikan kesalahan saat Anda melewati pekerjaan yang tidak ada sebagai masukan.

SELECT * from rds_aurora.limitless_list_shard_scale_jobs(1691300000001); ERROR: no job found with the job ID provided

Anda dapat melacak status semua pekerjaan shard-split dengan menggunakan kueri yang sama tanpa ID pekerjaan, misalnya:

SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(); job_id | action | job_details | status | submission_time | message ---------------+-------------+-----------------------+-------------+------------------------+-------------------------------------------------------------- 1691200000000 | SPLIT_SHARD | Split Shard 3 by User | IN_PROGRESS | 2023-08-05 01:46:40+00 | 1691300000000 | SPLIT_SHARD | Split Shard 4 by User | SUCCESS | 2023-08-06 05:33:20+00 | Scaling job succeeded. + | | | | | New shard instance with ID 7 was created. 1691400000000 | SPLIT_SHARD | Split Shard 5 by User | FAILED | 2023-08-07 09:20:00+00 | Error occurred for the add shard job 1691400000000. | | | | | Retry the command. If the issue persists, contact AWS Support. 1691500000000 | SPLIT_SHARD | Split Shard 5 by User | CANCELED | 2023-08-07 09:20:00+00 | Scaling job was cancelled. (4 rows)

Status pekerjaan dapat berupa salah satu dari yang berikut:

  • IN_PROGRESS— Pekerjaan shard-split telah diserahkan dan sedang berlangsung. Anda hanya dapat memiliki satu pekerjaan yang sedang berlangsung pada satu waktu.

  • PENDING— Pekerjaan shard-split menunggu Anda untuk menyelesaikannya. Untuk informasi selengkapnya, lihat Menyelesaikan pecahan pecahan.

  • CANCELLATION_IN_PROGRESS— Pekerjaan shard-split dibatalkan oleh pengguna.

  • CANCELED— Pekerjaan shard-split telah berhasil dibatalkan oleh pengguna atau oleh sistem.

  • SUCCESS— Pekerjaan shard-split berhasil diselesaikan. messageBidang berisi ID instance dari pecahan baru.

  • FAILED— Pekerjaan shard-split gagal. messageBidang berisi rincian kegagalan dan tindakan apa pun yang dapat diambil sebagai tindak lanjut dari pekerjaan yang gagal.

Menyelesaikan pecahan pecahan

Finalisasi adalah langkah terakhir dari proses shard-split. Ini menyebabkan beberapa downtime. Jika Anda memulai pekerjaan shard-split, maka finalisasi terjadi segera setelah pekerjaan selesai dengan sukses.

Terkadang sistem membagi pecahan berdasarkan beban kerja, saat Anda mengaktifkan pemisahan pecahan yang dimulai sistem dengan menggunakan parameter. rds_aurora.limitless_enable_auto_scale

Dalam hal ini, Anda dapat memilih apakah finalisasi terjadi segera, atau pada waktu yang Anda pilih. Anda menggunakan parameter cluster rds_aurora.limitless_finalize_split_shard_mode DB untuk memilih kapan itu terjadi:

  • Jika Anda menetapkan nilainyaimmediate, itu terjadi segera.

  • Jika Anda menetapkan nilainyauser_initiated, Anda harus menyelesaikan pekerjaan shard-split secara manual.

    Acara RDS dikirimkan kepada Anda, dan status pekerjaan shard-split diatur ke. PENDING

Saat disetel keuser_initiated, Anda menggunakan rds_aurora.limitless_finalize_split_shard fungsi untuk menyelesaikan pekerjaan shard-split:

SELECT * FROM rds_aurora.limitless_finalize_split_shard(job_id);
catatan

Fungsi ini hanya berlaku untuk pecahan pecahan yang diprakarsai oleh sistem, bukan oleh Anda.

Membatalkan pecahan pecahan

Anda dapat membatalkan pemisahan pecahan yang diprakarsai pengguna atau yang diprakarsai sistem yaitu atau. IN_PROGRESS PENDING Anda memerlukan ID pekerjaan untuk membatalkannya.

SELECT * from rds_aurora.limitless_cancel_shard_scale_jobs(job_id);

Tidak ada output yang dikembalikan kecuali ada kesalahan. Anda dapat melacak pembatalan menggunakan kueri pelacakan pekerjaan.