Pemecahan masalah untuk Proksi RDS - Amazon Aurora

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

Pemecahan masalah untuk Proksi RDS

Setelah itu, Anda dapat menemukan ide pemecahan masalah untuk beberapa masalah Proxy RDS umum dan informasi tentang CloudWatch log untuk RDS Proxy.

Dalam log Proksi RDS, setiap entri diawali dengan nama titik akhir proksi terkait. Nama ini bisa berupa nama yang Anda tentukan untuk titik akhir yang ditentukan pengguna. Atau, bisa menjadi nama khusus default untuk titik akhir default proksi yang melakukan permintaan baca/tulis. Untuk informasi selengkapnya tentang titik akhir proksi, lihat Bekerja dengan titik akhir Proksi Amazon RDS.

Memverifikasi konektivitas untuk proksi

Anda dapat menggunakan perintah berikut untuk memverifikasi bahwa semua komponen seperti proksi, basis data, dan instans komputasi dalam koneksi dapat berkomunikasi satu sama lain.

Periksa proxy itu sendiri menggunakan describe-db-proxiesperintah. Periksa juga kelompok target terkait menggunakan perintah describe-db-proxy-target-groups. Periksa apakah detail target cocok dengan klaster Aurora yang ingin dikaitkan dengan proksi. Gunakan perintah seperti berikut ini.

aws rds describe-db-proxies --db-proxy-name $DB_PROXY_NAME aws rds describe-db-proxy-target-groups --db-proxy-name $DB_PROXY_NAME

Untuk mengonfirmasi bahwa proxy dapat terhubung ke database yang mendasarinya, periksa target yang ditentukan dalam grup target menggunakan describe-db-proxy-targetsperintah. Gunakan perintah seperti berikut.

aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME

Output dari describe-db-proxy-targetsperintah termasuk TargetHealth bidang. Anda dapat memeriksa kolom State, Reason, dan Description di dalam TargetHealth untuk memeriksa apakah proksi dapat berkomunikasi dengan instans DB acuan.

  • Nilai State dari AVAILABLE mengindikasikan bahwa proksi dapat terhubung ke instans DB.

  • Nilai State dari UNAVAILABLE mengindikasikan masalah koneksi sementara atau permanen. Dalam kasus ini, periksa kolom Reason dan Description. Misalnya, jika Reason memiliki nilai PENDING_PROXY_CAPACITY, coba hubungkan lagi setelah proksi menyelesaikan operasi penskalaan. Jika Reason memiliki nilai UNREACHABLE, CONNECTION_FAILED, atau AUTH_FAILURE, gunakan penjelasan dari kolom Description untuk membantu Anda mendiagnosis masalah.

  • Kolom State muungkin memiliki nilai REGISTERING dalam waktu yang singkat sebelum berubah ke AVAILABLE atau UNAVAILABLE.

Jika perintah Netcat berikut (nc) berhasil, Anda dapat mengakses titik akhir proksi dari instans EC2 atau sistem lain tempat Anda masuk. Perintah ini melaporkan kegagalan jika Anda tidak berada di VPC yang sama dengan proksi dan basis data terkait. Anda mungkin dapat masuk secara langsung ke basis data tanpa berada di VPC yang sama. Akan tetapi, Anda tidak dapat masuk ke proksi kecuali Anda berada di VPC yang sama.

nc -zx MySQL_proxy_endpoint 3306 nc -zx PostgreSQL_proxy_endpoint 5432

Anda dapat menggunakan perintah berikut untuk memastikan bahwa instans EC2 Anda memiliki properti yang dibutuhkan. Khususnya, VPC untuk instans EC2 harus sama dengan VPC untuk instans DB RDS klaster Aurora yang terhubung dengan proksi.

aws ec2 describe-instances --instance-ids your_ec2_instance_id

Periksa rahasia Secrets Manager yang digunakan oleh proksi.

aws secretsmanager list-secrets aws secretsmanager get-secret-value --secret-id your_secret_id

