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.
Topik
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_superuser
Memiliki hak istimewa ini; oleh karena itu pengguna master juga memilikinya.rds_superuser
Dapat 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 tousername
; -
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 |
---|---|
|
|
|
Entah |
|
Parameter ini menentukan bagaimana pemisahan pecahan yang diprakarsai sistem diselesaikan. Nilai dapat menjadi salah satu dari yang berikut:
Untuk informasi selengkapnya, lihat Menyelesaikan pecahan pecahan. catatanParameter 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.message
Bidang berisi ID instance dari pecahan baru. -
FAILED
— Pekerjaan shard-split gagal.message
Bidang 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 nilainya
immediate
, itu terjadi segera. -
Jika Anda menetapkan nilainya
user_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.