Menguji Amazon Aurora PostgreSQL menggunakan kueri injeksi kesalahan - Amazon Aurora:

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

Menguji Amazon Aurora PostgreSQL menggunakan kueri injeksi kesalahan

Anda dapat menguji toleransi kesalahan klaster DB Aurora PostgreSQL Anda menggunakan kueri injeksi kesalahan. Kueri injeksi kesalahan dikeluarkan sebagai perintah SQL ke instans Amazon Aurora. Kueri injeksi kesalahan memungkinkan Anda menyebabkan crash pada instans sehingga Anda dapat menguji failover dan pemulihan. Anda juga dapat menyimulasikan kegagalan Replika Aurora, kegagalan disk, dan kepadatan disk. Kueri injeksi kesalahan didukung oleh semua versi Aurora PostgreSQL yang tersedia, sebagai berikut.

  • Aurora PostgreSQL versi 12, 13, 14, dan lebih tinggi

  • Aurora PostgreSQL versi 11.7 dan lebih tinggi

  • Aurora PostgreSQL versi 10.11 dan lebih tinggi

Ketika kueri injeksi kesalahan menentukan suatu crash, kueri ini akan menyebabkan crash pada instans DB Aurora PostgreSQL. Kueri injeksi kesalahan lainnya menghasilkan simulasi peristiwa kegagalan, tetapi tidak menyebabkan peristiwa terjadi. Jika Anda mengirim kueri injeksi kesalahan, Anda juga menentukan durasi waktu untuk simulasi peristiwa kegagalan yang akan terjadi.

Anda dapat mengirim kueri injeksi kesalahan ke salah satu instans Replika Aurora dengan menghubungkan ke titik akhir untuk Replika Aurora. Untuk informasi selengkapnya, lihat Koneksi titik akhir Amazon Aurora.

Menguji crash instans

Anda dapat memaksa crash instans Aurora PostgreSQL menggunakan fungsi kueri injeksi kesalahan aurora_inject_crash().

Untuk kueri injeksi kesalahan ini, failover tidak akan terjadi. Jika Anda ingin menguji failover, maka Anda dapat memilih tindakan instance Failover untuk cluster DB Anda di konsol RDS, atau menggunakan failover-db-clusterAWS CLI perintah atau operasi FailOverdbCluster RDS API.

Sintaksis

SELECT aurora_inject_crash ('instance' | 'dispatcher' | 'node');
Opsi

Kueri injeksi kesalahan ini menggunakan salah satu dari jenis crash berikut. Jenis crash tidak peka huruf besar/kecil:

'instans'

Crash basis data yang kompatibel dengan PostgreSQL untuk instans Amazon Aurora disimulasikan.

'dispatcher'

Crash dispatcher pada instans primer untuk klaster DB Aurora disimulasikan. Dispatcher menulis pembaruan ke volume klaster untuk klaster DB Amazon Aurora.

'simpul'

Crash basis data yang kompatibel dengan PostgreSQL dan dispatcher untuk instans Amazon Aurora disimulasikan.

Menguji kegagalan Replika Aurora

Anda dapat menyimulasikan kegagalan Replika Aurora menggunakan fungsi kueri injeksi kesalahan aurora_inject_replica_failure().

Kegagalan Replika Aurora akan memblokir replikasi ke Replika Aurora atau semua Replika Aurora dalam klaster DB untuk interval waktu yang ditentukan. Ketika interval waktu selesai, Replika Aurora yang terdampak akan secara otomatis tersinkronisasi dengan instans primer.

Sintaksis

SELECT aurora_inject_replica_failure( percentage_of_failure, time_interval, 'replica_name' );
Opsi

Kueri injeksi kesalahan ini mengambil parameter berikut:

percentage_of_failure

Persentase replikasi yang akan diblokir selama peristiwa kegagalan. Nilai ini dapat berupa double antara 0 dan 100. Jika Anda menetapkan 0, tidak ada replikasi yang akan diblokir. Jika Anda menetapkan 100, semua replikasi diblokir.

time_interval

Durasi waktu simulasi kegagalan Replika Aurora. Interval dalam detik. Misalnya, jika nilainya adalah 20, simulasi berjalan selama 20 detik.

catatan

Berhati-hatilah saat menentukan interval waktu untuk peristiwa kegagalan Replika Aurora Anda. Jika Anda menentukan interval yang terlalu panjang, dan instans penulis Anda menulis data dalam jumlah besar selama peristiwa kegagalan, maka klaster DB Aurora Anda mungkin menganggap bahwa Replika Aurora telah crash lalu menggantinya.

replica_name