Pastikan kolom SecretString yang ditampilkan oleh get-secret-value dienkode sebagai string JSON yang mencakup kolom username dan password. Contoh berikut menunjukkan format kolom SecretString.

{ "ARN": "some_arn", "Name": "some_name", "VersionId": "some_version_id", "SecretString": '{"username":"some_username","password":"some_password"}', "VersionStages": [ "some_stage" ], "CreatedDate": some_timestamp }

Masalah dan solusi umum

Bagian ini menjelaskan beberapa masalah umum dan solusi potensial saat menggunakan Proksi RDS.

Setelah menjalankan perintah aws rds describe-db-proxy-targets CLI, jika deskripsi TargetHealth menyatakan Proxy does not have any registered credentials, verifikasi hal-hal berikut:

  • Ada kredensial yang terdaftar bagi pengguna untuk mengakses proksi.

  • Peran IAM untuk mengakses rahasia Secrets Manager yang digunakan oleh proksi valid.

Anda mungkin mengalami peristiwa RDS berikut saat membuat atau terhubung ke proksi DB.

Kategori ID peristiwa RDS Deskripsi

kegagalan

RDS-EVENT-0243 RDS gagal menyediakan kapasitas untuk proksi karena tidak ada alamat IP yang cukup yang tersedia di subnet Anda. Untuk memperbaiki masalah ini, pastikan subnet Anda memiliki jumlah minimum alamat IP yang tidak digunakan. Untuk menentukan jumlah yang direkomendasikan untuk kelas instans Anda, lihat Perencanaan untuk kapasitas alamat IP.

kegagalan

RDS-EVENT-0275

RDS membatasi beberapa koneksi ke nama proxy DB. Jumlah permintaan koneksi simultan dari klien ke proxy telah melampaui batas.

Anda mungkin mengalami masalah berikut saat membuat proksi baru atau terhubung ke proksi.

Kesalahan Penyebab atau solusi

403: The security token included in the request is invalid

Pilih peran IAM yang sudah ada, bukan memilih untuk membuat peran baru.

Anda mungkin mengalami masalah berikut saat terhubung ke proksi MySQL.

Kesalahan Penyebab atau solusi
ERROR 1040 (HY000): Connections rate limit exceeded (limit_value) Tingkat permintaan koneksi dari klien ke proksi telah melampaui batas.
ERROR 1040 (HY000): IAM authentication rate limit exceeded Jumlah permintaan simultan dengan autentikasi IAM dari klien ke proksi telah melampaui batas.
ERROR 1040 (HY000): Number simultaneous connections exceeded (limit_value) Jumlah permintaan koneksi simultan dari klien ke proksi telah melampaui batas.

ERROR 1045 (28000): Access denied for user 'DB_USER'@'%' (using password: YES)

Rahasia Secrets Manager yang digunakan oleh proksi tidak cocok dengan nama pengguna dan kata sandi dari pengguna basis data yang sudah ada. Perbarui kredensial dalam rahasia Secrets Manager, atau pastikan pengguna basis data ada dan memiliki kata sandi yang sama dengan yang ada dalam rahasia.
ERROR 1105 (HY000): Unknown error Terjadi kesalahan yang tidak diketahui.
ERROR 1231 (42000): Variable ''character_set_client'' can't be set to the value of value

Nilai yang diatur untuk parameter character_set_client tidak valid. Misalnya, nilai ucs2 tidak valid karena dapat merusak server MySQL Anda.

ERROR 3159 (HY000): This RDS Proxy requires TLS connections.

Anda mengaktifkan pengaturan Wajibkan Keamanan Lapisan Pengangkutan dalam proksi, tetapi koneksi Anda menyertakan parameter ssl-mode=DISABLED dalam klien MySQL. Lakukan salah satu dari langkah berikut:

  • Nonaktifkan pengaturan Wajibkan Keamanan Lapisan Pengangkutan untuk proksi.

  • Hubungkan ke basis data menggunakan pengaturan minimum ssl-mode=REQUIRED dalam klien MySQL.

