Mengelola Proksi 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.

Mengelola Proksi RDS

Bagian ini berisi informasi tentang cara mengelola operasi dan konfigurasi Proksi RDS. Prosedur ini membantu aplikasi Anda memaksimalkan koneksi basis data dan mencapai penggunaan ulang koneksi maksimum. Semakin banyak yang dapat Anda manfaatkan dari penggunaan ulang koneksi, semakin banyak overhead CPU dan memori yang bisa dihemat. Pada akhirnya, tindakan ini dapat mengurangi latensi untuk aplikasi Anda dan memungkinkan basis data untuk mendedikasikan lebih banyak sumber dayanya untuk memproses permintaan aplikasi.

Mengubah Proksi RDS

Anda dapat mengubah pengaturan spesifik yang terkait dengan proksi setelah Anda membuat proksi. Caranya adalah dengan mengubah proksi itu sendiri, grup target terkaitnya, atau keduanya. Setiap proksi memiliki satu grup target terkait.

penting

Nilai dalam kolom Jenis autentikasi klien dan Autentikasi IAM berlaku untuk semua rahasia Secrets Manager yang terkait dengan proksi ini. Untuk menentukan nilai yang berbeda untuk setiap rahasia, ubah proxy Anda dengan menggunakan AWS CLI atau API sebagai gantinya.

Untuk mengubah pengaturan proksi
  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Proksi.

  3. Dalam daftar proksi, pilih proksi yang pengaturannya ingin diubah atau kunjungi halaman detailnya.

  4. Untuk Tindakan, pilih Ubah.

  5. Masukkan atau pilih properti yang akan diubah. Anda dapat mengubah opsi berikut:

    • ID proksi – Mengganti nama proksi dengan memasukkan ID baru.

    • Batas waktu koneksi klien idle – Masukkan periode waktu untuk batas waktu koneksi klien idle.

    • Peran IAM – Mengubah peran IAM yang digunakan untuk mengambil rahasia dari Secrets Manager.

    • Rahasia Secrets Manager – Menambahkan atau membuang rahasia Secrets Manager. Rahasia ini sesuai dengan nama dan kata sandi pengguna basis data.

    • Jenis autentikasi klien – (PostgreSQL saja) Mengubah jenis autentikasi untuk koneksi klien ke proksi.

    • Autentikasi IAM – Mewajibkan atau melarang autentikasi IAM untuk koneksi ke proksi.

    • Wajibkan Keamanan Lapisan Pengangkutan – Mengaktifkan atau menonaktifkan persyaratan untuk Keamanan Lapisan Pengangkutan (TLS).

    • Grup keamanan VPC – Menambahkan atau menghapus grup keamanan VPC yang akan digunakan proksi.

    • Aktifkan pencatatan log yang disempurnakan – Mengaktifkan atau menonaktifkan pencatatan log yang disempurnakan.

  6. Pilih Ubah.

Jika pengaturan yang ingin diubah tidak tercantum, gunakan prosedur berikut untuk memperbarui grup target untuk proksi. Grup target yang terkait dengan proksi mengontrol pengaturan yang terkait dengan koneksi basis data fisik. Setiap proksi memiliki satu grup target terkait bernama default, yang dibuat secara otomatis dengan proksi.

Anda hanya dapat mengubah grup target dari halaman detail proksi, bukan dari daftar pada halaman Proksi.