Replika Aurora tempat simulasi kegagalan akan diinjeksikan. Tentukan nama Replika Aurora untuk menyimulasikan kegagalan satu Replika Aurora. Tentukan string kosong untuk menyimulasikan kegagalan untuk semua Replika Aurora dalam klaster DB.

Untuk mengidentifikasi nama replika, lihat kolom server_id dari fungsi aurora_replica_status(). Sebagai contoh:

postgres=> SELECT server_id FROM aurora_replica_status();

Menguji kegagalan disk

Anda dapat menyimulasikan kegagalan disk untuk klaster DB Aurora PostgreSQL menggunakan fungsi kueri injeksi kesalahan aurora_inject_disk_failure().

Selama simulasi kegagalan disk, klaster DB Aurora PostgreSQL menandai secara acak segmen disk sebagai mengalami kesalahan. Permintaan untuk segmen tersebut diblokir selama durasi simulasi.

Sintaksis

SELECT aurora_inject_disk_failure( percentage_of_failure, index, is_disk, time_interval );
Opsi

Kueri injeksi kesalahan ini mengambil parameter berikut:

percentage_of_failure

Persentase disk yang akan ditandai sebagai mengalami kesalahan selama peristiwa kegagalan. Nilai ini dapat berupa double antara 0 dan 100. Jika Anda menentukan 0, tidak ada disk yang akan ditandai sebagai mengalami kesalahan. Jika Anda menentukan 100, seluruh disk akan ditandai sebagai mengalami kesalahan.

indeks

Blok data logis tertentu tempat peristiwa kegagalan akan disimulasikan. Jika Anda melampaui rentang blok logis atau data simpul penyimpanan yang tersedia, Anda akan menerima pesan kesalahan yang memberitahukan nilai indeks maksimum yang dapat Anda tentukan. Untuk menghindari kesalahan ini, lihat Menampilkan status volume untuk klaster DB Aurora PostgreSQL.

is_disk

Mengindikasikan apakah kegagalan injeksi terjadi pada blok logis atau simpul penyimpanan. Menentukan benar berarti kegagalan injeksi terjadi pada blok logis. Menentukan salah berarti kegagalan injeksi terjadi pada simpul penyimpanan.

time_interval

Jumlah waktu untuk mensimulasikan kegagalan disk. Interval dalam detik. Misalnya, jika nilainya adalah 20, simulasi berjalan selama 20 detik.

Menguji kepadatan disk

Anda dapat mensimulasikan kemacetan disk untuk cluster Aurora PostgreSQL DB dengan menggunakan fungsi query injeksi kesalahan. aurora_inject_disk_congestion()

Selama simulasi kepadatan disk, klaster DB Aurora PostgreSQL secara acak menandai segmen disk sebagai padat. Permintaan untuk segmen tersebut ditunda antara waktu penundaan minimum dan maksimum yang ditentukan untuk durasi simulasi.

Sintaksis

SELECT aurora_inject_disk_congestion( percentage_of_failure, index, is_disk, time_interval, minimum, maximum );
Opsi

Kueri injeksi kesalahan ini mengambil parameter berikut:

percentage_of_failure

Persentase disk yang akan ditandai sebagai padat selama peristiwa kegagalan. Ini adalah nilai double antara 0 dan 100. Jika Anda menetapkan 0, tidak ada disk yang ditandai sebagai padat. Jika Anda menetapkan 100, seluruh disk akan ditandai sebagai padat.

indeks

Blok logis data atau simpul penyimpanan tertentu yang akan digunakan dalam simulasi peristiwa kegagalan.

Jika Anda melampaui rentang blok logis atau simpul penyimpanan data yang tersedia, Anda akan menerima pesan kesalahan yang memberitahukan nilai indeks maksimum yang dapat Anda tentukan. Untuk menghindari kesalahan ini, lihat Menampilkan status volume untuk klaster DB Aurora PostgreSQL.

is_disk

Mengindikasikan apakah kegagalan injeksi terjadi pada blok logis atau simpul penyimpanan. Menentukan benar berarti kegagalan injeksi terjadi pada blok logis. Menentukan salah berarti kegagalan injeksi terjadi pada simpul penyimpanan.

time_interval

Jumlah waktu untuk mensimulasikan kemacetan disk. Interval dalam detik. Misalnya, jika nilainya adalah 20, simulasi berjalan selama 20 detik.

minimum, maximum

Penundaan kepadatan minimum dan maksimum, dalam milidetik. Nilai yang valid berkisar dari 0,0 hingga 100,0 milidetik. Segmen disk yang ditandai padat akan ditunda selama jangka waktu acak dalam rentang durasi minimum dan maksimum untuk simulasi. Nilai maksimum harus lebih besar dari nilai minimum.