Replikasi silang antara PostgreSQL dan MySQL

Replikasi silang antara PostgreSQL dan MySQL

Saya akan menguraikan replikasi silang antara PostgreSQL dan MySQL, serta metode untuk menyiapkan replikasi silang antara dua server database. Biasanya, database yang direplikasi silang disebut homogen, dan ini merupakan metode yang mudah untuk berpindah dari satu server RDBMS ke server lainnya.

Basis data PostgreSQL dan MySQL umumnya dianggap relasional, tetapi dengan ekstensi tambahan, keduanya menawarkan kemampuan NoSQL. Di sini kita akan membahas replikasi antara PostgreSQL dan MySQL dari perspektif DBMS relasional.

Kami tidak akan menjelaskan keseluruhan cara kerja, hanya prinsip dasar agar Anda mendapatkan gambaran tentang konfigurasi replikasi antar server database, kelebihan, keterbatasan dan kasus penggunaan.

Biasanya, replikasi antara dua server database yang identik dilakukan dalam mode biner atau menggunakan kueri antara master (alias penerbit, master, atau aktif) dan budak (pelanggan, siaga, atau pasif). Tujuan replikasi adalah untuk menyediakan salinan database master secara real-time di sisi slave. Dalam hal ini data dipindahkan dari master ke slave, yaitu dari aktif ke pasif, karena replikasi hanya dilakukan dalam satu arah. Namun Anda dapat mengatur replikasi antara dua database di kedua arah, sehingga data ditransfer dari slave ke master dalam konfigurasi aktif-aktif. Semua ini, termasuk replikasi berjenjang, dimungkinkan antara dua atau lebih server database yang identik.Konfigurasi aktif-aktif atau aktif-pasif bergantung pada kebutuhan, ketersediaan kemampuan tersebut dalam konfigurasi awal atau penggunaan solusi konfigurasi eksternal dan trade-off yang ada.

Konfigurasi yang dijelaskan dimungkinkan antara server database yang berbeda. Server dapat dikonfigurasi untuk menerima data yang direplikasi dari server database lain dan tetap mempertahankan snapshot real-time dari data yang direplikasi. MySQL dan PostgreSQL menawarkan sebagian besar konfigurasi ini secara internal atau melalui ekstensi pihak ketiga, termasuk metode log biner, penguncian disk, dan metode berbasis pernyataan dan baris.

Replikasi silang antara MySQL dan PostgreSQL diperlukan untuk satu kali migrasi dari satu server database ke server database lainnya. Basis data ini menggunakan protokol yang berbeda, sehingga tidak mungkin untuk menghubungkannya secara langsung. Untuk menjalin pertukaran data, Anda dapat menggunakan alat sumber terbuka eksternal, misalnya pg_chameleon.

Apa itu pg_chameleon

pg_chameleon adalah sistem replikasi dari MySQL ke PostgreSQL dengan Python 3. Ia menggunakan perpustakaan replikasi mysql sumber terbuka, juga dengan Python. Gambar baris diekstraksi dari tabel MySQL dan disimpan sebagai objek JSONB di database PostgreSQL, lalu didekripsi oleh fungsi pl/pgsql dan direproduksi di database PostgreSQL.

Fitur pg_chameleon

Beberapa skema MySQL dari cluster yang sama dapat direplikasi ke database PostgreSQL target tunggal dalam konfigurasi satu-ke-banyak
Nama skema sumber dan target tidak boleh sama.
Data replikasi dapat diambil dari replika MySQL bertingkat.
Tabel yang tidak dapat mereplikasi atau menghasilkan kesalahan tidak termasuk.
Setiap fungsi replikasi dikendalikan oleh daemon.
Kontrol melalui parameter dan file konfigurasi berbasis YAML.

Contoh

Tuan rumah
vm1
vm2

versi OS
CentOS Linux 7.6x86_64
CentOS Linux 7.5x86_64

Versi server DB
MySQL 5.7.26
PostgreSQL 10.5

Pelabuhan DB
3306
5433

Alamat IP
192.168.56.102
192.168.56.106

