AnalyticDB for PostgreSQL merupakan layanan Alibaba Cloud yang dioptimalkan berdasarkan Greenplum. Produk ini mendukung komputasi vektor dan pemrosesan transaksi dalam arsitektur multi-coordinator serta menggunakan operasi API yang sama dengan Greenplum Community Edition, sehingga mempermudah proses migrasi. Topik ini memandu Anda melalui seluruh proses migrasi—mulai dari pemilihan metode hingga validasi hasil.
Sebelum melakukan migrasi
Tinjau batasan berikut sebelum memulai:
Hanya migrasi satu arah. Migrasi data tidak mendukung sinkronisasi berkelanjutan. Jika penulisan data berlanjut selama migrasi, lakukan backfill data baru setelah migrasi selesai. Hentikan sementara operasi write selama migrasi untuk menghindari degradasi performa dan kesenjangan data.
Statistik pasca-migrasi. Setelah migrasi, AnalyticDB for PostgreSQL menjalankan
ANALYZEuntuk mengumpulkan statistik guna perencanaan kueri. Beban CPU pada node coordinator meningkat sementara tergantung pada volume data.Jumlah node. Buat instans AnalyticDB for PostgreSQL dengan jumlah node komputasi minimal sama dengan kluster Greenplum sumber. Saat menggunakan gpcopy, menyamakan jumlah node memberikan throughput migrasi terbaik.
Ekstensi. Periksa ekstensi yang digunakan oleh kluster Greenplum yang dikelola sendiri terhadap ekstensi yang didukung oleh AnalyticDB for PostgreSQL. Untuk daftar lengkapnya, lihat Manage extensions.
Kompatibilitas sintaksis. AnalyticDB for PostgreSQL sebagian tidak kompatibel dengan sintaksis Greenplum 4X. Tinjau dan perbarui SQL yang terdampak sebelum migrasi.
Tabel partisi dan tabel warisan. Lakukan migrasi berdasarkan tabel anak (child tables), bukan tabel induk (parent table).
Ikhtisar migrasi
Migrasi mencakup empat tahap berikut:
Evaluasi risiko migrasi dan pilih metode migrasi.
Beli instans uji AnalyticDB for PostgreSQL dan verifikasi pendekatan migrasi Anda.
Beli instans produksi AnalyticDB for PostgreSQL dan migrasikan data produksi Anda.
Hubungkan aplikasi Anda ke instans produksi dan verifikasi migrasi tersebut.
Pilih metode migrasi
| Metode | Kapan digunakan |
|---|---|
| gpcopy | Kluster Greenplum yang dikelola sendiri dapat terhubung langsung ke instans AnalyticDB for PostgreSQL |
| gptransfer | Instans AnalyticDB for PostgreSQL dapat terhubung langsung ke kluster Greenplum yang dikelola sendiri |
| OSS foreign table | Kluster Greenplum yang dikelola sendiri dan instans AnalyticDB for PostgreSQL tidak dapat saling terhubung |
gpcopy tidak mendukung instans dalam mode elastic storage (V7.0) atau mode Serverless. Gunakan gptransfer atau metode OSS foreign table untuk jenis instans tersebut.
Anda juga dapat menggunakan Alibaba Cloud DataWorks (Data Integration) untuk migrasi. Untuk detailnya, lihat Use Data Integration to migrate and batch synchronize data.
Migrasi data menggunakan gpcopy
Prasyarat
Sebelum memulai, pastikan hal-hal berikut:
Kluster Greenplum yang dikelola sendiri dapat menjangkau instans AnalyticDB for PostgreSQL melalui jaringan.
Akun superuser tersedia di kluster Greenplum.
Instans AnalyticDB for PostgreSQL tidak berada dalam mode elastic storage (V7.0) atau mode Serverless. gpcopy tidak mendukung jenis instans tersebut.
Langkah 1: Hubungi dukungan teknis Alibaba Cloud
Submit a ticketSubmit a ticket dan berikan:
ID instans AnalyticDB for PostgreSQL Anda
Alamat IP dan nomor port kluster Greenplum yang dikelola sendiri
Akun superuser di kluster Greenplum
Alamat IP server tempat kluster Greenplum berada
Dukungan teknis Alibaba Cloud akan mengunduh dan menginstal gpcopy pada instans AnalyticDB for PostgreSQL Anda.Submit a ticket
Langkah 2: Perbarui daftar putih alamat IP
Tambahkan 0.0.0.0/0 ke daftar putih alamat IP instans AnalyticDB for PostgreSQL untuk mengizinkan akses eksternal.
0.0.0.0/0 mengizinkan semua alamat IP mengakses instans. Segera hapus entri ini dan kembalikan daftar IP spesifik setelah migrasi selesai.
Langkah 3: Instal gpcopy pada server Greenplum
Unduh gpcopy pada server tempat kluster Greenplum yang dikelola sendiri berada.
Topik ini menggunakan gpcopy 2.3.2. Gunakan gpcopy 2.3.x untuk migrasi. gpcopy 2.4.x memerlukan enkripsi SSL — lihat Configure SSL encryption jika Anda menggunakan versi tersebut.
Di direktori tempat paket gpcopy berada, jalankan skrip berikut untuk menginstal gpcopy:
#!/bin/bash tar xzvf gpcopy-2.3.2.tar.gz cd gpcopy-2.3.2/ cp gpcopy $GPHOME/bin cp gpcopy_helper $GPHOME/bin chmod 755 $GPHOME/bin/gpcopy chmod 755 $GPHOME/bin/gpcopy_helper host_sql=`psql -A -t -c "select address from gp_segment_configuration where role = 'p' and content >= 0 group by address"` host=(${host_sql}) host_len=${#host[@]} host_str="" for ((i=0; i<$host_len; ++i)); do host_str=$host_str" -h "${host[$i]} done gpscp $host_str gpcopy_helper =:$GPHOME/bin gpssh $host_str -e "chmod 755 $GPHOME/bin/gpcopy_helper"
Langkah 4: Jalankan migrasi
Jalankan perintah berikut untuk migrasi data:
gpcopy --full \
--source-host <SOURCEHOST> \
--source-port <SOURCEPORT> \
--source-user <SOURCEUSER> \
--dest-host <DESTHOST> \
--dest-port <DESTPORT> \
--dest-user <DESTUSER> \
--jobs 4 \
--drop \
--validate countGanti placeholder dengan nilai aktual:
| Placeholder | Deskripsi | Catatan |
|---|---|---|
<SOURCEHOST> | Alamat IP server Greenplum | Gunakan localhost jika menjalankan perintah di server Greenplum |
<SOURCEPORT> | Nomor port kluster Greenplum | Default: 5432. Jalankan gpstate -s untuk memeriksa port aktual |
<SOURCEUSER> | Akun superuser Greenplum | — |
<DESTHOST> | Alamat IP node coordinator AnalyticDB for PostgreSQL | Hubungi dukungan teknis Alibaba Cloud |
<DESTPORT> | Nomor port node coordinator | Hubungi dukungan teknis Alibaba Cloud |
<DESTUSER> | Akun superuser AnalyticDB for PostgreSQL | Hubungi dukungan teknis Alibaba Cloud |
Opsi utama:
| Opsi | Deskripsi |
|---|---|
--full | Migrasi semua database pengguna. Ganti dengan -d <database name> untuk migrasi satu database saja |
--jobs | Jumlah tabel yang dimigrasikan secara paralel. Default: 4. Konfigurasikan nilai ini sesuai kebutuhan bisnis Anda. Kami merekomendasikan menghitung nilai menggunakan rumus: 2 × Jumlah koneksi + 1 |
--validate count | Memvalidasi migrasi dengan membandingkan jumlah baris antara tabel sumber dan tujuan |
Langkah 5: Pulihkan kontrol akses
Setelah migrasi selesai:
Perbarui daftar putih alamat IP dari
0.0.0.0/0ke alamat IP yang dibutuhkan untuk bisnis Anda.Hubungi dukungan teknis Alibaba Cloud untuk memulihkan konfigurasi akun superuser, grup keamanan, dan pengaturan logon tanpa password pg_hba.
Migrasi data menggunakan gptransfer
Prasyarat
Sebelum memulai, pastikan hal-hal berikut:
Instans AnalyticDB for PostgreSQL dapat menjangkau kluster Greenplum yang dikelola sendiri melalui jaringan.
Akun istimewa tersedia pada instans AnalyticDB for PostgreSQL. Jika belum ada, buat akun tersebut — lihat Create a database account.
Langkah-langkah
Buat akun istimewa untuk instans AnalyticDB for PostgreSQL jika belum tersedia.
Tambahkan
0.0.0.0/0ke daftar putih alamat IP instans AnalyticDB for PostgreSQL untuk mengizinkan akses eksternal.Peringatan0.0.0.0/0mengizinkan semua alamat IP mengakses instans. Segera hapus entri ini setelah migrasi selesai.Perbarui instans AnalyticDB for PostgreSQL ke versi minor terbaru. Lihat View the minor engine version dan Update the minor engine version.
Submit a ticketSubmit a ticket dan berikan: ID instans, alamat IP dan nomor port kluster Greenplum yang dikelola sendiri, akun kluster Greenplum yang memiliki izin untuk migrasi data, dan alamat IP server.
Tunggu hingga migrasi selesai.
Perbarui daftar putih alamat IP dari
0.0.0.0/0ke alamat IP yang dibutuhkan untuk bisnis Anda. Verifikasi data Anda, lalu hubungkan aplikasi Anda ke instans tersebut.
Migrasi data menggunakan OSS foreign table
Gunakan metode ini ketika kluster Greenplum dan instans AnalyticDB for PostgreSQL tidak dapat terhubung langsung. Prosesnya terdiri dari tiga tahap: migrasi skema, migrasi data tabel, dan verifikasi data.
Migrasi skema
Pada node master kluster Greenplum yang dikelola sendiri, ekspor skema DDL menggunakan
pg_dumpall:export PGHOST=<alamat IP kluster Greenplum yang dikelola sendiri> export PGPORT=<nomor port kluster Greenplum yang dikelola sendiri> export PGUSER=<akun superuser kluster Greenplum yang dikelola sendiri> export PGPASSWORD=<password akun superuser> # Untuk Greenplum 4X pg_dumpall -s -q --gp-syntax > full_schema.sql # Untuk Greenplum 5X atau 6X pg_dumpall -s --gp-syntax > full_schema.sqlPeriksa library kustom. Hubungkan ke kluster Greenplum menggunakan psql dan jalankan:
SELECT * FROM pg_catalog.pg_library;Jika terdapat library kustom, buat skema yang sesuai secara manual pada instans AnalyticDB for PostgreSQL sebelum melanjutkan.
Terapkan skema DDL ke instans AnalyticDB for PostgreSQL:
export PGHOST=<alamat IP instans AnalyticDB for PostgreSQL> export PGPORT=<nomor port instans AnalyticDB for PostgreSQL> export PGUSER=<akun istimewa instans AnalyticDB for PostgreSQL> export PGPASSWORD=<password akun istimewa> psql postgres -f full_schema.sql > psql.log 2>&1 &Periksa
psql.loguntuk mencari error. Sebagian besar error terkait perbedaan sintaksis SQL, terutama untuk Greenplum 4X. Untuk detail kompatibilitas, lihat Compatibility comparisons between AnalyticDB for PostgreSQL V4.3 and V6.0 dan Check for incompatibility between AnalyticDB for PostgreSQL V4.3 and V6.0.
Migrasi data tabel
Langkah 1: Ekspor data dari kluster Greenplum
Pilih salah satu metode ekspor berikut:
Opsi A: COPY TO
Jalankan pernyataan COPY TO pada klien psql:
-- Berfungsi dengan Greenplum 4X, 5X, dan 6X
COPY public.t1 TO '/data/gpload/public_t1.csv' FORMAT CSV ENCODING 'UTF8';Untuk Greenplum 5X atau 6X, Anda dapat menggunakan ON SEGMENT untuk ekspor secara paralel:
COPY public.t1 TO '<SEG_DATA_DIR>/public_t1_<SEGID>.csv' FORMAT CSV ENCODING 'UTF8' ON SEGMENT;Jangan ubah placeholder<SEGID>— sistem akan menggantinya secara otomatis selama ekspor. Anda dapat membiarkan<SEG_DATA_DIR>apa adanya atau menggantinya dengan jalur mutlak.
Opsi B: Tabel eksternal gpfdist
Jalankan layanan gpfdist:
mkdir -p /data/gpload gpfdist -d /data/gpload -p 8000 &Hubungkan ke kluster Greenplum menggunakan psql dan ekspor data:
-- Buat tabel eksternal writable untuk public.t1 CREATE WRITABLE EXTERNAL TABLE ext_w_t1 (LIKE public.t1) LOCATION ('gpfdist://<alamat IP kluster Greenplum yang dikelola sendiri>:8000/public_t1.csv') FORMAT 'CSV' ENCODING 'UTF8'; -- Tulis data tabel ke tabel eksternal INSERT INTO ext_w_t1 SELECT * FROM public.t1;
Langkah 2: Unggah data ke Object Storage Service (OSS)
Unggah file yang diekspor ke bucket OSS. Bucket harus berada di wilayah yang sama dengan instans AnalyticDB for PostgreSQL. Untuk instruksi unggah, lihat Upload objects.
Langkah 3: Impor data ke AnalyticDB for PostgreSQL
Gunakan tabel eksternal OSS untuk memuat data dari OSS ke instans AnalyticDB for PostgreSQL Anda. Lihat bagian Import OSS data to an AnalyticDB for PostgreSQL table untuk detailnya.
Verifikasi hasil migrasi
Jalankan kedua pemeriksaan berikut untuk memastikan migrasi telah selesai:
Pemeriksaan konsistensi data. Bandingkan jumlah baris dan nilai agregat bidang numerik antara sumber dan tujuan. Untuk tabel besar, perbandingan berbasis sampel dapat diterima.
Pemeriksaan konsistensi bisnis. Hubungkan aplikasi Anda ke instans AnalyticDB for PostgreSQL dan verifikasi bahwa kueri bisnis dijalankan dengan benar serta mengembalikan hasil yang diharapkan.