Untuk mengubah pengaturan grup target proksi
  1. Pada halaman Proksi, buka halaman detail proksi.

  2. Untuk Grup target, pilih tautan default. Saat ini, semua proksi memiliki satu grup target bernama default.

  3. Pada halaman detail grup target default, pilih Ubah.

  4. Pilih pengaturan baru untuk properti yang dapat diubah:

    • Basis data — Pilih instans atau klaster DB RDS.

    • Koneksi maksimum kumpulan koneksi – Sesuaikan persentase maksimum koneksi yang tersedia yang dapat digunakan proksi.

    • Filter penyematan sesi – (Opsional) Pilih filter penyematan sesi. Tindakan ini menghindari langkah-langkah keamanan default untuk me-multipleks koneksi basis data di seluruh koneksi klien. Saat ini, pengaturan tidak didukung untuk PostgreSQL. Satu-satunya pilihan adalah EXCLUDE_VARIABLE_SETS.

      Mengaktifkan pengaturan ini dapat menyebabkan variabel sesi dari satu koneksi memengaruhi koneksi lain. Hal ini dapat menyebabkan kesalahan atau masalah ketepatan jika kueri Anda bergantung pada nilai variabel sesi yang ditetapkan di luar transaksi saat ini. Pertimbangkan untuk menggunakan opsi ini setelah memastikan bahwa aplikasi Anda sudah bisa berbagi koneksi basis data dengan aman di seluruh koneksi klien.

      Pola berikut bisa dianggap aman:

      • Pernyataan SET di mana tidak ada perubahan pada nilai variabel sesi efektif, yaitu tidak ada perubahan pada variabel sesi.

      • Anda mengubah nilai variabel sesi dan mengeksekusi pernyataan dalam transaksi yang sama.

      Untuk informasi selengkapnya, lihat Menghindari penyematan.

    • Batas waktu peminjaman koneksi – Sesuaikan interval batas waktu peminjaman koneksi. Pengaturan ini berlaku saat jumlah maksimum koneksi sudah digunakan semua untuk proksi. Pengaturan ini menentukan seberapa lama proksi harus menunggu koneksi menjadi tersedia sebelum menampilkan sebuah kesalahan batas waktu.

    • Kueri inisialisasi – (Opsional) Tambahkan kueri inisialisasi, atau ubah kueri inisialisasi ini. Anda dapat menentukan satu atau beberapa pernyataan SQL untuk proksi yang akan dijalankan saat membuka setiap koneksi basis data baru. Pengaturan ini biasanya digunakan dengan pernyataan SET untuk memastikan bahwa setiap koneksi memiliki pengaturan yang identik seperti zona waktu dan kumpulan karakter. Untuk beberapa pernyataan, gunakan titik koma sebagai pemisah. Anda juga dapat menyertakan beberapa variabel dalam satu pernyataan SET, seperti SET x=1, y=2.

    Anda tidak dapat mengubah properti tertentu, seperti ID grup target dan mesin basis data.

  5. Pilih Ubah grup target.

Untuk memodifikasi proxy menggunakan AWS CLI, gunakan perintah modify-db-proxy, modify-db-proxy-target-group, deregister-db-proxy-target, dan register-db-proxy-target.

Dengan perintah modify-db-proxy, Anda dapat mengubah properti seperti berikut:

  • Kumpulan rahasia Secrets Manager yang digunakan proksi.

  • Apakah TLS diperlukan.

  • Batas waktu klien idle.

  • Apakah harus mencatat informasi tambahan dari pernyataan SQL untuk debugging.

  • Peran IAM yang digunakan untuk mengambil rahasia Secrets Manager.

  • Grup keamanan yang digunakan proksi.

Contoh berikut menunjukkan cara mengganti nama proksi yang sudah ada.

aws rds modify-db-proxy --db-proxy-name the-proxy --new-db-proxy-name the_new_name

Untuk mengubah pengaturan terkait koneksi atau mengganti nama grup target, gunakan perintah modify-db-proxy-target-group. Saat ini, semua proksi memiliki satu grup target bernama default. Saat bekerja dengan grup target ini, Anda menentukan nama proksi dan default untuk nama grup target.

Contoh berikut ini menunjukkan cara memeriksa pengaturan MaxIdleConnectionsPercent untuk proksi terlebih dahulu dan kemudian mengubahnya menggunakan grup target.

aws rds describe-db-proxy-target-groups --db-proxy-name the-proxy { "TargetGroups": [ { "Status": "available", "UpdatedDate": "2019-11-30T16:49:30.342Z", "ConnectionPoolConfig": { "MaxIdleConnectionsPercent": 50, "ConnectionBorrowTimeout": 120, "MaxConnectionsPercent": 100, "SessionPinningFilters": [] }, "TargetGroupName": "default", "CreatedDate": "2019-11-30T16:49:27.940Z", "DBProxyName": "the-proxy", "IsDefault": true } ] } aws rds modify-db-proxy-target-group --db-proxy-name the-proxy --target-group-name default --connection-pool-config ' { "MaxIdleConnectionsPercent": 75 }' { "DBProxyTargetGroup": { "Status": "available", "UpdatedDate": "2019-12-02T04:09:50.420Z", "ConnectionPoolConfig": { "MaxIdleConnectionsPercent": 75, "ConnectionBorrowTimeout": 120, "MaxConnectionsPercent": 100, "SessionPinningFilters": [] }, "TargetGroupName": "default", "CreatedDate": "2019-11-30T16:49:27.940Z", "DBProxyName": "the-proxy", "IsDefault": true } }

Dengan perintah deregister-db-proxy-targets dan register-db-proxy-targets, Anda dapat mengubah instans DB RDS mana yang dikaitkan dengan proksi melalui grup targetnya. Saat ini, setiap proksi dapat terhubung ke satu instans DB RDS. Grup target melacak detail koneksi untuk semua instans DB RDS dalam sebuah konfigurasi Multi-AZ.

Contoh berikut dimulai dengan proksi yang dikaitkan dengan klaster Aurora MySQL bernama cluster-56-2020-02-25-1399. Contoh ini menunjukkan cara mengubah proksi sehingga dapat terhubung ke klaster lainnya yang bernama provisioned-cluster.

Saat menggunakan instans DB RDS, Anda dapat menentukan opsi --db-instance-identifier.