Untuk memulai, siapkan semua komponen yang diperlukan untuk menginstal pg_chameleon. Contoh ini menginstal Python 3.6.8, yang membuat dan mengaktifkan lingkungan virtual.

$> wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
$> tar -xJf Python-3.6.8.tar.xz
$> cd Python-3.6.8
$> ./configure --enable-optimizations
$> make altinstall

Setelah berhasil menginstal Python3.6, Anda harus menyelesaikan persyaratan lainnya, seperti membuat dan mengaktifkan lingkungan virtual. Selain itu, modul pip diperbarui ke versi terbaru dan digunakan untuk menginstal pg_chameleon. Perintah di bawah ini sengaja menginstal pg_chameleon 2.0.9, meskipun versi terbarunya adalah 2.0.10. Hal ini diperlukan untuk menghindari bug baru pada versi update.

$> python3.6 -m venv venv
$> source venv/bin/activate
(venv) $> pip install pip --upgrade
(venv) $> pip install pg_chameleon==2.0.9

Kami kemudian memanggil pg_chameleon (chameleon adalah perintah) dengan argumen set_configuration_files untuk mengaktifkan pg_chameleon dan membuat direktori default dan file konfigurasi.

(venv) $> chameleon set_configuration_files
creating directory /root/.pg_chameleon
creating directory /root/.pg_chameleon/configuration/
creating directory /root/.pg_chameleon/logs/
creating directory /root/.pg_chameleon/pid/
copying configuration  example in /root/.pg_chameleon/configuration//config-example.yml

Sekarang kita membuat salinan config-example.yml sebagai default.yml sehingga menjadi file konfigurasi default. Contoh file konfigurasi untuk contoh ini disediakan di bawah.

$> cat default.yml
---
#global settings
pid_dir: '~/.pg_chameleon/pid/'
log_dir: '~/.pg_chameleon/logs/'
log_dest: file
log_level: info
log_days_keep: 10
rollbar_key: ''
rollbar_env: ''

# type_override allows the user to override the default type conversion into a different one.
type_override:
  "tinyint(1)":
    override_to: boolean
    override_tables:
      - "*"

#postgres  destination connection
pg_conn:
  host: "192.168.56.106"
  port: "5433"
  user: "usr_replica"
  password: "pass123"
  database: "db_replica"
  charset: "utf8"

sources:
  mysql:
    db_conn:
      host: "192.168.56.102"
      port: "3306"
      user: "usr_replica"
      password: "pass123"
      charset: 'utf8'
      connect_timeout: 10
    schema_mappings:
      world_x: pgworld_x
    limit_tables:
#      - delphis_mediterranea.foo
    skip_tables:
#      - delphis_mediterranea.bar
    grant_select_to:
      - usr_readonly
    lock_timeout: "120s"
    my_server_id: 100
    replica_batch_size: 10000
    replay_max_rows: 10000
    batch_retention: '1 day'
    copy_max_memory: "300M"
    copy_mode: 'file'
    out_dir: /tmp
    sleep_loop: 1
    on_error_replay: continue
    on_error_read: continue
    auto_maintenance: "disabled"
    gtid_enable: No
    type: mysql
    skip_events:
      insert:
        - delphis_mediterranea.foo #skips inserts on the table delphis_mediterranea.foo
      delete:
        - delphis_mediterranea #skips deletes on schema delphis_mediterranea
      update:

File konfigurasi dalam contoh ini adalah contoh file pg_chameleon dengan sedikit modifikasi agar sesuai dengan lingkungan sumber dan target, dan di bawah ini adalah ikhtisar berbagai bagian file konfigurasi.

Pada file konfigurasi default.yml terdapat bagian pengaturan global, dimana Anda dapat mengatur pengaturan seperti lokasi file kunci, lokasi log, jangka waktu penyimpanan log, dll. Berikutnya adalah bagian type override, dimana seperangkat aturan untuk mengganti tipe selama replikasi. Contoh defaultnya adalah aturan penggantian tipe yang mengubah tinyint(1) menjadi nilai boolean. Di bagian selanjutnya, kami menentukan detail koneksi ke database target. Dalam kasus kami, ini adalah database PostgreSQL, yang diberi nama pg_conn. Di bagian terakhir, kami menunjukkan data sumber, yaitu parameter koneksi database sumber, skema pemetaan antara database sumber dan target, tabel yang perlu dilewati, waktu tunggu, memori, ukuran paket. Perhatikan bahwa "sumber" berbentuk jamak, artinya kita dapat menambahkan beberapa database sumber ke database target tunggal untuk menyiapkan konfigurasi banyak-ke-satu.