ERROR 2026 (HY000): SSL connection error: Internal Server Error

Proses jabat tangan TLS dengan proksi gagal. Beberapa kemungkinan alasannya meliputi:

  • SSL dibutuhkan, tetapi server tidak mendukungnya.

  • Terjadi kesalahan server internal.

  • Terjadi jabat tangan yang buruk.

ERROR 9501 (HY000): Timed-out waiting to acquire database connection

Waktu tunggu proksi untuk memperoleh koneksi basis data habis. Beberapa kemungkinan alasannya meliputi:

  • Proksi tidak dapat membangun koneksi basis data karena koneksi maksimum sudah tercapai

  • Proksi tidak dapat membangun koneksi basis data karena basis data tidak tersedia.

Anda mungkin mengalami masalah berikut saat terhubung ke proksi PostgreSQL.

Kesalahan Penyebab Solusi

IAM authentication is allowed only with SSL connections.

Pengguna mencoba terhubung ke basis data menggunakan autentikasi IAM dengan pengaturan sslmode=disable dalam klien PostgreSQL.

Pengguna harus terhubung ke basis data menggunakan pengaturan minimum sslmode=require dalam klien PostgreSQL. Untuk informasi lebih lanjut, lihat dokumentasi Dukungan PostgreSQL SSL.

This RDS Proxy requires TLS connections.

Pengguna mengaktifkan opsi Wajibkan Keamanan Lapisan Pengangkutan, tetapi mencoba untuk terhubung dengan sslmode=disable dalam klien PostgreSQL.

Untuk memperbaiki kesalahan ini, lakukan salah satu tindakan berikut:

  • Nonaktifkan opsi Wajibkan Keamanan Lapisan Pengangkutan proksi.

  • Hubungkan ke basis data menggunakan pengaturan minimum sslmode=allow dalam klien PostgreSQL.

IAM authentication failed for user user_name. Check the IAM token for this user and try again.

Kesalahan ini mungkin terjadi karena alasan berikut:

  • Klien memberikan nama pengguna IAM yang salah.

  • Klien memberikan token otorisasi IAM yang salah untuk pengguna.

  • Klien menggunakan kebijakan IAM yang tidak memiliki izin yang dibutuhkan.

  • Klien memberikan token otorisasi IAM yang kedaluwarsa untuk pengguna.

Untuk memperbaiki kesalahan ini, lakukan tindakan berikut:

  1. Pastikan pengguna IAM yang disediakan sudah ada.

  2. Pastikan token otorisasi IAM adalah milik pengguna IAM yang disediakan.

  3. Pastikan kebijakan IAM memiliki izin yang memadai untuk RDS.

  4. Periksa validitas token otorisasi IAM yang digunakan.

This RDS proxy has no credentials for the role role_name. Check the credentials for this role and try again.

Tidak ada rahasia Secrets Manager untuk peran ini.

Tambahkan rahasia Secrets Manager untuk peran ini. Untuk informasi selengkapnya, lihat Menyiapkan AWS Identity and Access Management kebijakan (IAM).

RDS supports only IAM, MD5, or SCRAM authentication.

Klien basis data yang digunakan untuk terhubung ke proksi menggunakan mekanisme autentikasi yang saat ini tidak didukung oleh proksi.

Jika Anda tidak menggunakan autentikasi IAM, gunakan autentikasi kata sandi MD5 atau SCRAM.

A user name is missing from the connection startup packet. Provide a user name for this connection.

Klien basis data yang digunakan untuk terhubung ke proksi tidak mengirimkan nama pengguna saat mencoba membangun koneksi.

Pastikan untuk menentukan sebuah nama pengguna saat menyiapkan koneksi ke proksi menggunakan klien PostgreSQL pilihan Anda.

Feature not supported: RDS Proxy supports only version 3.0 of the PostgreSQL messaging protocol.

