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.
Topik
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
-
Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.
-
Di panel navigasi, pilih Proksi.
-
Dalam daftar proksi, pilih proksi yang pengaturannya ingin diubah atau kunjungi halaman detailnya.
-
Untuk Tindakan, pilih Ubah.
-
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.
-
-
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
-
Pada halaman Proksi, buka halaman detail proksi.
-
Untuk Grup target, pilih tautan
default
. Saat ini, semua proksi memiliki satu grup target bernamadefault
. -
Pada halaman detail grup target default, pilih Ubah.
-
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 pernyataanSET
, sepertiSET x=1, y=2
.
Anda tidak dapat mengubah properti tertentu, seperti ID grup target dan mesin basis data.
-
-
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-namethe_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-namethe-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-namethe-proxy
--db-cluster-identifier cluster-56-2020-02-25-1399 aws rds describe-db-proxy-targets --db-proxy-namethe-proxy
{ "Targets": [] } aws rds register-db-proxy-targets --db-proxy-namethe-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:
-
Buat rahasia Secrets Manager yang baru, dengan menggunakan prosedur yang dijelaskan dalam Menyiapkan kredensi database di AWS Secrets Manager.
-
Perbarui peran IAM untuk memberi Proksi RDS akses ke rahasia Secrets Manager baru. Untuk melakukannya, perbarui bagian sumber daya dari kebijakan peran IAM.
-
Ubah Proksi RDS untuk menambahkan rahasia Secrets Manager baru di bagian Rahasia Secrets Manager.
-
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 pengaturanMaxConnectionsPercent
.Nilai
MaxConnectionsPercent
minimum yang direkomendasikandb.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.
MaxIdleConnectionsPercent
Nilai 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
, danSHOWPLAN_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
, atauFLUSH 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
, danLAST_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. -
Menggunakan
PREPARE
,DISCARD
,DEALLOCATE
, atauEXECUTE
perintah untuk mengelola pernyataan yang disiapkan. -
Membuat urutan sementara, tabel, atau tampilan.
-
Mendeklarasikan kursor.
-
Membuang status sesi.
-
Mendengarkan di saluran notifikasi.
-
Memuat modul perpustakaan seperti
auto_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_shared
pg_try_advisory_xact_lock
, dan.pg_try_advisory_xact_lock_shared
-
Mengatur parameter, atau mengatur ulang parameter ke defaultnya. Secara khusus, menggunakan
SET
danset_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
-
Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.
-
Di panel navigasi, pilih Proksi.
-
Pilih proksi yang akan dihapus dari daftar.
-
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-nametarget_group_name
] [--target-idscomma_separated_list
] # or [--db-instance-identifiersinstance_id
] # or [--db-cluster-identifierscluster_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