Contoh database world_x berisi 4 tabel dengan baris yang ditawarkan komunitas MySQL sebagai contoh. Itu dapat diunduh di sini. Basis data sampel hadir sebagai arsip tar dan terkompresi dengan instruksi untuk membuat dan mengimpor baris.

Di database MySQL dan PostgreSQL, pengguna khusus dibuat dengan nama yang sama usr_replica. Di MySQL, diberikan hak baca tambahan untuk semua tabel yang direplikasi.

mysql> CREATE USER usr_replica ;
mysql> SET PASSWORD FOR usr_replica='pass123';
mysql> GRANT ALL ON world_x.* TO 'usr_replica';
mysql> GRANT RELOAD ON *.* to 'usr_replica';
mysql> GRANT REPLICATION CLIENT ON *.* to 'usr_replica';
mysql> GRANT REPLICATION SLAVE ON *.* to 'usr_replica';
mysql> FLUSH PRIVILEGES;

Di sisi PostgreSQL, dibuat database db_replica yang akan menerima perubahan dari database MySQL. Pengguna usr_replica di PostgreSQL secara otomatis dikonfigurasikan sebagai pemilik dua skema, pgworld_x dan sch_chameleon, yang masing-masing berisi tabel replikasi aktual dan tabel direktori replikasi. Argumen create_replica_schema bertanggung jawab atas konfigurasi otomatis, seperti yang akan Anda lihat di bawah.

postgres=# CREATE USER usr_replica WITH PASSWORD 'pass123';
CREATE ROLE
postgres=# CREATE DATABASE db_replica WITH OWNER usr_replica;
CREATE DATABASE

Basis data MySQL dikonfigurasi dengan beberapa perubahan parameter untuk mempersiapkannya untuk replikasi seperti yang ditunjukkan di bawah ini. Anda perlu me-restart server database agar perubahan diterapkan.

$> vi /etc/my.cnf
binlog_format= ROW
binlog_row_image=FULL
log-bin = mysql-bin
server-id = 1

Sekarang penting untuk memeriksa koneksi ke kedua server database agar tidak ada masalah saat menjalankan perintah pg_chameleon.

Pada simpul PostgreSQL:

$> mysql -u usr_replica -Ap'admin123' -h 192.168.56.102 -D world_x

Pada simpul MySQL:

$> psql -p 5433 -U usr_replica -h 192.168.56.106 db_replica

Tiga perintah pg_chameleon (chameleon) berikutnya mempersiapkan lingkungan, menambahkan sumber, dan menginisialisasi replika. Argumen create_replica_schema ke pg_chameleon membuat skema default (sch_chameleon) dan skema replikasi (pgworld_x) di database PostgreSQL, seperti yang telah kita bahas. Argumen add_source menambahkan database sumber ke konfigurasi dengan membaca file konfigurasi (default.yml), dan dalam kasus kami ini adalah mysql, dan init_replica menginisialisasi konfigurasi berdasarkan parameter dalam file konfigurasi.

$> chameleon create_replica_schema --debug
$> chameleon add_source --config default --source mysql --debug
$> chameleon init_replica --config default --source mysql --debug

Output dari ketiga perintah ini dengan jelas menunjukkan bahwa perintah tersebut berhasil dijalankan. Setiap kerusakan atau kesalahan sintaksis dilaporkan dalam pesan yang sederhana dan jelas dengan petunjuk tentang cara memperbaiki masalah tersebut.

Terakhir, kami memulai replikasi menggunakan start_replica dan menerima pesan sukses.

$> chameleon start_replica --config default --source mysql 
output: Starting the replica process for source mysql

Status replikasi dapat ditanyakan menggunakan argumen show_status, dan kesalahan dapat dilihat menggunakan argumen show_errors.

