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 tampilan.
Sumber data PostgreSQL mendukung autentikasi berbasis kata sandi, termasuk metode SCRAM-SHA-256. Jika Anda mengubah kata sandi 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 bidang di PostgreSQL diawali dengan angka, bersifat case-sensitive, atau mencakup tanda hubung (-), Anda harus membungkus nama tersebut dengan 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 (\). Misalnya, jika sebuah tabel bernama
123Test, nama yang telah di-escape adalah\"123Test\".CatatanBaik tanda kutip ganda pembuka maupun penutup harus di-escape dengan backslash (\).
Antarmuka tanpa kode tidak mendukung escape karakter. Anda harus beralih ke editor kode untuk melakukan escape karakter.
Kode berikut menunjukkan contoh cara melakukan escape 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 sementara 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 COLUMNbersama 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 ini.
Replikasi Sequences (
serial/bigserial/identity) tidak didukung.Operasi TRUNCATE tidak didukung.
Replikasi objek besar (Bytea) tidak didukung.
Replikasi tampilan, tampilan yang di-materialisasi, dan tabel eksternal tidak didukung.
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 bilangan bulat | 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 sebagaimana 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 publikasi dan berlangganan. Dalam model ini, satu atau lebih subscriber berlangganan ke satu atau lebih publikasi pada node publisher. Subscriber menarik data dari publikasi 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 agar 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
-- Kueri max_wal_senders.
show max_wal_senders;
-- Kueri 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, tersedia proses wal_sender yang menganggur. 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 kesalahan.
Setelah tugas sinkronisasi PostgreSQL real-time dimulai, tugas tersebut secara otomatis membuat slot dan publikasi di database. Nama slot menggunakan format di_slot_ + ID Solusi, dan nama publikasi menggunakan format di_pub_ + ID Solusi. Setelah tugas sinkronisasi real-time dihentikan atau dibatalkan publikasinya, Anda harus menghapus slot dan publikasi 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 infotips 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 satu tabel
Untuk informasi selengkapnya, lihat Konfigurasi tugas di antarmuka tanpa kode dan Konfigurasi tugas di editor kode.
Untuk daftar lengkap parameter dan contoh skrip untuk editor kode, lihat Lampiran 1: Contoh skrip dan deskripsi parameter.
Panduan konfigurasi tugas baca offline basis data penuh dan sinkronisasi real-time
Untuk informasi selengkapnya, lihat Konfigurasi tugas sinkronisasi real-time untuk basis data penuh.
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 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, PostgreSQL Reader tidak mengambil data yang diperbarui karena fitur snapshot database.
Deskripsi di atas berlaku untuk konsistensi data PostgreSQL Reader dalam model single-threaded. PostgreSQL Reader juga dapat menggunakan ekstraksi data konkuren berdasarkan konfigurasi Anda. Dalam hal ini, konsistensi data tidak dapat dijamin secara ketat.
Setelah PostgreSQL Reader melakukan sharding data berdasarkan parameter `splitPk`, ia 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 tunggal yang konsisten.
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, dan Anda dapat memilih salah satu berdasarkan kebutuhan Anda.
Gunakan sinkronisasi single-threaded tanpa sharding data. Metode ini lebih lambat tetapi menjamin konsistensi.
Nonaktifkan penulis data lain untuk memastikan data 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 secara otomatis mendeteksi dan mengonversi encoding.
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 berisi karakter acak.
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 bidang `modify` dengan stempel waktu untuk semua perubahan, PostgreSQL Reader dapat menambahkan klausa `WHERE` yang menggunakan stempel waktu sinkronisasi terakhir untuk hanya mengambil data baru atau yang diperbarui.
Untuk data aliran baru, PostgreSQL Reader dapat menambahkan klausa `WHERE` yang menggunakan ID auto-increment maksimum dari sinkronisasi sebelumnya.
Jika logika bisnis Anda tidak mencakup bidang untuk membedakan antara data baru dan data yang dimodifikasi, PostgreSQL Reader tidak dapat melakukan sinkronisasi data inkremental. Dalam hal ini, 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 Konfigurasi tugas di 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 Konfigurasi tugas di editor kode.
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"postgresql",// Nama plugin.
"parameter":{
"datasource":"",// Sumber data.
"column":[// Bidang.
"col1",
"col2"
],
"where":"",// Kondisi filter.
"splitPk":"",// Bidang 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 kesalahan.
},
"speed":{
"throttle":true, // Jika throttle diatur ke false, parameter mbps tidak berlaku dan pengendalian aliran dinonaktifkan. Jika throttle diatur ke true, pengendalian aliran diaktifkan.
"concurrent":1, // Jumlah pekerjaan konkuren.
"mbps":"12"// Laju pengendalian aliran. 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 bidang. Secara default, semua kolom digunakan, misalnya, [ * ].
| Ya | Tidak ada |
splitFactor | Menentukan jumlah shard untuk sinkronisasi data. Jika Anda mengonfigurasi beberapa thread konkuren, data di-shard menjadi jumlah shard yang sama dengan 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 kesalahan kehabisan memori (OOM). | Tidak | 5 |
splitPk | Saat PostgreSQL Reader mengekstraksi data, menentukan parameter splitPk menunjukkan bahwa Anda ingin melakukan sharding data berdasarkan bidang 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 untuk hari ini dengan mengatur klausa where menjadi
| Tidak | Tidak ada |
querySql (Mode lanjutan, 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 tabel, kolom, 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 kesalahan 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":[// Bidang.
"col1",
"col2"
],
"table":"",// Nama tabel.
"preSql":[],// Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data dijalankan.
"postSql":[],// Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data dijalankan.
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan kesalahan.
},
"speed":{
"throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku dan pengendalian aliran dinonaktifkan. Jika throttle diatur ke true, pengendalian aliran diaktifkan.
"concurrent":1, // Jumlah pekerjaan konkuren.
"mbps":"12"// Laju pengendalian aliran. 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 | Bidang di tabel tujuan tempat Anda ingin menulis data. Pisahkan bidang dengan koma (,). Misalnya, | Ya | Tidak ada |
preSql | Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data dijalankan. 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 dijalankan. Antarmuka tanpa kode hanya memungkinkan Anda menjalankan satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL, misalnya, untuk menambahkan stempel waktu. | 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 kesalahan 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
Berkas 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 yang terkait dengan autentikasi SSL.
Database PostgreSQL | Konfigurasi sumber data PostgreSQL DataWorks | |||
Enkripsi tautan SSL | Enkripsi berbasis klien | Configure ACL | Item konfigurasi | Deskripsi |
Diaktifkan | Nonaktif | Tidak berlaku | Truststore Certificate File | Opsional. Klien menggunakan sertifikat ini untuk mengotentikasi server.
|
Diaktifkan | Atur Configure ACL ke prefer |
| Keystore Certificate File dan Private Key File bersifat opsional. Mengatur Configure ACL ke prefer berarti server tidak menegakkan 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 Certificate File, Private Key File, dan Private Key Password untuk membuat sumber data.
Memperoleh berkas autentikasi SSL PostgreSQL
Bagian ini menggunakan instans ApsaraDB RDS for PostgreSQL sebagai contoh untuk menghasilkan sertifikat autentikasi SSL.
Peroleh Truststore Certificate File.
Untuk informasi selengkapnya tentang cara memperoleh Truststore Certificate 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 akan dilindungi, seperti yang ditunjukkan pada gambar berikut:
CatatanJika titik akhir publik diaktifkan, sistem menampilkan titik akhir internal dan 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 memperoleh file Truststore Certificate.

Paket sertifikat CA yang diunduh berisi tiga file. Saat Anda mengonfigurasi sumber data PostgreSQL di DataWorks, unggah file dengan ekstensi
.pematau.p7bke kolom Truststore Certificate File.Peroleh dan konfigurasikan Keystore Certificate 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 alat OpenSSL.
CatatanSistem Linux secara default menyertakan alat OpenSSL. Jika Anda menggunakan sistem Windows, Anda harus memperoleh dan menginstal paket OpenSSL.
Untuk informasi selengkapnya tentang cara memperoleh dan mengonfigurasi Keystore Certificate File, Private Key File, dan Private Key Password, lihat Konfigurasi sertifikat CA klien.
Gunakan alat OpenSSL untuk menghasilkan sertifikat tanda tangan sendiri (`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=<Nama pengguna klien>"Dalam perintah ini, atur nilai Common Name (CN) setelah parameter
-subjke nama pengguna 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 tanda tangan sendiri yang dihasilkan `ca1.crt`. Salin konten sertifikat dan tempelkan ke kotak dialog Enter The Public Key Of The Client Certificate Authority.

Setelah Anda mengonfigurasi sertifikat CA klien di instans RDS, Anda harus mengonversi file kunci privat klien `client.key` ke format PKCS#8 (`client.pk8`). Saat Anda mengonfigurasi sumber data PostgreSQL di DataWorks, unggah file `client.pk8` ke kolom Private Key File.
cp client.key client.pk8Konfigurasikan kata sandi kunci privat.
openssl pkcs8 -topk8 -inform PEM -in client.key -outform der -out client.pk8 -v1 PBE-MD5-DESCatatanSaat Anda menjalankan perintah untuk mengonfigurasi kata sandi kunci privat, Anda akan diminta memasukkan kata sandi. Jika Anda menetapkan kata sandi, Anda harus menggunakan kata sandi yang sama untuk kolom Kata Sandi Kunci Privat di konfigurasi sumber data PostgreSQL DataWorks.
Konfigurasi berkas autentikasi SSL PostgreSQL
Saat Anda mengunggah file sertifikat ke konfigurasi sumber data PostgreSQL di DataWorks, ikuti langkah-langkah berikut:
Truststore Certificate File: Unggah file
.pematau.p7byang Anda peroleh di langkah Memperoleh file sertifikat Truststore.Keystore Certificate File: Unggah file `client.crt` yang Anda peroleh di langkah Menghasilkan sertifikat klien.
Private Key File: Unggah file `client.pk8` yang Anda peroleh di langkah Mengonversi file kunci privat.
Private Key Password: Kata sandi yang dikonfigurasi di langkah Mengonfigurasi kata sandi 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 untuk 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.