Contoh berikut mengubah proksi Aurora MySQL. Proksi Aurora PostgreSQL memiliki port 5432.

aws rds describe-db-proxy-targets --db-proxy-name the-proxy { "Targets": [ { "Endpoint": "instance-9814.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-9814" }, { "Endpoint": "instance-8898.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-8898" }, { "Endpoint": "instance-1018.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-1018" }, { "Type": "TRACKED_CLUSTER", "Port": 0, "RdsResourceId": "cluster-56-2020-02-25-1399" }, { "Endpoint": "instance-4330.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-4330" } ] } aws rds deregister-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier cluster-56-2020-02-25-1399 aws rds describe-db-proxy-targets --db-proxy-name the-proxy { "Targets": [] } aws rds register-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier provisioned-cluster { "DBProxyTargets": [ { "Type": "TRACKED_CLUSTER", "Port": 0, "RdsResourceId": "provisioned-cluster" }, { "Endpoint": "gkldje.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "gkldje" }, { "Endpoint": "provisioned-1.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "provisioned-1" } ] }

Untuk memodifikasi proxy menggunakan RDS API, Anda menggunakan operasi ModifyDBProxy, ModifyDB Group, DeregisterDB, dan operasi RegisterDB. ProxyTarget ProxyTargets ProxyTargets

Dengan ModifyDBProxy, Anda dapat mengubah properti seperti berikut:

  • Kumpulan rahasia Secrets Manager yang digunakan proksi.

  • Apakah TLS diperlukan.

  • Batas waktu klien idle.

  • Apakah harus mencatat informasi tambahan dari pernyataan SQL untuk debugging.

  • Peran IAM yang digunakan untuk mengambil rahasia Secrets Manager.

  • Grup keamanan yang digunakan proksi.

Dengan ModifyDBProxyTargetGroup, Anda dapat mengubah pengaturan terkait koneksi atau mengganti nama grup target. Saat ini, semua proksi memiliki satu grup target bernama default. Saat bekerja dengan grup target ini, Anda menentukan nama proksi dan default untuk nama grup target.

Dengan DeregisterDBProxyTargets dan RegisterDBProxyTargets, Anda dapat mengubah instans DB RDS mana yang dikaitkan dengan proksi melalui grup targetnya. Saat ini, setiap proksi dapat terhubung ke satu instans DB RDS . Grup target melacak detail koneksi untuk instans DB RDS dalam konfigurasi Multi-AZ .

Menambahkan pengguna basis data baru

Dalam beberapa kasus, Anda dapat menambahkan pengguna basis data baru ke instans atau klaster DB RDS yang terkait dengan proksi. Jika demikian, tambahkan atau ganti tujuan sebuah rahasia Secrets Manager untuk menyimpan kredensial dari pengguna tersebut. Untuk melakukan ini, pilih salah satu opsi berikut:

  1. Buat rahasia Secrets Manager yang baru, dengan menggunakan prosedur yang dijelaskan dalam Menyiapkan kredensi database di AWS Secrets Manager.

  2. Perbarui peran IAM untuk memberi Proksi RDS akses ke rahasia Secrets Manager baru. Untuk melakukannya, perbarui bagian sumber daya dari kebijakan peran IAM.

  3. Ubah Proksi RDS untuk menambahkan rahasia Secrets Manager baru di bagian Rahasia Secrets Manager.

  4. Jika pengguna baru menggantikan yang sudah ada, perbarui kredensial yang tersimpan dalam rahasia Secrets Manager proksi untuk pengguna yang sudah ada.

Menambahkan pengguna basis data baru ke basis data PostgreSQL

Saat menambahkan pengguna baru ke database PostgreSQL Anda, jika Anda telah menjalankan perintah berikut:

REVOKE CONNECT ON DATABASE postgres FROM PUBLIC;

Berikan hak istimewa CONNECT kepada pengguna rdsproxyadmin sehingga pengguna dapat memantau koneksi pada basis data target.

GRANT CONNECT ON DATABASE postgres TO rdsproxyadmin;

Anda juga dapat mengizinkan pengguna basis data target lainnya untuk melakukan pemeriksaan kondisi dengan mengubah rdsproxyadmin ke pengguna basis data dalam perintah di atas.

Mengubah kata sandi untuk pengguna basis data

Dalam beberapa kasus, Anda dapat mengubah kata sandi untuk pengguna basis data dalam klaster Aurora yang terkait dengan proksi. Jika demikian, perbarui rahasia Secrets Manager yang sesuai dengan kata sandi baru.

Koneksi klien dan basis data

Koneksi dari aplikasi Anda ke Proksi RDS dikenal sebagai koneksi klien. Koneksi dari proxy ke basis data adalah koneksi basis data. Saat menggunakan Proksi RDS, koneksi klien berakhir di proksi sementara koneksi basis data dikelola dalam Proksi RDS.