Hasil.

Seperti yang telah kami katakan, setiap fungsi replikasi dikendalikan oleh daemon. Untuk melihatnya, kami menanyakan tabel proses dengan perintah Linux ps, seperti yang ditunjukkan di bawah ini.

Hasil.

Replikasi tidak dianggap dikonfigurasi sampai kami mengujinya secara real time, seperti yang ditunjukkan di bawah ini. Kami membuat tabel, memasukkan beberapa catatan ke dalam database MySQL, dan memanggil argumen sync_tables di pg_chameleon untuk memperbarui daemon dan mereplikasi tabel dengan catatan ke database PostgreSQL.

mysql> create table t1 (n1 int primary key, n2 varchar(10));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t1 values (1,'one');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 values (2,'two');
Query OK, 1 row affected (0.00 sec)

$> chameleon sync_tables --tables world_x.t1 --config default --source mysql
Sync tables process for source mysql started.

Untuk mengonfirmasi hasil pengujian, kami menanyakan tabel dari database PostgreSQL dan menampilkan barisnya.

$> psql -p 5433 -U usr_replica -d db_replica -c "select * from pgworld_x.t1";
 n1 |  n2
----+-------
  1 | one
  2 | two

Jika kita melakukan migrasi, perintah pg_chameleon berikut akan menjadi akhir dari migrasi. Perintah perlu dijalankan setelah kita yakin bahwa baris dari semua tabel target telah direplikasi, dan hasilnya akan menjadi database PostgreSQL yang bermigrasi dengan rapi tanpa referensi ke database sumber atau skema replikasi (sch_chameleon).

$> chameleon stop_replica --config default --source mysql 
$> chameleon detach_replica --config default --source mysql --debug

Jika diinginkan, Anda dapat menggunakan perintah berikut untuk menghapus konfigurasi asli dan skema replikasi.

$> chameleon drop_source --config default --source mysql --debug
$> chameleon drop_replica_schema --config default --source mysql --debug

Keuntungan dari pg_chameleon

Pengaturan dan konfigurasi yang mudah.
Pecahkan masalah dan identifikasi anomali dengan mudah menggunakan pesan kesalahan yang jelas.
Tabel khusus tambahan dapat ditambahkan ke replikasi setelah inisialisasi tanpa mengubah konfigurasi lainnya.
Dimungkinkan untuk mengonfigurasi beberapa database sumber untuk satu database target, dan ini sangat berguna jika Anda menggabungkan data dari satu atau lebih database MySQL ke dalam satu database PostgreSQL.
Anda tidak perlu mereplikasi tabel yang dipilih.

Kekurangan pg_chameleon

Hanya didukung dengan MySQL 5.5 ke atas sebagai sumber dan PostgreSQL 9.5 ke atas sebagai database target.
Setiap tabel harus memiliki kunci utama atau unik, jika tidak, tabel akan diinisialisasi selama proses init_replica tetapi tidak direplikasi.
Replikasi satu arah - hanya dari MySQL ke PostgreSQL. Oleh karena itu, ini hanya cocok untuk rangkaian β€œaktif-pasif”.
Sumber hanya dapat berupa database MySQL, dan dukungan untuk database PostgreSQL sebagai sumber hanya bersifat eksperimental dan dengan batasan (pelajari lebih lanjut di sini)

Hasil untuk pg_chameleon

Metode replikasi di pg_chameleon sangat bagus untuk memigrasi database dari MySQL ke PostgreSQL. Kelemahan signifikannya adalah replikasi hanya bersifat satu arah, sehingga profesional database kemungkinan besar tidak ingin menggunakannya untuk hal lain selain migrasi. Namun masalah replikasi satu arah dapat diselesaikan dengan alat open source lainnya - SymmetricDS.

Baca lebih lanjut di dokumentasi resmi di sini. Bantuan baris perintah dapat ditemukan di sini.

Ikhtisar SymmetricDS

