Pemecahan Masalah untuk Proxy RDS - Layanan Basis Data Relasional Amazon

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

Pemecahan Masalah untuk Proxy RDS

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

Dalam log RDS Proxy, setiap entri diawali dengan nama titik akhir proxy 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 proxy yang melakukan permintaan baca/tulis. Untuk informasi selengkapnya tentang titik akhir proksi, lihat Bekerja dengan titik akhir Amazon RDS Proxy.

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 instance RDS DB yang ingin Anda kaitkan dengan proxy. Gunakan perintah seperti berikut.

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 mungkin memiliki nilai REGISTERING dalam waktu yang singkat sebelum berubah ke AVAILABLE atau UNAVAILABLE.

Jika perintah Netcat (nc) berikut berhasil, Anda dapat mengakses titik akhir proxy dari EC2 instance atau sistem lain tempat Anda masuk. Perintah ini melaporkan kegagalan jika Anda tidak VPC sama dengan proxy dan database terkait. Anda mungkin dapat masuk langsung ke database tanpa berada di tempat yang samaVPC. Namun, Anda tidak dapat masuk ke proxy kecuali Anda berada di proxy yang samaVPC.

nc -zx MySQL_proxy_endpoint 3306 nc -zx PostgreSQL_proxy_endpoint 5432

Anda dapat menggunakan perintah berikut untuk memastikan bahwa EC2 instance Anda memiliki properti yang diperlukan. Secara khusus, VPC untuk EC2 instance harus sama dengan yang terhubung dengan proxy. VPC

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 bahwa SecretString bidang yang ditampilkan oleh get-secret-value dikodekan sebagai JSON string yang menyertakan username dan password bidang. 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 RDS Proxy.

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

  • Ada kredensial yang terdaftar bagi pengguna untuk mengakses proksi.

  • IAMPeran untuk mengakses rahasia Secrets Manager yang digunakan oleh proxy valid.

Anda mungkin mengalami RDS peristiwa berikut saat membuat atau menghubungkan ke proxy DB.

Kategori RDSID acara Deskripsi

kegagalan

RDS- EVENT -0243 RDStidak dapat menyediakan kapasitas untuk proxy karena tidak ada cukup alamat IP 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

RDSmembatasi beberapa koneksi ke proxy DB name. 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 IAM peran yang ada alih-alih memilih untuk membuat yang baru.

Anda mungkin mengalami masalah berikut saat menghubungkan ke SQL proxy Saya.

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 IAM otentikasi dari klien ke proxy 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, nilainya ucs2 tidak valid karena dapat merusak SQL server Saya.

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

Anda mengaktifkan pengaturan Memerlukan Transport Layer Security di proxy tetapi koneksi Anda menyertakan parameter ssl-mode=DISABLED dalam SQL klien Saya. Lakukan salah satu dari langkah berikut:

  • Nonaktifkan pengaturan Wajibkan Keamanan Lapisan Pengangkutan untuk proksi.

  • Connect ke database menggunakan pengaturan minimum ssl-mode=REQUIRED di SQL Klien saya.

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

TLSJabat tangan ke proxy gagal. Beberapa kemungkinan alasannya meliputi:

  • SSLdiperlukan 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 menghubungkan ke proxy PostgreSQL.

Kesalahan Penyebab Solusi

ERROR 28000: IAM authentication is allowed only with SSL connections.

Pengguna mencoba terhubung ke database menggunakan IAM otentikasi dengan pengaturan sslmode=disable di klien PostgreSQL.

Pengguna perlu terhubung ke database menggunakan pengaturan minimum sslmode=require di klien PostgreSQL. Untuk informasi selengkapnya, lihat dokumentasi SQLSSLdukungan Postgre.

ERROR 28000: 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 (IAM) kebijakan untuk RDS Proxy.

ERROR 28000: 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 IAM otentikasi, gunakan otentikasi MD5 atau SCRAM kata sandi.

ERROR 28000: 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 nama pengguna saat mengatur koneksi ke proxy menggunakan SQL klien Postgre pilihan Anda.

ERROR 28000: IAM is allowed only with SSL connections.

Klien mencoba terhubung menggunakan IAM otentikasi, tetapi SSL tidak diaktifkan.

Aktifkan SSL di klien PostgreSQL.

ERROR 28000: This RDS Proxy requires TLS connections.

Pengguna mengaktifkan opsi Memerlukan Transport Layer Security tetapi mencoba terhubung dengan sslmode=disable klien PostgreSQL.

Untuk memperbaiki kesalahan ini, lakukan salah satu tindakan berikut:

  • Nonaktifkan opsi Wajibkan Keamanan Lapisan Pengangkutan proksi.

  • Connect ke database menggunakan pengaturan minimum sslmode=allow di klien PostgreSQL.

ERROR 28P01: 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 IAM pengguna yang salah.

  • Klien memberikan token IAM otorisasi yang salah untuk pengguna.

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

  • Klien menyediakan token IAM otorisasi kedaluwarsa untuk pengguna.

Untuk memperbaiki kesalahan ini, lakukan tindakan berikut:

  1. Konfirmasikan bahwa IAM pengguna yang disediakan ada.

  2. Konfirmasikan bahwa token IAM otorisasi milik IAM pengguna yang disediakan.

  3. Konfirmasikan bahwa IAM kebijakan tersebut memiliki izin yang memadai untukRDS.

  4. Periksa validitas token IAM otorisasi yang digunakan.

ERROR 28P01: 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 untuk peran ini di Secrets Manager untuk melihat apakah kata sandinya sama dengan apa yang digunakan di klien Postgre SQL Anda.

ERROR 28P01: The IAM authentication failed for the role role_name. Check the IAM token for this role and try again.

Ada masalah dengan IAM token yang digunakan untuk IAM otentikasi.

Buat token autentikasi baru dan gunakan dalam koneksi baru.

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

SQLKlien Postgre yang digunakan untuk terhubung ke proxy menggunakan protokol yang lebih tua dari 3.0.

Gunakan SQL klien Postgre yang lebih baru yang mendukung protokol pesan 3.0. Jika Anda menggunakan Postgre SQL psqlCLI, gunakan versi yang lebih besar dari atau sama dengan 7.4.

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

SQLKlien Postgre yang digunakan untuk terhubung ke proxy mencoba menggunakan mode replikasi streaming, yang saat ini tidak didukung oleh Proxy. RDS

Matikan mode replikasi streaming di SQL klien Postgre yang digunakan untuk terhubung.

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

Melalui pesan startup, SQL klien Postgre yang digunakan untuk terhubung ke proxy meminta opsi yang saat ini tidak didukung oleh Proxy. RDS

Matikan opsi yang ditampilkan sebagai tidak didukung dari pesan di atas di SQL klien Postgre yang digunakan untuk menghubungkan.

ERROR 53300: The IAM authentication failed because of too many competing requests.

Jumlah permintaan simultan dengan IAM otentikasi dari klien ke proxy telah melampaui batas.

Kurangi tingkat di mana koneksi menggunakan IAM otentikasi dari SQL klien Postgre dibuat.

ERROR 53300: 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 SQL klien Postgre ke proxy iniRDS.

ERROR 53300: Rate of connection to proxy exceeded number_value.

Tingkat permintaan koneksi dari klien ke proksi telah melampaui batas.

Kurangi tingkat di mana koneksi dari SQL klien Postgre dibuat.

ERROR XX000: Unknown error.

Terjadi kesalahan yang tidak diketahui.

Hubungi AWS Support untuk menyelidiki masalah ini.

ERROR 08000: 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 status untuk melihat apakah itu 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.

ERROR XX000: 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.