Pengumpulan koneksi sisi aplikasi dapat memberikan manfaat untuk mengurangi pembuatan koneksi berulang antara aplikasi Anda dan Proksi RDS.

Pertimbangkan aspek konfigurasi berikut sebelum menerapkan kumpulan koneksi sisi aplikasi:

  • Masa pakai maks koneksi klien: Proksi RDS menerapkan masa pakai maksimum koneksi klien selama 24 jam. Nilai ini tidak dapat dikonfigurasi. Konfigurasikan kumpulan Anda dengan masa pakai koneksi maksimum kurang dari 24 jam guna menghindari penurunan koneksi klien yang tidak terduga.

  • Batas waktu idle koneksi klien: Proksi RDS menerapkan waktu idle maksimum untuk koneksi klien. Konfigurasikan kumpulan Anda dengan batas waktu koneksi idle dengan nilai yang lebih rendah dari pengaturan batas waktu idle koneksi klien untuk Proksi RDS guna menghindari penurunan koneksi yang tidak terduga.

Jumlah maksimum koneksi klien yang dikonfigurasi dalam kumpulan koneksi sisi aplikasi Anda tidak harus dibatasi pada pengaturan max_connections untuk Proksi RDS.

Pengumpulan koneksi klien menghasilkan masa pakai koneksi klien yang lebih lama. Jika koneksi Anda mengalami penyematan, pengumpulan koneksi klien dapat mengurangi efisiensi multiplexing. Koneksi klien yang disematkan tetapi idle dalam kumpulan koneksi sisi aplikasi terus berpegang pada koneksi basis data dan mencegah koneksi basis data digunakan kembali oleh koneksi klien lainnya. Tinjau log proksi untuk memeriksa apakah koneksi Anda mengalami penyematan.

catatan

RDS Proxy menutup koneksi database beberapa saat setelah 24 jam ketika mereka tidak lagi digunakan. Proxy melakukan tindakan ini terlepas dari nilai pengaturan koneksi idle maksimum.

Mengonfigurasi pengaturan koneksi

Untuk menyesuaikan pengumpulan koneksi Proksi RDS, Anda dapat mengubah pengaturan berikut:

IdleClientBatas waktu

Anda dapat menentukan berapa lama koneksi klien bisa berada dalam status idle sebelum proksi menutupnya. Nilai default-nya adalah 1.800 detik (30 menit).

Koneksi klien dianggap idle jika aplikasi tidak mengirimkan permintaan baru dalam waktu yang ditentukan setelah permintaan sebelumnya selesai. Koneksi basis data yang mendasarinya akan tetap terbuka dan dikembalikan ke kumpulan koneksi. Oleh karena itu, koneksi dapat digunakan kembali untuk koneksi klien baru. Jika Anda ingin proksi secara proaktif menghapus koneksi yang sudah tidak terpakai, turunkan batas waktu koneksi klien yang idle. Jika beban kerja Anda sering terhubung dengan proksi, maka naikkan batas waktu koneksi klien yang idle untuk menghemat biaya pembangunan koneksi.

Pengaturan ini diwakili oleh bidang batas waktu koneksi klien Idle di konsol RDS dan IdleClientTimeout pengaturan di AWS CLI dan API. Untuk mempelajari cara mengubah nilai kolom Batas waktu koneksi klien idle di konsol RDS, lihat AWS Management Console. Untuk mempelajari cara mengubah nilai pengaturan IdleClientTimeout, lihat perintah CLI modify-db-proxy atau operasi API ModifyDBProxy.

MaxConnectionsPersen

Anda dapat membatasi jumlah koneksi yang dapat dibuat oleh Proksi RDS dengan basis data target. Anda menentukan batas dalam bentuk persentase koneksi maksimum yang tersedia untuk basis data Anda. Pengaturan ini diwakili oleh bidang koneksi maksimum Connection pool di konsol RDS dan MaxConnectionsPercent pengaturan di AWS CLI dan API.

Nilai MaxConnectionsPercent dinyatakan sebagai persentase dari pengaturan max_connections untuk instans DB RDS yang digunakan oleh grup target. Proksi tidak membuat semua koneksi ini di depan. Pengaturan ini memungkinkan proksi membuat koneksi ini karena beban kerja membutuhkannya.

Misalnya, untuk target basis data terdaftar dengan max_connections diatur ke 1000, dan MaxConnectionsPercent diatur ke 95, Proksi RDS menetapkan 950 koneksi sebagai batas atas koneksi bersamaan ke target basis data tersebut.

Efek samping umum beban kerja yang mencapai jumlah maksimum koneksi basis data yang diizinkan adalah peningkatan latensi kueri secara keseluruhan, disertai peningkatan metrik DatabaseConnectionsBorrowLatency. Anda dapat memantau koneksi basis data yang saat ini digunakan dan total koneksi basis data yang diizinkan dengan membandingkan metrik DatabaseConnections dan MaxDatabaseConnectionsAllowed.