SymmetricDS adalah alat sumber terbuka yang mereplikasi database apa pun ke database umum lainnya: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird, dan instance database cloud lainnya, misalnya Redshift, dan Azure, dll. Fitur yang tersedia: sinkronisasi database dan file, replikasi database multi-master, sinkronisasi terfilter, transformasi dan lain-lain. Ini adalah alat Java dan memerlukan rilis standar JRE atau JDK (versi 8.0 atau lebih tinggi). Di sini, perubahan data pada pemicu di database sumber dapat direkam dan dikirim ke database target yang sesuai dalam bentuk batch.

Fitur SymmetricDS

Alat ini tidak bergantung pada platform, artinya dua atau lebih database berbeda dapat bertukar data.
Basis data relasional disinkronkan menggunakan catatan perubahan data, sedangkan basis data berbasis sistem file menggunakan sinkronisasi file.
Replikasi dua arah menggunakan metode Push dan Pull berdasarkan seperangkat aturan.
Transfer data dimungkinkan melalui jaringan yang aman dan bandwidth rendah.
Pemulihan otomatis ketika node melanjutkan operasi setelah kegagalan dan resolusi konflik otomatis.
API ekstensi yang kompatibel dengan cloud dan kuat.

Contoh

SymmetricDS dapat dikonfigurasi dengan salah satu dari dua cara berikut:
Node master (induk) yang secara terpusat mengoordinasikan replikasi data antara dua node budak (anak), dan komunikasi antar node anak hanya terjadi melalui node induk.
Node aktif (Node 1) dapat berkomunikasi untuk replikasi dengan node aktif lainnya (Node 2) tanpa perantara.

Pada kedua opsi tersebut, pertukaran data terjadi menggunakan Push dan Pull. Dalam contoh ini kita akan mempertimbangkan konfigurasi aktif-aktif. Akan memakan waktu terlalu lama untuk mendeskripsikan keseluruhan arsitektur, jadi lakukan riset. panduanuntuk mempelajari lebih lanjut tentang perangkat SymmetricDS.

Menginstal SymmetricDS sangat sederhana: unduh file zip versi open source karenanya dan bawa ke mana pun Anda mau. Tabel di bawah ini memberikan informasi tentang lokasi instalasi dan versi SymmetricDS dalam contoh ini, serta versi database, versi Linux, alamat IP, dan port untuk kedua node.

Tuan rumah
vm1
vm2

versi OS
CentOS Linux 7.6x86_64
CentOS Linux 7.6x86_64

Versi server DB
MySQL 5.7.26
PostgreSQL 10.5

Pelabuhan DB
3306
5832

Alamat IP
192.168.1.107
192.168.1.112

Versi SymmetricDS
SimetrisDS 3.9
SimetrisDS 3.9

Jalur instalasi SymmetricDS
/usr/local/simetris-server-3.9.20
/usr/local/simetris-server-3.9.20

Nama simpul SymmetricDS
perusahaan-000
toko-001

Di sini kita menginstal SymmetricDS di /usr/local/symmetric-server-3.9.20, dan berbagai subdirektori dan file akan disimpan di sana. Kami tertarik pada subdirektori sampel dan mesin. Direktori sampel berisi contoh file konfigurasi dengan properti node, serta contoh skrip SQL untuk membantu Anda memulai dengan cepat.

Di direktori sampel kita melihat tiga file konfigurasi dengan properti node - namanya menunjukkan sifat node dalam skema tertentu.

corp-000.properties
store-001.properties
store-002.properties

SymmetricDS memiliki semua file konfigurasi yang diperlukan untuk desain dasar 3-node (opsi 1), dan file yang sama dapat digunakan untuk desain 2-node (opsi 2). Salin file konfigurasi yang diperlukan dari direktori sampel ke mesin di host vm1. Ternyata seperti ini:

$> cat engines/corp-000.properties
engine.name=corp-000
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://192.168.1.107:3306/replica_db?autoReconnect=true&useSSL=false
db.user=root
db.password=admin123
registration.url=
sync.url=http://192.168.1.107:31415/sync/corp-000
group.id=corp
external.id=000

Node dalam konfigurasi SymmetricDS ini disebut corp-000, dan koneksi database ditangani oleh driver jdbc mysql, yang menggunakan string koneksi di atas dan kredensial login. Kami terhubung ke database replica_db dan tabel akan dibuat selama pembuatan skema. sync.url menunjukkan ke mana harus menghubungi node untuk sinkronisasi.

