全部产品
Search
文档中心

AnalyticDB:Gunakan rds_dbsync untuk memigrasi atau menyinkronkan data dari database MySQL ke database AnalyticDB for PostgreSQL

更新时间:Jun 26, 2025

rds_dbsync adalah alat open source yang digunakan untuk memigrasi atau menyinkronkan data. Alat ini mendukung impor data simultan melalui beberapa thread, di mana setiap thread pekerja mengimpor data tabel tertentu. Alat ini terhubung ke database MySQL sumber dan database tujuan, mengambil data dari database MySQL sumber, dan menggunakan pernyataan COPY untuk mengimpor data ke database tujuan. Anda dapat menggunakan fitur mysql2pgsql dari alat ini untuk memigrasi data dari database MySQL ke AnalyticDB for PostgreSQL tanpa perlu menyimpan data.

Konfigurasi parameter

Modifikasi file my.cfg dan konfigurasikan informasi koneksi untuk database sumber dan tujuan.

  • Informasi koneksi database MySQL sumber:

    Penting

    Anda harus memiliki izin baca pada semua tabel pengguna di database MySQL sumber.

    [src.mysql]
    host = "192.168.1.1"
    port = "3306"
    user = "test"
    password = "test"
    db = "test"
    encodingdir = "share"
    encoding = "utf8"
  • Informasi koneksi database tujuan (seperti PostgreSQL, PPAS, atau AnalyticDB for PostgreSQL):

    Penting

    Anda harus memiliki izin tulis pada tabel tujuan di database tujuan.

    [desc.pgsql]
    connect_string = "host=192.168.1.2 dbname=test port=3432  user=test password=pgsql"

Gunakan fitur mysql2pgsql

Sintaks fitur mysql2pgsql:

./mysql2pgsql -l <tables_list_file> -d -n -j <number of threads> -s <schema of target table>

Parameter:

  • -l: opsional. Parameter ini menentukan file teks yang berisi tabel yang datanya perlu disinkronkan. Jika parameter ini tidak ditentukan, data dari semua tabel dalam database sumber akan disinkronkan. <tables_list_file> menentukan nama file yang berisi kumpulan tabel yang ingin disinkronkan beserta kondisi query tabel. Isi file dapat ditentukan dalam format berikut:

    table1 : select * from table_big where column1 < '2016-08-05'
    table2 : 
    table3
    table4: select column1, column2 from tableX where column1 != 10
    table5: select * from table_big where column1 >= '2016-08-05'
  • -d: opsional. Parameter ini menentukan bahwa hanya pernyataan DDL untuk membuat tabel tujuan yang dihasilkan, tanpa menyinkronkan data.

  • -n: opsional. Parameter ini menentukan bahwa definisi partisi tabel tidak termasuk dalam pernyataan DDL. Harus digunakan bersama dengan parameter -d.

  • -j: opsional. Parameter ini menentukan jumlah thread yang digunakan secara bersamaan untuk menyinkronkan data. Jika tidak ditentukan, lima thread digunakan secara default.

  • -s: opsional. Parameter ini menentukan skema tabel tujuan. Atur nilai parameter ini ke public.

Skenario umum

Migrasi seluruh database

Untuk memigrasi seluruh database, ikuti langkah-langkah berikut:

  1. Jalankan perintah berikut untuk mendapatkan pernyataan DDL yang digunakan untuk membuat tabel di database tujuan:

    ./mysql2pgsql -d
  2. Gunakan pernyataan DDL untuk membuat tabel di database tujuan, lalu tentukan kunci distribusi untuk tabel tersebut.

  3. Jalankan perintah berikut untuk menyinkronkan data dari semua tabel:

    ./mysql2pgsql

    Perintah ini memigrasikan data dari semua tabel di database MySQL sumber ke database tujuan. Secara default, lima thread digunakan untuk membaca dan mengimpor data dari tabel.

Migrasi tabel sebagian

  1. Buat file bernama tab_list.txt dan masukkan konten berikut ke dalam file:

    t1
    t2 : select * from t2 where c1 > 138888
  2. Jalankan perintah berikut untuk menyinkronkan data dari tabel t1 dan t2. Hanya data yang memenuhi kondisi c1 > 138888 yang dimigrasikan untuk tabel t2.

    ./mysql2pgsql -l tab_list.txt

Unduhan dan petunjuk