Saat mengatur parameter ini, perhatikan praktik terbaik berikut:

  • Izinkan headroom koneksi yang cukup untuk perubahan pola beban kerja. Sebaiknya atur parameter ini setidaknya 30% di atas penggunaan maksimum yang dipantau baru-baru ini. Karena Proksi RDS mendistribusikan ulang kuota koneksi basis data di beberapa simpul, perubahan kapasitas internal mungkin memerlukan setidaknya 30% headroom untuk koneksi tambahan guna menghindari peningkatan latensi pinjaman.

  • Proksi RDS mencadangkan jumlah koneksi tertentu untuk pemantauan aktif guna mendukung failover cepat, perutean lalu lintas, dan operasi internal. Metrik MaxDatabaseConnectionsAllowed tidak mencakup koneksi yang dicadangkan ini. Metrik ini mewakili jumlah koneksi yang tersedia untuk melayani beban kerja, dan bisa lebih rendah dari nilai yang berasal dari pengaturan MaxConnectionsPercent.

    Nilai MaxConnectionsPercent minimum yang direkomendasikan

    • db.t3.small: 30

    • db.t3.medium atau lebih: 20

Untuk mempelajari cara mengubah nilai kolom Batas waktu maksimum kumpulan koneksi di konsol RDS, lihat AWS Management Console. Untuk mempelajari cara mengubah nilai MaxConnectionsPercent setelan, lihat perintah CLI modify-db-proxy-target-group atau operasi API ModifyDB Group. ProxyTarget

Untuk informasi tentang batas koneksi basis data, lihat Jumlah maksimum koneksi basis data.

MaxIdleConnectionsPercent

Anda dapat mengontrol jumlah koneksi basis data idle yang dapat disimpan oleh Proksi RDS di kumpulan koneksi. Secara default, Proksi RDS menganggap koneksi basis data di kumpulannya menjadi idle jika tidak ada aktivitas pada koneksi selama lima menit.

MaxIdleConnectionsPercentNilai dinyatakan sebagai persentase dari max_connections pengaturan untuk kelompok target instans RDS DB. Nilai default-nya adalah 50 persen dari MaxConnectionsPercent, dan batas atasnya adalah nilai MaxConnectionsPercent. Misalnya, jikaMaxConnectionsPercent, adalah 80, maka nilai default MaxIdleConnectionsPercent adalah 40. Jika nilai MaxConnectionsPercent tidak ditentukan, maka untuk RDS untuk SQL Server, MaxIdleConnectionsPercent adalah 5, dan untuk semua mesin lainnya, defaultnya adalah 50.

Dengan nilai tinggi, proksi membiarkan koneksi basis data idle dengan persentase yang tinggi tetap terbuka. Dengan nilai rendah, proksi menutup koneksi basis data idle dengan persentase yang tinggi. Jika beban kerja Anda tidak dapat diprediksi, pertimbangkan untuk mengatur nilai tinggi untuk MaxIdleConnectionsPercent. Jika Anda melakukannya, Proksi RDS dapat mengakomodasi lonjakan aktivitas tanpa membuka banyak koneksi basis data baru.

Pengaturan ini diwakili oleh MaxIdleConnectionsPercent pengaturan DBProxyTargetGroup di AWS CLI dan API. Untuk mempelajari cara mengubah nilai MaxIdleConnectionsPercent setelan, lihat perintah CLI modify-db-proxy-target-group atau operasi API ModifyDB Group. ProxyTarget

Untuk informasi tentang batas koneksi basis data, lihat Jumlah maksimum koneksi basis data.

ConnectionBorrowBatas waktu

Anda dapat memilih berapa lama Proksi RDS menunggu koneksi basis data dalam kumpulan koneksi menjadi tersedia untuk digunakan sebelum menampilkan eror batas waktu. Periode default-nya adalah 120 detik. Pengaturan ini berlaku saat jumlah koneksi mencapai titik maksimum, sehingga tidak ada koneksi yang tersedia dalam kumpulan koneksi. Pengaturan ini juga berlaku ketika tidak ada instans basis data yang tersedia untuk menangani permintaan, seperti saat operasi failover sedang berlangsung. Dengan pengaturan ini, Anda dapat mengatur periode tunggu terbaik untuk aplikasi Anda tanpa mengubah batas waktu kueri dalam kode aplikasi Anda.

Pengaturan ini diwakili oleh bidang batas waktu pinjam koneksi di konsol RDS atau ConnectionBorrowTimeout pengaturan DBProxyTargetGroup di API atau. AWS CLI Untuk mempelajari cara mengubah nilai kolom Batas waktu peminjaman koneksi di konsol RDS, lihat AWS Management Console. Untuk mempelajari cara mengubah nilai ConnectionBorrowTimeout setelan, lihat perintah CLI modify-db-proxy-target-group atau operasi API ModifyDB Group. ProxyTarget