Node 2 pada host vm2 dikonfigurasi sebagai store-001 dan sisanya ditentukan dalam file node.properties di bawah. Node store-001 menjalankan database PostgreSQL dan pgdb_replica adalah database replikasi. registrasi.url memungkinkan host vm2 untuk menghubungi host vm1 dan menerima detail konfigurasi darinya.

$> cat engines/store-001.properties
engine.name=store-001
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://192.168.1.112:5832/pgdb_replica
db.user=postgres
db.password=admin123
registration.url=http://192.168.1.107:31415/sync/corp-000
group.id=store
external.id=001

Contoh SymmetricDS yang telah selesai berisi parameter untuk menyiapkan replikasi dua arah antara dua server database (dua node). Langkah-langkah di bawah ini dilakukan pada host vm1 (corp-000), yang akan membuat contoh skema dengan 4 tabel. Kemudian menjalankan create-sym-tables dengan perintah symadmin membuat tabel direktori tempat aturan dan arah replikasi antar node akan disimpan. Terakhir, data sampel dimuat ke dalam tabel.

vm1$> cd /usr/local/symmetric-server-3.9.20/bin
vm1$> ./dbimport --engine corp-000 --format XML create_sample.xml
vm1$> ./symadmin --engine corp-000 create-sym-tables
vm1$> ./dbimport --engine corp-000 insert_sample.sql

Dalam contoh, tabel item dan item_selling_price secara otomatis dikonfigurasi untuk mereplikasi dari corp-000 ke store-001, dan tabel penjualan (sale_transaction dan sale_return_line_item) secara otomatis dikonfigurasi untuk mereplikasi dari store-001 ke corp-000. Sekarang kita membuat skema di database PostgreSQL di host vm2 (store-001) untuk mempersiapkannya menerima data dari corp-000.

vm2$> cd /usr/local/symmetric-server-3.9.20/bin
vm2$> ./dbimport --engine store-001 --format XML create_sample.xml

Pastikan untuk memeriksa apakah database MySQL di vm1 memiliki tabel contoh dan tabel katalog SymmetricDS. Perhatikan bahwa tabel sistem SymmetricDS (diawali dengan sym_) saat ini hanya tersedia di node corp-000 karena di situlah kami menjalankan perintah create-sym-tables dan akan mengelola replikasi. Dan pada database di node store-001 hanya akan ada 4 tabel contoh tanpa data.

Semua. Lingkungan siap menjalankan proses server sim di kedua node seperti gambar di bawah ini.

vm1$> cd /usr/local/symmetric-server-3.9.20/bin
vm1$> sym 2>&1 &

Entri log dikirim ke file log latar belakang (symmetric.log) di folder log di direktori tempat SymmetricDS diinstal, serta ke output standar. Server sim sekarang dapat dimulai pada node store-001.

vm2$> cd /usr/local/symmetric-server-3.9.20/bin
vm2$> sym 2>&1 &

Jika Anda menjalankan proses server sym pada host vm2, itu juga akan membuat tabel katalog SymmetricDS di database PostgreSQL. Jika Anda menjalankan proses server sim di kedua node, keduanya berkoordinasi satu sama lain untuk mereplikasi data dari corp-000 ke store-001. Jika setelah beberapa detik kita menanyakan keempat tabel di kedua sisi, kita akan melihat bahwa replikasi berhasil. Atau Anda dapat mengirim bootstrap ke node store-4 dari corp-001 dengan perintah berikut.

vm1$> ./symadmin --engine corp-000 reload-node 001

Pada titik ini, catatan baru dimasukkan ke dalam tabel item di database MySQL pada node corp-000 (host: vm1), dan Anda dapat memeriksa replikasinya ke database PostgreSQL pada node store-001 (host: vm2). Kami melihat operasi Pull untuk memindahkan data dari corp-000 ke store-001.

mysql> insert into item values ('22000002','Jelly Bean');
Query OK, 1 row affected (0.00 sec)

vm2$> psql -p 5832 -U postgres pgdb_replica -c "select * from item"
 item_id  |   name