Klien PostgreSQL yang digunakan untuk terhubung ke proksi menggunakan protokol yang lebih lama dari 3.0.

Gunakan klien PostgreSQL yang lebih baru yang mendukung protokol olah pesan 3.0. Jika Anda menggunakan CLI psql PostgreSQL, gunakan versi yang lebih baru atau yang setara dengan 7.4.

Feature not supported: RDS Proxy currently doesn't support streaming replication mode.

Klien PostgreSQL yang digunakan untuk terhubung ke proksi mencoba menggunakan mode replikasi streaming, yang saat ini tidak didukung oleh Proksi RDS.

Nonaktifkan mode replikasi streaming dalam klien PostgreSQL yang digunakan untuk menghubungkan.

Feature not supported: RDS Proxy currently doesn't support the option option_name.

Melalui pesan startup, klien PostgreSQL yang digunakan untuk terhubung ke proksi meminta opsi yang saat ini tidak didukung oleh Proksi RDS.

Nonaktifkan opsi yang ditampilkan sebagai tidak didukung dari pesan di atas dalam klien PostgreSQL yang digunakan untuk menghubungkan.

The IAM authentication failed because of too many competing requests.

Jumlah permintaan simultan dengan autentikasi IAM dari klien ke proksi telah melampaui batas.

Kurangi tingkat pembangunan koneksi menggunakan autentikasi IAM dari klien PostgreSQL.

The maximum number of client connections to the proxy exceeded number_value.

Jumlah permintaan koneksi simultan dari klien ke proksi telah melampaui batas.

Kurangi jumlah koneksi aktif dari klien PostgreSQL ke proksi RDS ini.

Rate of connection to proxy exceeded number_value.

Tingkat permintaan koneksi dari klien ke proksi telah melampaui batas.

Kurangi tingkat pembangunan koneksi dari klien PostgreSQL.

The password that was provided for the role role_name is wrong.

Kata sandi untuk peran ini tidak cocok dengan rahasia Secrets Manager.

Periksa rahasia peran ini dalam Secrets Manager untuk melihat apakah kata sandi sama dengan yang digunakan dalam klien PostgreSQL Anda.

The IAM authentication failed for the role role_name. Check the IAM token for this role and try again.

Terjadi masalah dengan token IAM yang digunakan untuk autentikasi IAM.

Buat token autentikasi baru dan gunakan dalam koneksi baru.

IAM is allowed only with SSL connections.

Klien mencoba untuk terhubung menggunakan autentikasi IAM, tetapi SSL tidak diaktifkan.

Aktifkan SSL dalam klien PostgreSQL.

Unknown error.

Terjadi kesalahan yang tidak diketahui.

Hubungi Dukungan AWS untuk menyelidiki masalah ini.

Timed-out waiting to acquire database connection.

Waktu tunggu proksi untuk memperoleh koneksi basis data habis. Beberapa kemungkinan alasannya meliputi:

  • Proksi tidak dapat membangun koneksi basis data karena koneksi maksimum sudah tercapai.

  • Proksi tidak dapat membangun koneksi basis data karena basis data tidak tersedia.

Kemungkinan solusinya sebagai berikut:

  • Periksa target instans DB RDSklaster Aurora untuk melihat apakah basis data tidak tersedia.

  • Periksa apakah ada eksekusi transaksi dan/atau kueri yang berjalan lama. Transaksi atau kueri ini bisa menggunakan koneksi basis data dari kumpulan koneksi dalam waktu yang lama.

Request returned an error: database_error.

Koneksi basis data yang dibangun dari proksi menampilkan kesalahan.

Solusinya bergantung dari kesalahan basis data tertentu. Salah satu contohnya adalah: Request returned an error: database "your-database-name" does not exist. Ini berarti bahwa nama basis data yang ditentukan tidak ada di server basis data. Atau, nama pengguna yang digunakan sebagai sebuah nama basis data (jika nama basis data tidak ditentukan) tidak ada di server.