Migrasi database adalah proses migrasi data dari satu atau lebih database sumber ke satu atau beberapa database target dengan menggunakan layanan atau alat. Ada berbagai jenis migrasi. Anda dapat bermigrasi dari teknologi ke teknologi yang berbeda, ke pusat data yang berbeda atau ke cloud, atau bahkan di tempat yang sama dan teknologi yang sama ke komputer lain. Alat terbaik untuk migrasi PostgreSQL bergantung pada jenis migrasi dan persyaratan seperti ketersediaan, atau toleransi waktu henti, dan terkadang sulit untuk menemukan alat terbaik untuk melakukan pekerjaan tersebut.
Di blog ini, kami akan menyebutkan beberapa alat sumber terbuka untuk migrasi PostgreSQL dengan ikhtisar singkat dari setiap opsi.
Cadangkan dan Pulihkan Alat Migrasi
Ini bisa menjadi cara termudah untuk melakukan migrasi data, tetapi juga yang paling lambat dalam hal Recovery Time Objective (RTO). Menggunakan metode ini berarti Anda akan mengambil cadangan dari database Anda saat ini, kemungkinan besar cadangan logis jika Anda ingin memulihkannya di versi atau infrastruktur yang berbeda, menyalin dump, dan memulihkannya di server baru. Bergantung pada jumlah data, ini bisa memakan banyak waktu, tetapi ini adalah cara dasar untuk memigrasi database Anda. Mari kita lihat beberapa alat untuk ini.
pgdump/pgdumpall
pg_dump adalah utilitas untuk mencadangkan satu database PostgreSQL. Itu membuat cadangan yang konsisten bahkan jika database digunakan secara bersamaan, karena tidak memblokir pengguna lain. Untuk mencadangkan seluruh cluster, atau untuk mencadangkan objek global yang umum untuk semua database dalam sebuah cluster (seperti peran dan tablespace), Anda harus menggunakan pg_dumpall sebagai gantinya.
Dumps dapat di-output dalam format file skrip atau arsip. Script dump adalah file teks biasa yang berisi perintah SQL yang diperlukan untuk merekonstruksi database ke keadaan saat disimpan. Ini dapat digunakan untuk merekonstruksi database pada mesin lain, arsitektur lain, atau bahkan pada produk database SQL lainnya.
pg_basebackup
pg_basebackup digunakan untuk mengambil cadangan dasar dari cluster database PostgreSQL yang sedang berjalan. Cadangan diambil tanpa mempengaruhi klien database lain dan dapat digunakan untuk PITR (Point-In-Time-Recovery) dan sebagai titik awal server siaga Replikasi Streaming. Itu membuat salinan yang tepat dari file cluster database sambil memastikan server dimasukkan dan keluar dari mode cadangan secara otomatis. Cadangan selalu diambil dari seluruh cluster database; tidak mungkin untuk mencadangkan database individu atau objek database.
pgBackRest
pgBackRest adalah alat pencadangan sumber terbuka yang membuat pencadangan fisik dengan beberapa peningkatan dibandingkan dengan alat pg_basebackup klasik. Anda dapat menggunakan pgBackRest untuk melakukan salinan database awal untuk Replikasi Streaming dengan menggunakan cadangan yang ada, atau Anda dapat menggunakan opsi delta untuk membangun kembali server siaga lama.
Beberapa fitur pgBackRest yang paling penting adalah:
- Pencadangan &Pemulihan Paralel
- Operasi Lokal atau Jarak Jauh
- Pencadangan Penuh, Tambahan, dan Diferensial
- Rotasi Cadangan dan Kedaluwarsa Arsip
- Pemeriksaan Integritas Cadangan
- Backup Resume
- Pemulihan Delta
- Enkripsi
Alat Migrasi PostgreSQL
Daripada menggunakan alat pencadangan, ada utilitas berbeda untuk melakukan migrasi ini dengan cara yang lebih cepat, dengan metode yang berbeda. Itu dapat menggunakan pendekatan ETL, atau bahkan mengonfigurasi replikasi antara teknologi basis data yang berbeda menggunakan konsep yang sama tentang Ekstrak - Transformasi - Muat. Mari kita lihat beberapa alat ini.
pg_bunglon
pg_chameleon adalah sistem replika MySQL ke PostgreSQL. Itu dapat terhubung ke protokol replikasi MySQL dan mereplikasi perubahan data di PostgreSQL. Apakah pengguna perlu menyiapkan replika permanen antara MySQL dan PostgreSQL, atau melakukan migrasi mesin, pg_chameleon adalah pilihan yang baik untuk tugas tersebut.
Fitur utamanya adalah:
- Baca dari beberapa skema MySQL dan pulihkan ke database PostgreSQL target
- Siapkan PostgreSQL untuk bertindak sebagai budak MySQL
- Dukungan DDL Dasar (CREATE/DROP/ALTER TABLE, DROP PRIMARY KEY/TRUNCATE, RENAME)
- Tabel yang menghasilkan kesalahan secara otomatis dikeluarkan dari replika
- Kemungkinan untuk menyegarkan tabel tunggal atau skema tunggal
- Lepaskan replika dari MySQL untuk dukungan migrasi
- Penggantian tipe data
- Proses init_replica yang di-daemonisasi
- Proses replika daemonisasi dengan dua subproses terpisah, satu untuk membaca dan satu untuk memutar ulang
pgloader
pgloader memuat data dari berbagai sumber ke dalam PostgreSQL. Itu dapat mengubah data yang dibacanya dengan cepat dan mengirimkan SQL mentah sebelum dan sesudah pemuatan. Ia menggunakan protokol COPY PostgreSQL untuk mengalirkan data ke server dan mengelola kesalahan dengan mengisi sepasang file reject.dat dan reject.log.
Berkat dapat memuat data langsung dari sumber database, pgloader juga mendukung migrasi dari produk lain ke PostgreSQL. Dalam mode operasi ini, pgloader menangani skema dan bagian data dari migrasi, dalam satu perintah tak berawak, yang memungkinkan untuk mengimplementasikan Migrasi Berkelanjutan.
Fitur utamanya adalah:
- Banyak format sumber yang didukung, seperti file CSV, db3, dan IBM IXF
- Transformasi data dengan cepat
- Proyeksi Lapangan Penuh
- Membaca dari file terkompresi (zip, tar, dan gzip)
- dukungan HTTP(S)
- Penemuan skema target
- Pada kesalahan hentikan/lanjutkan opsi berikutnya
- Perintah SQL Sebelum/Pasca
- Migrasi satu perintah
- Penemuan skema
- Aturan casting yang ditentukan pengguna
- Migrasi Sebagian termasuk/tidak termasuk tabel
- Skema atau Data saja
- Tampilan Terwujud, atau penulisan ulang skema saat itu juga
- Migrasi Berkelanjutan
Ora2Pg
Ora2Pg adalah alat gratis yang digunakan untuk memigrasi database Oracle atau MySQL ke skema yang kompatibel dengan PostgreSQL. Ini menghubungkan database Anda saat ini, memindainya, dan mengekstrak struktur atau datanya, kemudian menghasilkan skrip SQL yang dapat Anda muat ke dalam database PostgreSQL Anda.
Fitur utamanya adalah:
- Ekspor skema database lengkap (tabel, tampilan, urutan, indeks), dengan batasan unik, utama, kunci asing, dan pemeriksaan
- Ekspor hibah/hak istimewa untuk pengguna dan grup
- Ekspor partisi dan subpartisi rentang/daftar
- Ekspor pilihan tabel (dengan menentukan nama tabel).
- Ekspor fungsi, pemicu, prosedur, paket, dan badan paket yang telah ditentukan sebelumnya
- Ekspor data lengkap atau ikuti klausa WHERE
- Dukungan penuh untuk objek Oracle BLOB sebagai PG BYTEA
- Ekspor tampilan Oracle sebagai tabel PG
- Ekspor tipe yang ditentukan pengguna Oracle
- Berikan beberapa konversi otomatis dasar kode PLSQL ke PLPGSQL
- Ekspor tabel Oracle sebagai tabel pembungkus data asing
- Ekspor tampilan yang terwujud
- Tampilkan laporan terperinci dari konten database Oracle
- Penilaian biaya migrasi dari database Oracle
- Penilaian tingkat kesulitan migrasi database Oracle
- Penilaian biaya migrasi kode PL/SQL dari file
- Penilaian biaya migrasi dari kueri Oracle SQL yang disimpan dalam file
- Buat file XML ktr untuk digunakan dengan Penthalo Data Integrator (Kettle)
- Ekspor Oracle locator dan geometri spasial ke PostGis
- Ekspor DBLINK sebagai Oracle FDW
- Ekspor SYNONYMS sebagai tampilan
- Ekspor DIRECTORY sebagai tabel atau direktori eksternal untuk ekstensi file_eksternal
- Ekspor MySQL penuh seperti database Oracle
Ada lebih banyak opsi ETL yang tersedia, seperti Pentaho atau Talen, tetapi itu lebih berorientasi pada integrasi data atau manajemen data daripada migrasi, jadi kami tidak akan menjelaskannya di sini untuk menghindari posting blog yang ekstensif. Anda dapat menemukan informasi lebih lanjut di sini.
Replikasi Logis PostgreSQL untuk Migrasi
Replikasi logis adalah metode mereplikasi objek data dan perubahannya, berdasarkan identitas replikasinya (biasanya kunci utama). Ini didasarkan pada mode terbitkan dan berlangganan, di mana satu atau lebih pelanggan berlangganan satu atau lebih publikasi pada simpul penerbit.
Publikasi adalah kumpulan perubahan yang dihasilkan dari tabel atau grup tabel (juga disebut sebagai kumpulan replikasi). Node tempat publikasi didefinisikan disebut sebagai penerbit. Langganan adalah sisi hilir dari replikasi logis. Node di mana langganan didefinisikan disebut sebagai pelanggan, dan mendefinisikan koneksi ke database lain dan set publikasi (satu atau lebih) yang ingin berlangganan. Pelanggan mengambil data dari publikasi tempat mereka berlangganan.
Metode ini dapat digunakan untuk memigrasi atau mengupgrade database PostgreSQL Anda.
Untuk informasi lebih lanjut, Anda dapat merujuk ke entri blog terkait tentang memutakhirkan PostgreSQL tanpa waktu henti.
Kesimpulan
Migrasi adalah tugas yang sulit dan berisiko, karena Anda memindahkan atau mengubah data dari satu (atau lebih) sumber ke target (atau lebih dari satu), dan lebih buruk lagi jika target Anda adalah mesin yang berbeda. Jadi, Anda harus memiliki rencana yang baik, dengan langkah-langkah terperinci, dan tentu saja, lingkungan pengujian untuk menguji semua tahapan migrasi. Di blog ini, kami menyebutkan beberapa alat untuk membantu tugas ini, dan pilihan terbaik akan bergantung pada kebutuhan Anda tentang ketersediaan sistem Anda.