----------+-----------
 11000001 | Yummy Gum
 22000002 | Jelly Bean
(2 rows)

Untuk melakukan operasi Push untuk memindahkan data dari store-001 ke corp-000, kami memasukkan catatan ke dalam tabel sale_transaction dan memverifikasi bahwa replikasi berhasil.

Hasil.

Kami melihat keberhasilan penyiapan replikasi dua arah dari tabel contoh antara database MySQL dan PostgreSQL. Untuk menyiapkan replikasi untuk tabel pengguna baru, ikuti langkah-langkah berikut: Kami membuat tabel t1 misalnya dan mengonfigurasi aturan replikasinya sebagai berikut. Dengan cara ini kami hanya mengonfigurasi replikasi dari corp-000 ke store-001.

mysql> create table  t1 (no integer);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into sym_channel (channel_id,create_time,last_update_time) 
values ('t1',current_timestamp,current_timestamp);
Query OK, 1 row affected (0.01 sec)

mysql> insert into sym_trigger (trigger_id, source_table_name,channel_id,
last_update_time, create_time) values ('t1', 't1', 't1', current_timestamp,
current_timestamp);
Query OK, 1 row affected (0.01 sec)

mysql> insert into sym_trigger_router (trigger_id, router_id,
Initial_load_order, create_time,last_update_time) values ('t1',
'corp-2-store-1', 1, current_timestamp,current_timestamp);
Query OK, 1 row affected (0.01 sec)

Konfigurasi kemudian diberitahu tentang perubahan skema, yaitu penambahan tabel baru, menggunakan perintah symadmin dengan argumen sync-triggers, yang membuat ulang pemicu untuk memetakan definisi tabel. send-schema dijalankan untuk mengirim perubahan skema ke node store-001, dan replikasi tabel t1 dikonfigurasi.

vm1$> ./symadmin -e corp-000 --node=001 sync-triggers    
vm1$> ./symadmin send-schema -e corp-000 --node=001 t1

Manfaat SymmetricDS

Instalasi dan konfigurasi yang mudah, termasuk kumpulan file siap pakai dengan parameter untuk membuat sirkuit tiga node atau dua node.
Basis data lintas platform dan independensi platform, termasuk server, laptop, dan perangkat seluler.
Replikasi database apa pun ke database lain secara lokal, di WAN, atau di cloud.
Kemungkinan kerja optimal dengan beberapa atau beberapa ribu database untuk replikasi yang mudah.
Versi berbayar dengan GUI dan dukungan luar biasa.

Kekurangan SymmetricDS

Anda perlu menentukan aturan dan arah replikasi secara manual pada baris perintah melalui pernyataan SQL untuk memuat tabel katalog, yang mungkin merepotkan.
Menyiapkan banyak tabel untuk replikasi bisa jadi membosankan kecuali Anda menggunakan skrip untuk membuat pernyataan SQL yang menentukan aturan dan arah replikasi.
Terlalu banyak informasi yang dicatat di log, dan terkadang Anda perlu merapikan file log agar tidak memakan terlalu banyak ruang.

Hasil untuk SymmetricDS

SymmetricDS memungkinkan Anda mengatur replikasi dua arah antara dua, tiga, atau bahkan beberapa ribu node untuk mereplikasi dan menyinkronkan file. Ini adalah alat unik yang secara mandiri melakukan banyak tugas, seperti pemulihan data otomatis setelah periode tidak aktif yang lama pada sebuah node, pertukaran data yang aman dan efisien antar node melalui HTTPS, manajemen konflik otomatis berdasarkan seperangkat aturan, dll. SymmetricDS melakukan replikasi antar database apa pun, oleh karena itu, dapat digunakan untuk berbagai skenario, termasuk migrasi, migrasi, distribusi, pemfilteran, dan transformasi data lintas platform.

Contohnya berdasarkan pejabat panduan cepat oleh SymmetricDS. DI DALAM panduan pengguna Menjelaskan secara rinci berbagai konsep yang terlibat dalam menyiapkan replikasi dengan SymmetricDS.

Sumber: www.habr.com

Tambah komentar