Menghindari penyematan

Multiplexing akan lebih efisien saat permintaan basis data tidak bergantung pada informasi status dari permintaan sebelumnya. Dalam kasus ini, Proksi RDS dapat menggunakan kembali koneksi saat setiap transaksi selesai. Contoh informasi status tersebut mencakup sebagian besar variabel dan parameter konfigurasi yang dapat diubah melalui pernyataan SET atau SELECT. Secara default, transaksi SQL pada koneksi klien dapat bermultipleks antar-koneksi basis data acuan.

Koneksi ke proksi dapat memasukkan status yang disebut sebagai penyematan. Saat koneksi disematkan, setiap transaksi berikutnya akan menggunakan koneksi basis data acuan yang sama hingga sesi berakhir. Koneksi klien lainnya juga tidak dapat menggunakan kembali koneksi basis data tersebut hingga sesi berakhir. Sesi berakhir saat koneksi klien terputus.

Proksi RDS secara otomatis menyematkan koneksi klien ke koneksi DB tertentu saat mendeteksi perubahan sebuah status sesi yang tidak sesuai untuk sesi lainnya. Penyematan mengurangi efektivitas penggunaan kembali koneksi. Jika semua atau hampir semua koneksi Anda mengalami penyematan, pertimbangkan untuk mengubah kode aplikasi atau beban kerja untuk mengurangi kondisi yang menyebabkan penyematan.

Misalnya, aplikasi Anda mengubah variabel sesi atau parameter konfigurasi. Dalam hal ini, pernyataan selanjutnya dapat mengandalkan variabel atau parameter baru yang berlaku. Oleh karena itu, saat Proksi RDS memproses permintaan untuk mengubah variabel sesi atau pengaturan konfigurasi, sesi ini akan disematkan ke koneksi DB. Dengan demikian, tahap sesi tetap berfungsi untuk semua transaksi berikutnya dalam sesi yang sama.

Untuk beberapa mesin basis data, aturan ini tidak berlaku untuk semua parameter yang dapat Anda atur. Proksi RDS melacak pernyataan dan variabel tertentu. Oleh karena itu, Proksi RDS tidak menyematkan sesi saat Anda mengubahnya. Dalam kasus ini, Proksi RDS hanya menggunakan kembali koneksi untuk sesi lain yang memiliki nilai yang sama untuk pengaturan tersebut. Untuk detail tentang apa yang dilacak Proksi RDS untuk mesin basis data, lihat berikut ini:

Apa yang Dilacak Proksi RDS untuk basis data RDS for SQL Server

Berikut ini adalah pernyataan SQL Server yang dilacak Proksi RDS:

  • USE

  • SET ANSI_NULLS

  • SET ANSI_PADDING

  • SET ANSI_WARNINGS

  • SET ARITHABORT

  • SET CONCAT_NULL_YIELDS_NULL

  • SET CURSOR_CLOSE_ON_COMMIT

  • SET DATEFIRST

  • SET DATEFORMAT

  • SET LANGUAGE

  • SET LOCK_TIMEOUT

  • SET NUMERIC_ROUNDABORT

  • SET QUOTED_IDENTIFIER

  • SET TEXTSIZE

  • SET TRANSACTION ISOLATION LEVEL

Apa yang dilacak Proksi RDS untuk basis data RDS for MariaDB dan RDS for MySQL

Berikut ini adalah pernyataan MariaDB dan MySQL yang dilacak Proksi RDS:

  • DROP DATABASE

  • DROP SCHEMA

  • USE

Berikut ini adalah variabel MySQL dan MariaDB yang dilacak Proksi RDS:

  • AUTOCOMMIT

  • AUTO_INCREMENT_INCREMENT

  • CHARACTER SET (or CHAR SET)

  • CHARACTER_SET_CLIENT

  • CHARACTER_SET_DATABASE

  • CHARACTER_SET_FILESYSTEM

  • CHARACTER_SET_CONNECTION

  • CHARACTER_SET_RESULTS

  • CHARACTER_SET_SERVER

  • COLLATION_CONNECTION

  • COLLATION_DATABASE

  • COLLATION_SERVER

  • INTERACTIVE_TIMEOUT

  • NAMES

  • NET_WRITE_TIMEOUT

  • QUERY_CACHE_TYPE

  • SESSION_TRACK_SCHEMA

  • SQL_MODE

  • TIME_ZONE

  • TRANSACTION_ISOLATION (or TX_ISOLATION)

  • TRANSACTION_READ_ONLY (or TX_READ_ONLY)

  • WAIT_TIMEOUT

