Sumber data PostgreSQL menyediakan saluran dua arah untuk membaca dan menulis data ke PostgreSQL. Anda dapat mengonfigurasi tugas sinkronisasi data menggunakan Antarmuka tanpa kode atau editor kode. Topik ini menjelaskan dukungan DataWorks terhadap sinkronisasi data PostgreSQL.
Versi yang didukung
Anda dapat mengonfigurasi sumber data untuk versi PostgreSQL 10, 11, 12, 13, 14, 15, dan 16.4. Untuk memeriksa versi database PostgreSQL Anda, jalankan pernyataan berikut.
SHOW SERVER_VERSION;Batasan
Baca dan tulis offline
Anda dapat membaca data dari views.
Sumber data PostgreSQL mendukung autentikasi berbasis password, termasuk metode SCRAM-SHA-256. Jika Anda mengubah password atau metode autentikasi di database PostgreSQL, Anda harus memperbarui konfigurasi sumber data, menguji koneksi lagi, dan menjalankan tugas terkait secara manual untuk memverifikasi perubahan tersebut.
Jika nama tabel atau field di PostgreSQL diawali dengan angka, bersifat case-sensitive, atau mengandung tanda hubung (-), Anda harus membungkus nama tersebut dalam tanda kutip ganda (""). Jika tidak, plugin PostgreSQL tidak dapat membaca atau menulis data. Di plugin PostgreSQL Reader dan Writer, tanda kutip ganda ("") merupakan kata kunci JSON. Oleh karena itu, Anda harus melakukan escape tanda kutip ganda tersebut dengan backslash (\). Sebagai contoh, jika sebuah tabel bernama
123Test, maka nama yang telah di-escape adalah\"123Test\".CatatanKedua tanda kutip ganda (pembuka dan penutup) harus di-escape dengan backslash (\).
Antarmuka tanpa kode tidak mendukung escaping. Anda harus beralih ke editor kode untuk melakukan escaping karakter.
Kode berikut menunjukkan contoh cara melakukan escaping karakter di editor kode.
"parameter": { "datasource": "abc", "column": [ "id", "\"123Test\"", // Tambahkan karakter escape. ], "where": "", "splitPk": "id", "table": "public.wpw_test" },Pembaruan data di sumber data PostgreSQL berdasarkan indeks unik tidak didukung. Untuk memperbarui data, Anda harus terlebih dahulu menulis data ke tabel temporary, lalu menggunakan operasi
RENAME.
Baca real-time
Batasan berikut berlaku untuk tugas sinkronisasi real-time di Data Integration:
Data Integration menyediakan dukungan khusus untuk
ADD COLUMN:Batasan: Anda tidak dapat menggabungkan operasi
ADD COLUMNdengan operasiADD COLUMN,DROP COLUMN, atau pernyataan Data Definition Language (DDL) lainnya dalam satu transaksi.PentingJika Anda menggunakan
ADD COLUMNbersamaan dengan operasi lain sepertiDROP COLUMN or RENAME COLUMN, yang merupakan perilakuALTER COLUMN, tugas sinkronisasi data akan gagal.Batasan: Data Integration tidak dapat mendeteksi operasi DDL selain
ADD COLUMN.
Operasi ALTER TABLE dan
CREATE TABLEtidak didukung.Replikasi tabel TEMPORARY, UNLOGGED, dan Hyper tidak didukung. PostgreSQL tidak menyediakan mekanisme untuk mengurai log dan berlangganan jenis tabel tersebut.
Replikasi Sequences (
serial/bigserial/identity) tidak didukung.Operasi TRUNCATE tidak didukung.
Replikasi objek besar (Bytea) tidak didukung.
Replikasi views, materialized views, dan foreign tables tidak didukung.
-
Saat menggunakan PostgreSQL sebagai sumber untuk sinkronisasi real-time tingkat tabel tunggal atau seluruh database, Anda hanya dapat menyinkronkan tabel yang dimiliki oleh pengguna database yang dikonfigurasi.
Tipe data yang didukung
Sebagian besar tipe data PostgreSQL didukung. Namun, beberapa tipe tidak didukung untuk operasi baca dan tulis offline. Anda harus memverifikasi bahwa tipe data Anda didukung.
Tabel berikut mencantumkan pemetaan tipe data PostgreSQL.
Kategori | Tipe data PostgreSQL |
Tipe integer | BIGINT, BIGSERIAL, INTEGER, SMALLINT, dan SERIAL |
Tipe bilangan titik mengambang | DOUBLE PRECISION, MONEY, NUMERIC, dan REAL |
Tipe string | VARCHAR, CHAR, TEXT, BIT, dan INET |
Tipe tanggal dan waktu | DATE, TIME, dan TIMESTAMP |
Tipe Boolean | BOOL |
Tipe biner | BYTEA |
Tipe data yang tidak tercantum dalam tabel tidak didukung.
Untuk PostgreSQL Reader, Anda harus mengonversi tipe data MONEY, INET, dan BIT menggunakan sintaks seperti
a_inet::varchar.
Persiapan
Sebelum menyinkronkan data di DataWorks, Anda harus menyiapkan lingkungan PostgreSQL seperti yang dijelaskan dalam bagian ini. Persiapan ini memastikan bahwa tugas sinkronisasi data PostgreSQL dapat dikonfigurasi dan dijalankan sesuai harapan. Bagian-bagian berikut menjelaskan persiapan yang diperlukan.
Persiapan 1: Buat akun dan konfigurasikan izin
Buat akun login database untuk operasi selanjutnya. Akun ini harus memiliki izin REPLICATION dan LOGIN.
Sinkronisasi real-time hanya mendukung replikasi logis. Replikasi logis menggunakan model publish and subscribe. Dalam model ini, satu atau lebih subscriber berlangganan ke satu atau lebih publication pada node publisher. Subscriber menarik data dari publication yang mereka langgani.
Replikasi logis suatu tabel biasanya dimulai dengan mengambil snapshot data di database publisher dan menyalinnya ke subscriber. Setelah snapshot disalin, perubahan di publisher dikirim ke subscriber secara real-time.
Buat akun.
Untuk informasi selengkapnya, lihat Buat akun dan database.
Konfigurasikan izin.
Periksa apakah akun memiliki izin
replication.select userepl from pg_user where usename='xxx'Jika perintah mengembalikan True, izin telah diberikan. Jika mengembalikan False, izin belum diberikan. Untuk memberikan izin tersebut, jalankan pernyataan berikut:
ALTER USER <user> REPLICATION;
Persiapan 2: Periksa dukungan database sekunder
SELECT pg_is_in_recovery()
Hanya database utama yang didukung. Perintah harus mengembalikan False. Jika mengembalikan True, database tersebut adalah database sekunder. Sinkronisasi real-time tidak mendukung database sekunder. Anda harus mengubah konfigurasi sumber data untuk menggunakan database utama. Untuk informasi selengkapnya, lihat Konfigurasi sumber data PostgreSQL.
Persiapan 3: Periksa apakah wal_level diatur ke logical
show wal_level
Parameter wal_level menentukan tingkat wal_log. Perintah harus mengembalikan logical. Jika tidak, mekanisme replikasi logis tidak didukung.
Persiapan 4: Periksa apakah proses wal_sender dapat dimulai
-- Query max_wal_senders.
show max_wal_senders;
-- Query jumlah proses pg_stat_replication.
select count(*) from pg_stat_replicationJika max_wal_senders tidak kosong, dan nilai max_wal_senders lebih besar daripada jumlah entri di pg_stat_replication, maka tersedia proses wal_sender yang idle. Database PostgreSQL memulai proses wal_sender untuk program sinkronisasi data guna mengirim log ke subscriber.
Untuk setiap tabel yang ingin Anda sinkronkan, Anda harus menjalankan pernyataan ALTER TABLE [tableName] REPLICA IDENTITY FULL untuk memberikan izin yang diperlukan. Jika tidak, tugas sinkronisasi real-time akan melaporkan error.
Setelah tugas sinkronisasi real-time PostgreSQL dimulai, sistem secara otomatis membuat slot dan publication di database. Nama slot mengikuti format di_slot_ + ID Solusi, dan nama publication mengikuti format di_pub_ + ID Solusi. Setelah tugas sinkronisasi real-time dihentikan atau dibatalkan publikasinya, Anda harus menghapus slot dan publication tersebut secara manual. Jika tidak, Write-Ahead Logging (WAL) PostgreSQL dapat terus bertambah.
Tambahkan sumber data
Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk di Manajemen sumber data. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.
Jika autentikasi SSL diaktifkan untuk database PostgreSQL Anda, Anda juga harus mengaktifkan autentikasi SSL saat menambahkan sumber data PostgreSQL di DataWorks. Untuk informasi selengkapnya, lihat Lampiran 2: Tambahkan autentikasi SSL ke sumber data PostgreSQL.
Kembangkan tugas sinkronisasi data: Panduan sinkronisasi PostgreSQL
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Panduan konfigurasi tugas sinkronisasi offline untuk tabel tunggal
Untuk informasi selengkapnya, lihat Gunakan antarmuka tanpa kode dan Gunakan editor kode.
Untuk daftar lengkap parameter dan contoh skrip editor kode, lihat Lampiran 1: Contoh skrip dan deskripsi parameter.
Panduan konfigurasi tugas baca offline seluruh database dan sinkronisasi real-time
Untuk informasi selengkapnya, lihat Konfigurasi tugas sinkronisasi real-time untuk seluruh database.
FAQ
Pemulihan data dalam pengaturan sinkronisasi aktif/standby.
Masalah ini dapat terjadi ketika PostgreSQL dikonfigurasi untuk pemulihan bencana aktif/standby. Dalam konfigurasi ini, database sekunder terus-menerus memulihkan data dari database utama. Terdapat jeda waktu dalam sinkronisasi data antara database utama dan sekunder. Dalam beberapa kasus, seperti latensi jaringan, data di database sekunder dapat berbeda secara signifikan dari data di database utama. Akibatnya, data yang disinkronkan dari database sekunder bukanlah citra lengkap dan mutakhir dari database utama.
Batasan konsistensi.
PostgreSQL adalah sistem manajemen database relasional (RDBMS) yang menyediakan antarmuka kueri data dengan konsistensi kuat. Misalnya, jika proses lain menulis data ke database selama tugas sinkronisasi berlangsung, PostgreSQL Reader tidak mengambil data yang diperbarui karena fitur snapshot database.
Penjelasan di atas berlaku untuk konsistensi data PostgreSQL Reader dalam model single-threaded. PostgreSQL Reader juga dapat menggunakan ekstraksi data konkuren berdasarkan konfigurasi Anda. Dalam kasus ini, konsistensi data tidak dapat dijamin secara ketat.
Setelah PostgreSQL Reader melakukan sharding data berdasarkan parameter splitPk, sistem memulai beberapa tugas konkuren untuk menyinkronkan data. Tugas-tugas konkuren ini tidak termasuk dalam transaksi baca yang sama dan memiliki interval waktu di antaranya. Oleh karena itu, data yang disinkronkan bukan berasal dari snapshot yang konsisten secara tunggal.
Saat ini belum tersedia solusi teknis untuk snapshot konsisten lintas beberapa thread. Anda hanya dapat mengatasi masalah ini dari perspektif rekayasa. Solusi berikut melibatkan pertukaran kompromi, dan Anda dapat memilih salah satunya berdasarkan kebutuhan Anda.
Gunakan sinkronisasi single-threaded tanpa sharding data. Metode ini lebih lambat tetapi menjamin konsistensi.
Nonaktifkan penulis data lain untuk memastikan data bersifat statis. Misalnya, Anda dapat mengunci tabel atau menonaktifkan sinkronisasi database sekunder. Metode ini dapat memengaruhi layanan online.
Masalah encoding database.
Server PostgreSQL hanya mendukung encoding EUC_CN dan UTF-8 untuk Bahasa Tionghoa Sederhana. PostgreSQL Reader menggunakan Java Database Connectivity (JDBC) untuk ekstraksi data. JDBC kompatibel dengan berbagai encoding dan melakukan konversi encoding di lapisan dasar. Oleh karena itu, Anda tidak perlu menentukan encoding untuk PostgreSQL Reader karena sistem secara otomatis mendeteksi dan mengonversi encoding tersebut.
Jika encoding penulisan dasar PostgreSQL tidak konsisten dengan encoding yang dikonfigurasi, PostgreSQL Reader tidak dapat mengidentifikasi masalah ini atau memberikan solusi. Akibatnya, data yang diekspor mungkin mengandung karakter acak (garbled characters).
Metode untuk sinkronisasi data inkremental.
PostgreSQL Reader menggunakan pernyataan SELECT JDBC untuk mengekstraksi data. Hal ini memungkinkan Anda menggunakan
SELECT…WHERE…untuk ekstraksi data inkremental sebagai berikut:Jika aplikasi online mengisi field modify dengan timestamp untuk semua perubahan, PostgreSQL Reader dapat menambahkan klausa WHERE yang menggunakan timestamp sinkronisasi terakhir untuk mengambil hanya data baru atau yang diperbarui.
Untuk data stream baru, PostgreSQL Reader dapat menambahkan klausa WHERE yang menggunakan ID auto-increment maksimum dari sinkronisasi sebelumnya.
Jika logika bisnis Anda tidak menyertakan field untuk membedakan antara data baru dan data yang dimodifikasi, PostgreSQL Reader tidak dapat melakukan sinkronisasi data inkremental. Dalam hal ini, sistem hanya dapat melakukan sinkronisasi data penuh.
Keamanan SQL.
PostgreSQL Reader menyediakan parameter querySql, yang memungkinkan Anda menyesuaikan pernyataan SELECT untuk ekstraksi data. PostgreSQL Reader tidak melakukan pemeriksaan keamanan apa pun pada pernyataan querySql.
Lampiran 1: Contoh skrip dan deskripsi parameter
Konfigurasi tugas sinkronisasi batch menggunakan editor kode
Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi selengkapnya, lihat Gunakan editor kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.
Contoh skrip Reader
Untuk mengonfigurasi pekerjaan yang menyinkronkan dan mengekstraksi data dari database PostgreSQL, lihat petunjuk di Gunakan editor kode.
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"postgresql",// Nama plugin.
"parameter":{
"datasource":"",// Sumber data.
"column":[// Field.
"col1",
"col2"
],
"where":"",// Kondisi filter.
"splitPk":"",// Field yang digunakan untuk sharding data. Sinkronisasi data memulai tugas konkuren untuk menyinkronkan data.
"table":""// Nama tabel.
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error.
},
"speed":{
"throttle":true, // Jika throttle diatur ke false, parameter mbps tidak berlaku dan pembatasan kecepatan dinonaktifkan. Jika throttle diatur ke true, pembatasan kecepatan diaktifkan.
"concurrent":1, // Jumlah pekerjaan konkuren.
"mbps":"12"// Laju pembatasan. 1 mbps setara dengan 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter skrip Reader
Parameter | Deskripsi | Wajib | Nilai default |
|
datasource |
Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan. |
Ya |
Tidak ada |
|
table |
Nama tabel yang akan disinkronkan. |
Ya |
Tidak ada |
|
column |
Kumpulan kolom yang akan disinkronkan dari tabel yang ditentukan. Gunakan array JSON untuk menggambarkan informasi field. Secara default, semua kolom digunakan, misalnya, [ * ].
|
Ya |
Tidak ada |
|
splitFactor |
Menentukan jumlah shard untuk sinkronisasi data. Jika Anda mengonfigurasi beberapa thread konkuren, data akan di-shard menjadi jumlah shard sebesar Jumlah thread konkuren × splitFactor. Misalnya, jika jumlah thread konkuren adalah 5 dan splitFactor adalah 5, lima thread konkuren digunakan untuk melakukan sharding, dan data didistribusikan ke 25 (5 × 5) shard. Catatan Nilai yang direkomendasikan berkisar antara 1 hingga 100. Nilai yang terlalu besar dapat menyebabkan error kehabisan memori (OOM). |
Tidak |
5 |
|
splitPk |
Saat PostgreSQL Reader mengekstraksi data, menentukan parameter splitPk menunjukkan bahwa Anda ingin melakukan sharding data berdasarkan field yang diwakili oleh splitPk. Sinkronisasi data kemudian memulai tugas konkuren untuk meningkatkan efisiensi sinkronisasi data:
|
Tidak |
Tidak ada |
|
where |
Kondisi filter. PostgreSQL Reader membuat pernyataan SQL berdasarkan parameter column, table, dan where yang ditentukan, lalu mengekstraksi data berdasarkan pernyataan SQL tersebut. Misalnya, selama pengujian, Anda dapat menggunakan klausa where untuk menentukan skenario bisnis. Biasanya, Anda mungkin menyinkronkan data hari ini dengan mengatur klausa where menjadi
|
Tidak |
Tidak ada |
|
querySql (Mode lanjutan. Parameter ini tidak tersedia di antarmuka tanpa kode.) |
Dalam beberapa skenario bisnis, parameter where tidak cukup untuk menggambarkan kondisi filter. Anda dapat menggunakan parameter ini untuk menyesuaikan SQL filter. Saat parameter ini dikonfigurasi, sistem sinkronisasi data mengabaikan parameter tables, columns, dan splitPk serta menggunakan konten parameter ini untuk memfilter data. Misalnya, untuk menyinkronkan data setelah JOIN multi-tabel, gunakan |
Tidak |
Tidak ada |
|
fetchSize |
Parameter ini menentukan jumlah catatan data yang diambil dalam setiap batch dari server database. Nilai ini menentukan jumlah interaksi jaringan antara Data Integration dan server, yang secara signifikan dapat meningkatkan kinerja ekstraksi data. Catatan Nilai fetchSize yang terlalu besar (>2048) dapat menyebabkan error OOM dalam proses sinkronisasi data. |
Tidak |
512 |
Contoh skrip Writer
Kode berikut memberikan contoh konfigurasi skrip. Untuk informasi selengkapnya, lihat deskripsi parameter berikut.
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"postgresql",// Nama plugin.
"parameter":{
"datasource":"",// Sumber data.
"column":[// Field.
"col1",
"col2"
],
"table":"",// Nama tabel.
"preSql":[],// Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data berjalan.
"postSql":[],// Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data berjalan.
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error.
},
"speed":{
"throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku dan pembatasan kecepatan dinonaktifkan. Jika throttle diatur ke true, pembatasan kecepatan diaktifkan.
"concurrent":1, // Jumlah pekerjaan konkuren.
"mbps":"12"// Laju pembatasan. 1 mbps setara dengan 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter skrip Writer
Parameter | Deskripsi | Wajib | Nilai default |
|
datasource |
Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan. |
Ya |
Tidak ada |
|
table |
Nama tabel yang akan disinkronkan. |
Ya |
Tidak ada |
|
writeMode |
Mode impor. Mode insert dan copy didukung:
|
Tidak |
insert |
|
column |
Field di tabel tujuan tempat Anda ingin menulis data. Pisahkan field dengan koma (,). Misalnya, |
Ya |
Tidak ada |
|
preSql |
Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data berjalan. Antarmuka tanpa kode hanya memungkinkan Anda menjalankan satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL, misalnya, untuk menghapus data lama. |
Tidak |
Tidak ada |
|
postSql |
Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data berjalan. Antarmuka tanpa kode hanya memungkinkan Anda menjalankan satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL, misalnya, untuk menambahkan timestamp. |
Tidak |
Tidak ada |
|
batchSize |
Jumlah catatan yang dikirimkan dalam satu batch. Nilai yang lebih besar secara signifikan dapat mengurangi interaksi jaringan antara Data Integration dan PostgreSQL serta meningkatkan throughput keseluruhan. Namun, mengatur nilai ini terlalu tinggi dapat menyebabkan error OOM dalam proses Data Integration. |
Tidak |
1.024 |
|
pgType |
Konfigurasi untuk mengonversi tipe khusus PostgreSQL. Tipe bigint[], double[], text[], Jsonb, dan JSON didukung. Kode berikut menunjukkan contoh konfigurasi. |
Tidak |
Tidak ada |
Lampiran 2: Tambahkan autentikasi SSL ke sumber data PostgreSQL
File autentikasi SSL PostgreSQL
Saat Anda membuat atau memodifikasi koneksi untuk sumber data PostgreSQL di DataWorks, Anda dapat mengonfigurasi autentikasi SSL. Tabel berikut menjelaskan item konfigurasi terkait autentikasi SSL.
Database PostgreSQL | Konfigurasi sumber data PostgreSQL di DataWorks | |||
Enkripsi tautan SSL | Enkripsi berbasis klien | Configure ACL | Item konfigurasi | Deskripsi |
Diaktifkan | Nonaktif | Tidak berlaku | Truststore File | Opsional. Klien menggunakan sertifikat ini untuk mengotentikasi server.
|
Diaktifkan | Atur Configure ACL ke prefer |
| File Keystore Certificate File dan Private Key File bersifat opsional. Mengatur Configure ACL ke prefer berarti server tidak mewajibkan verifikasi klien.
| |
Atur Configure ACL ke verify-ca |
| |||
Jika konfigurasi Access Control List (ACL) diatur ke prefer, konten klien tidak diverifikasi secara paksa.
Jika tidak ada file yang dikonfigurasi untuk autentikasi SSL, koneksi reguler digunakan.
Jika Anda menambahkan file autentikasi untuk SSL, lihat deskripsi yang sesuai dalam tabel.
Jika konfigurasi ACL diatur ke verify-ca, Anda harus mengonfigurasi Keystore File, Private Key File, dan Private Key Password untuk membuat sumber data.
Dapatkan file autentikasi SSL PostgreSQL
Bagian ini menggunakan instans ApsaraDB RDS for PostgreSQL sebagai contoh untuk menghasilkan sertifikat autentikasi SSL.
-
Dapatkan Truststore File.
Untuk informasi selengkapnya tentang cara mendapatkan Truststore File, lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL dengan cepat.
Buka halaman Instans RDS, temukan instans RDS di wilayah target, lalu klik ID instans untuk membuka halaman detail instans.
Pilih string koneksi yang ingin dilindungi, seperti yang ditunjukkan pada gambar berikut:
CatatanJika titik akhir publik diaktifkan, sistem menampilkan baik titik akhir internal maupun titik akhir publik. Sertifikat cloud hanya dapat melindungi satu titik akhir. Kami merekomendasikan agar Anda melindungi titik akhir publik karena terpapar ke internet, sedangkan titik akhir internal lebih aman di dalam VPC. Untuk informasi selengkapnya tentang cara melihat titik akhir internal dan publik, lihat Lihat titik akhir internal dan publik.
Untuk melindungi kedua titik akhir internal dan publik, lihat Gunakan sertifikat kustom untuk mengaktifkan enkripsi SSL.
-
Setelah Anda mengonfigurasi sertifikat cloud, Running Status instans berubah menjadi Modifying SSL. Proses ini memakan waktu sekitar tiga menit. Tunggu hingga status berubah menjadi Running sebelum melanjutkan.
Klik Download CA Certificate untuk mendapatkan Truststore File.

Paket sertifikat CA yang diunduh berisi tiga file. Saat mengonfigurasi sumber data PostgreSQL di DataWorks, unggah file dengan ekstensi
.pematau.p7bke field Truststore File. -
Dapatkan dan konfigurasikan Keystore File, Private Key File, dan Private Key Password.
Prasyarat: Anda telah menyelesaikan langkah-langkah di Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL dengan cepat atau Gunakan sertifikat kustom untuk mengaktifkan enkripsi SSL, dan Anda telah menginstal tool OpenSSL.
CatatanSistem Linux secara default menyertakan tool OpenSSL. Jika Anda menggunakan sistem Windows, Anda harus mendapatkan dan menginstal paket OpenSSL.
Untuk informasi selengkapnya tentang cara mendapatkan dan mengonfigurasi Keystore File, Private Key File, dan Private Key Password, lihat Konfigurasi sertifikat CA klien.
Gunakan tool OpenSSL untuk menghasilkan sertifikat self-signed (ca1.crt) dan kunci privat (ca1.key).
openssl req -new -x509 -days 3650 -nodes -out ca1.crt -keyout ca1.key -subj "/CN=root-ca1"Hasilkan file permintaan penandatanganan sertifikat (CSR) klien (client.csr) dan kunci privat klien (client.key).
openssl req -new -nodes -text -out client.csr -keyout client.key -subj "/CN=<Client username>"Dalam perintah ini, atur nilai Common Name (CN) setelah parameter
-subjke username yang digunakan klien untuk mengakses database.Hasilkan sertifikat klien (client.crt).
openssl x509 -req -in client.csr -text -days 365 -CA ca1.crt -CAkey ca1.key -CAcreateserial -out client.crtJika server ApsaraDB RDS for PostgreSQL Anda perlu memverifikasi sertifikat CA klien, buka file sertifikat self-signed yang dihasilkan ca1.crt. Salin konten sertifikat tersebut dan tempelkan ke dalam kotak dialog Enter Public Key from Client Certificate Authority.

Setelah Anda mengonfigurasi sertifikat CA klien pada instans RDS, Anda harus mengonversi file kunci privat klien client.key ke format PKCS#8 (client.pk8). Saat mengonfigurasi sumber data PostgreSQL di DataWorks, unggah file client.pk8 ke field Private Key File.
cp client.key client.pk8Konfigurasikan password kunci privat.
openssl pkcs8 -topk8 -inform PEM -in client.key -outform der -out client.pk8 -v1 PBE-MD5-DESCatatanSaat menjalankan perintah untuk mengonfigurasi password kunci privat, Anda akan diminta memasukkan password. Jika Anda menetapkan password, Anda harus menggunakan password yang sama untuk field Private Key Password dalam konfigurasi sumber data PostgreSQL di DataWorks.
Konfigurasi file autentikasi SSL PostgreSQL
Saat Anda mengunggah file sertifikat ke konfigurasi sumber data PostgreSQL di DataWorks, ikuti langkah-langkah berikut:
Truststore File: Unggah file
.pematau.p7byang Anda peroleh dalam langkah Dapatkan file sertifikat Truststore.Keystore File: Unggah file client.crt yang Anda peroleh dalam langkah Hasilkan sertifikat klien.
Private Key File: Unggah file client.pk8 yang Anda peroleh dalam langkah Konversi file kunci privat.
Private Key Password: Password yang dikonfigurasi dalam langkah Konfigurasi password kunci privat.

Configure ACL: Buka halaman Instans RDS, temukan instans RDS di wilayah target, lalu klik ID instans untuk membuka halaman detail instans. Klik untuk memodifikasi pengaturan. Anda dapat memilih dari berbagai metode autentikasi SSL. Untuk informasi selengkapnya, lihat Paksa klien menggunakan koneksi SSL.

Jika metode autentikasi ACL diatur ke prefer, server PostgreSQL tidak memverifikasi sertifikat klien secara paksa.
Jika metode autentikasi ACL diatur ke verify-ca di ApsaraDB RDS for PostgreSQL, Anda harus mengunggah sertifikat klien yang benar saat mengonfigurasi sumber data PostgreSQL di DataWorks. Konfigurasi ini memastikan bahwa server dapat memverifikasi keaslian klien.