Meminimalkan penyematan

Penyetelan performa untuk Proksi RDS meliputi upaya memaksimalkan penggunaan kembali koneksi tingkat transaksi (multiplexing) dengan meminimalkan penyematan.

Anda dapat meminimalkan penyematan dengan melakukan hal berikut:

  • Hindari permintaan basis data yang tidak perlu yang dapat menyebabkan penyematan.

  • Atur variabel dan pengaturan konfigurasi secara konsisten di semua koneksi. Dengan demikian, sesi berikutnya cenderung menggunakan kembali koneksi yang memiliki pengaturan tertentu tersebut.

    Akan tetapi, untuk pengaturan PostgreSQL, sebuah variabel bisa menimbulkan penyematan sesi.

  • Untuk basis data keluarga MySQL, terapkan sebuah filter penyematan sesi ke proksi. Anda dapat mengecualikan jenis operasi tertentu dari penyematan sesi jika Anda mengetahui bahwa tindakan ini tidak memengaruhi operasi yang benar aplikasi Anda.

  • Lihat seberapa sering penyematan terjadi dengan memantau CloudWatch metrik DatabaseConnectionsCurrentlySessionPinned Amazon. Untuk informasi tentang ini dan CloudWatch metrik lainnya, lihatMemantau metrik Proxy RDS dengan Amazon CloudWatch.

  • Jika menggunakan pernyataan SET untuk melakukan inisialisasi yang identik untuk setiap koneksi klien, Anda dapat melakukannya sekaligus mempertahankan multiplexing tingkat transaksi. Dalam kasus ini, Anda memindahkan pernyataan yang menyiapkan status sesi awal ke dalam kueri inisialisasi yang digunakan oleh proksi. Properti ini adalah string yang berisi satu atau beberapa pernyataan SQL, yang dipisahkan oleh titik koma.

    Misalnya, Anda dapat menentukan kueri inisialisasi untuk proksi yang menetapkan parameter konfigurasi tertentu. Kemudian, Proksi RDS menerapkan pengaturan tersebut setiap kali koneksi baru untuk proksi itu disiapkan. Anda dapat menghapus pernyataan SET yang sesuai dari kode aplikasi, sehingga tidak mengganggu multiplexing tingkat transaksi.

    Untuk metrik tentang seberapa sering penyematan terjadi pada proksi, lihat Memantau metrik Proxy RDS dengan Amazon CloudWatch.

Kondisi yang menyebabkan penyematan untuk semua keluarga mesin

Proksi menyematkan sesi ke koneksi saat ini dalam situasi berikut ketika multiplexing dapat menyebabkan perilaku yang tidak terduga:

  • Pernyataan apa pun dengan ukuran teks lebih dari 16 KB bisa menyebabkan proksi menyematkan sesi.

Kondisi yang menyebabkan penyematan untuk RDS for Microsoft SQL Server

Untuk RDS for SQL Server, interaksi berikut dapat menyebabkan penyematan:

  • Menggunakan beberapa kumpulan hasil yang aktif (MARS). Untuk informasi tentang MARS, lihat dokumentasi SQL Server.

  • Menggunakan komunikasi koordinator transaksi terdistribusi (DTC).

  • Membuat tabel sementara, transaksi, kursor, atau pernyataan yang disiapkan.

  • Menggunakan pernyataan SET berikut:

    • SET ANSI_DEFAULTS

    • SET ANSI_NULL_DFLT

    • SET ARITHIGNORE

    • SET DEADLOCK_PRIORITY

    • SET FIPS_FLAGGER

    • SET FMTONLY

    • SET FORCEPLAN

    • SET IDENTITY_INSERT

    • SET NOCOUNT

    • SET NOEXEC

    • SET OFFSETS

    • SET PARSEONLY

    • SET QUERY_GOVERNOR_COST_LIMIT

    • SET REMOTE_PROC_TRANSACTIONS

    • SET ROWCOUNT

    • SET SHOWPLAN_ALL, SHOWPLAN_TEXT, dan SHOWPLAN_XML

    • SET STATISTICS

    • SET XACT_ABORT

Kondisi yang menyebabkan penyematan untuk RDS for MariaDB dan RDS for MySQL

Untuk MariaDB dan MySQL, interaksi berikut juga dapat menyebabkan penyematan:

  • Pernyataan kunci tabel eksplisit LOCK TABLE, LOCK TABLES, atau FLUSH TABLES WITH READ LOCK menyebabkan proksi menyematkan sesi.

  • Membuat kunci bernama dengan menggunakan GET_LOCK menyebabkan proksi menyematkan sesi.

  • Menetapkan variabel pengguna atau variabel sistem (dengan beberapa pengecualian) menyebabkan proksi menyematkan sesi. Jika situasi ini terlalu banyak mengurangi frekuensi penggunaan kembali koneksi Anda, pilih operasi SET agar tidak menyebabkan penyematan. Untuk informasi tentang cara melakukannya dengan mengatur properti filter penyematan sesi, lihat Membuat Proksi RDS dan Mengubah Proksi RDS.

  • Membuat tabel sementara menyebabkan proksi menyematkan sesi. Dengan begitu, konten tabel sementara dipertahankan sepanjang sesi, terlepas dari batasan transaksi.

  • Memanggil fungsi ROW_COUNT, FOUND_ROWS, dan LAST_INSERT_ID terkadang menyebabkan penyematan.

  • Pernyataan yang disiapkan menyebabkan proksi menyematkan sesi. Aturan ini berlaku terlepas dari apakah pernyataan yang disiapkan menggunakan teks SQL maupun protokol biner.

  • Proksi RDS tidak menyematkan koneksi saat Anda menggunakan SET LOCAL.

  • Memanggil prosedur tersimpan dan fungsi tersimpan tidak menyebabkan pinning. Proksi RDS tidak mendeteksi perubahan status sesi apa pun yang terjadi akibat perintah tersebut. Pastikan aplikasi Anda tidak mengubah status sesi di dalam rutinitas tersimpan jika Anda mengandalkan status sesi tersebut untuk bertahan di seluruh transaksi. Misalnya, Proxy RDS saat ini tidak kompatibel dengan prosedur tersimpan yang membuat tabel sementara yang bertahan di semua transaksi.

Jika memiliki pengetahuan mendalam tentang perilaku aplikasi, Anda dapat menangani perilaku penyematan untuk pernyataan aplikasi tertentu. Untuk melakukannya, pilih opsi Filter penyematan sesi saat membuat proksi. Saat ini, Anda dapat memilih untuk tidak menggunakan penyematan sesi untuk pengaturan variabel sesi dan pengaturan konfigurasi.

Kondisi yang menyebabkan penyematan untuk RDS for PostgreSQL

Untuk PostgreSQL, interaksi berikut juga menyebabkan penyematan:

  • Menggunakan SET perintah.

  • MenggunakanPREPARE,DISCARD,DEALLOCATE, atau EXECUTE perintah untuk mengelola pernyataan yang disiapkan.

  • Membuat urutan sementara, tabel, atau tampilan.

  • Mendeklarasikan kursor.

  • Membuang status sesi.

  • Mendengarkan di saluran notifikasi.

  • Memuat modul perpustakaan sepertiauto_explain.

  • Memanipulasi urutan menggunakan fungsi seperti nextval dan. setval

  • Berinteraksi dengan kunci menggunakan fungsi seperti pg_advisory_lock danpg_try_advisory_lock.

    catatan

    RDS Proxy tidak menyematkan kunci penasihat tingkat transaksi, khususnya,pg_advisory_xact_lock, pg_advisory_xact_lock_sharedpg_try_advisory_xact_lock, dan. pg_try_advisory_xact_lock_shared

  • Mengatur parameter, atau mengatur ulang parameter ke defaultnya. Secara khusus, menggunakan SET dan set_config perintah untuk menetapkan nilai default ke variabel sesi.

  • Memanggil prosedur tersimpan dan fungsi tersimpan tidak menyebabkan pinning. Proksi RDS tidak mendeteksi perubahan status sesi apa pun yang terjadi akibat perintah tersebut. Pastikan aplikasi Anda tidak mengubah status sesi di dalam rutinitas tersimpan jika Anda mengandalkan status sesi tersebut untuk bertahan di seluruh transaksi. Misalnya, Proxy RDS saat ini tidak kompatibel dengan prosedur tersimpan yang membuat tabel sementara yang bertahan di semua transaksi.

Menghapus Proksi RDS

Anda dapat menghapus proksi saat tidak lagi membutuhkannya. Atau Anda dapat menghapus proksi jika Anda merasa instans atau klaster DB yang terkait dengannya sedang dalam perbaikan.

Untuk menghapus proksi
  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Proksi.

  3. Pilih proksi yang akan dihapus dari daftar.

  4. Pilih Hapus Proksi.

Untuk menghapus proxy DB, gunakan AWS CLI perintah delete-db-proxy. Untuk menghapus asosiasi terkait, gunakan juga perintah deregister-db-proxy-targets.

aws rds delete-db-proxy --name proxy_name
aws rds deregister-db-proxy-targets --db-proxy-name proxy_name [--target-group-name target_group_name] [--target-ids comma_separated_list] # or [--db-instance-identifiers instance_id] # or [--db-cluster-identifiers cluster_id]

Untuk menghapus proksi DB, panggil fungsi Amazon RDS API DeleteDBProxy. Untuk menghapus item dan asosiasi terkait, Anda juga memanggil fungsi DeleteDB ProxyTarget Group dan DeregisterDB. ProxyTargets