Replikasi silang antarane PostgreSQL lan MySQL

Replikasi silang antarane PostgreSQL lan MySQL

Aku bakal njelasake replikasi silang antarane PostgreSQL lan MySQL, uga cara kanggo nyetel replikasi silang antarane loro server database. Biasane, database cross-replikasi diarani homogen, lan minangka cara sing trep kanggo pindhah saka siji server RDBMS menyang server liyane.

Database PostgreSQL lan MySQL umume dianggep relasional, nanging kanthi ekstensi tambahan menehi kemampuan NoSQL. Ing kene kita bakal ngrembug replikasi antarane PostgreSQL lan MySQL saka perspektif DBMS relasional.

Kita ora bakal njlèntrèhaké kabeh cara kerja internal, mung prinsip dhasar supaya sampeyan bisa ngonfigurasi replikasi ing antarane server database, kaluwihan, watesan lan kasus panggunaan.

Biasane, replikasi antarane rong server basis data sing padha ditindakake ing mode biner utawa nggunakake pitakon antarane master (a.k.a. penerbit, master, utawa aktif) lan budak (langganan, siyaga, utawa pasif). Tujuan replikasi yaiku nyedhiyakake salinan nyata-wektu saka database master ing sisih budak. Ing kasus iki, data ditransfer saka master menyang abdi, yaiku, saka aktif dadi pasif, amarga replikasi mung ditindakake ing siji arah. Nanging sampeyan bisa nyiyapake replikasi antarane rong database ing loro arah, supaya data ditransfer saka abdi kanggo master ing konfigurasi aktif-aktif. Kabeh iki, kalebu réplikasi cascading, bisa antarane loro utawa luwih server database podho rupo Konfigurasi aktif-aktif utawa aktif-pasif gumantung kabutuhan, kasedhiyan kapabilitas kuwi ing konfigurasi dhisikan utawa nggunakake solusi konfigurasi external lan ana trade-offs .

Konfigurasi sing diterangake bisa ditindakake ing antarane server database sing beda. Server bisa dikonfigurasi kanggo nampa data replika saka server database liyane lan isih njaga jepretan nyata-wektu saka data replikasi. MySQL lan PostgreSQL nawakake sebagian besar konfigurasi kasebut ing omah utawa liwat ekstensi pihak katelu, kalebu metode log binar, ngunci disk, lan metode basis statement lan baris.

Replikasi silang antarane MySQL lan PostgreSQL dibutuhake kanggo migrasi siji-wektu saka siji server database menyang liyane. Basis data iki nggunakake protokol sing beda-beda, mula ora bisa nyambung langsung. Kanggo netepake ijol-ijolan data, sampeyan bisa nggunakake alat open source eksternal, contone pg_chameleon.

Apa iku pg_chameleon

pg_chameleon punika sistem réplikasi saka MySQL kanggo PostgreSQL ing Python 3. Iku nggunakake open source mysql-replikasi perpustakaan, uga ing Python. Gambar baris diekstrak saka tabel MySQL lan disimpen minangka obyek JSONB ing database PostgreSQL, banjur dekripsi dening fungsi pl/pgsql lan direproduksi ing database PostgreSQL.

Fitur pg_chameleon

Skema MySQL pirang-pirang saka kluster sing padha bisa ditiru menyang basis data PostgreSQL target siji ing konfigurasi siji-kanggo-akeh.
Jeneng skema sumber lan target ora bisa padha.
Data replikasi bisa dijupuk saka replika MySQL cascaded.
Tabel sing ora bisa niru utawa ngasilake kesalahan ora kalebu.
Saben fungsi replikasi dikontrol dening daemon.
Kontrol liwat parameter basis YAML lan file konfigurasi.

Conto:

Host
vm1
vm2

versi OS
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

versi server DB
MySQL 5.7.26
PostgreSQL 10.5

port DB
3306
5433

Alamat IP
192.168.56.102
192.168.56.106

Kanggo miwiti, nyiyapake kabeh komponen sing perlu kanggo nginstal pg_chameleon. Contone iki nginstal Python 3.6.8, sing nggawe lan ngaktifake 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

Sawise kasil nginstal Python3.6, sampeyan kudu ngrampungake syarat sing isih ana, kayata nggawe lan ngaktifake lingkungan virtual. Kajaba iku, modul pip dianyari menyang versi paling anyar lan digunakake kanggo nginstal pg_chameleon. Printah ing ngisor iki sengaja nginstal pg_chameleon 2.0.9, sanajan versi paling anyar yaiku 2.0.10. Iki perlu kanggo ngindhari bug anyar ing versi sing dianyari.

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

Banjur kita nelpon pg_chameleon (bunglon minangka prentah) kanthi argumen set_configuration_files kanggo ngaktifake pg_chameleon lan nggawe direktori standar lan 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

Saiki kita nggawe salinan config-example.yml minangka default.yml supaya dadi file konfigurasi standar. File konfigurasi sampel kanggo conto iki kasedhiya ing ngisor iki.

$> 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 ing conto iki minangka conto file pg_chameleon kanthi modifikasi cilik sing cocog karo lingkungan sumber lan target, lan ing ngisor iki ana ringkesan saka macem-macem bagean saka file konfigurasi.

Ing file konfigurasi default.yml ana bagean setelan global, ing ngendi sampeyan bisa ngatur setelan kayata lokasi file kunci, lokasi log, periode panyimpenan kanggo log, lan sapiturute. pesawat saka aturan kanggo overriding jinis sak replikasi. Conto standar kanggo aturan overriding jinis sing ngowahi tinyint (1) dadi nilai boolean. Ing bagean sabanjure, kita nemtokake rincian sambungan menyang database target. Ing kasus kita, iki minangka database PostgreSQL, sing ditunjuk pg_conn. Ing bagean pungkasan, kita nuduhake data sumber, yaiku, paramèter sambungan saka database sumber, skema pemetaan antarane sumber lan basis data target, tabel sing kudu dilewati, wektu ngenteni, memori, ukuran paket. Elinga yen "sumber" iku jamak, tegese kita bisa nambah macem-macem basis data sumber menyang basis data target siji kanggo nyetel konfigurasi akeh-kanggo-siji.

Conto database world_x ngemot 4 tabel kanthi baris sing ditawakake komunitas MySQL minangka conto. Bisa diundhuh kene. Database sampel teka minangka arsip tar lan kompres kanthi instruksi kanggo nggawe lan ngimpor baris.

Ing database MySQL lan PostgreSQL, pangguna khusus digawe kanthi jeneng sing padha usr_replica. Ing MySQL, diwenehi hak maca tambahan kanggo kabeh tabel replikasi.

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;

Ing sisih PostgreSQL, database db_replica digawe sing bakal nampa owah-owahan saka database MySQL. Panganggo usr_replica ing PostgreSQL dikonfigurasi kanthi otomatis minangka pemilik saka rong skema, pgworld_x lan sch_chameleon, sing ngemot tabel replikasi nyata lan tabel direktori replikasi. Argumentasi create_replica_schema tanggung jawab kanggo konfigurasi otomatis, kaya sing bakal dideleng ing ngisor iki.

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

Database MySQL wis dikonfigurasi karo sawetara owah-owahan parameter kanggo nyiapake kanggo replikasi kaya sing kapacak ing ngisor iki. Sampeyan kudu miwiti maneh server database supaya owah-owahan bisa ditrapake.

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

Saiki iku penting kanggo mriksa sambungan kanggo loro server database supaya ora ana masalah nalika mbukak pg_chameleon printah.

Ing simpul PostgreSQL:

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

Ing simpul MySQL:

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

Sabanjure telung pg_chameleon (bunglon) printah nyiapake lingkungan, nambah sumber, lan initialize tiron. Argumentasi create_replica_schema kanggo pg_chameleon nggawe skema standar (sch_chameleon) lan skema replikasi (pgworld_x) ing database PostgreSQL, kaya sing wis dibahas. Argumentasi add_source nambah database sumber kanggo konfigurasi kanthi maca file konfigurasi (default.yml), lan ing kasus kita iku mysql, lan init_replica initializes konfigurasi adhedhasar paramèter ing file konfigurasi.

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

Output saka telung printah kasebut kanthi jelas nuduhake yen padha kaleksanan kanthi sukses. Sembarang kacilakan utawa kesalahan sintaks dilaporake ing pesen sing prasaja lan jelas kanthi pitunjuk babagan carane ndandani masalah kasebut.

Pungkasan, kita miwiti replikasi nggunakake start_replica lan nampa pesen sukses.

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

Status replikasi bisa ditakoni nggunakake argumen show_status, lan kesalahan bisa dideleng nggunakake argumen show_errors.

Asile

Kaya sing wis dakkandhakake, saben fungsi replikasi dikontrol dening daemon. Kanggo ndeleng, kita takon tabel proses nganggo perintah ps Linux, kaya sing ditampilake ing ngisor iki.

Asile

Replikasi ora dianggep diatur nganti kita nyoba ing wektu nyata, kaya sing kapacak ing ngisor iki. Kita nggawe tabel, nglebokake sawetara cathetan menyang database MySQL, lan nelpon argumen sync_tables ing pg_chameleon kanggo nganyari daemon lan replikasi tabel kanthi cathetan menyang 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.

Kanggo konfirmasi asil tes, kita takon tabel saka database PostgreSQL lan output baris.

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

Yen kita nindakake migrasi, pg_chameleon printah ing ngisor iki bakal dadi pungkasan. Printah kasebut kudu dieksekusi sawise kita yakin yen larik kabeh tabel target wis ditiru, lan asil bakal dadi database PostgreSQL sing migrasi kanthi rapi tanpa referensi menyang basis data sumber utawa skema replikasi (sch_chameleon).

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

Yen dikarepake, sampeyan bisa nggunakake printah ing ngisor iki kanggo mbusak konfigurasi asli lan skema replikasi.

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

Kaluwihan saka pg_chameleon

Persiyapan lan konfigurasi sing gampang.
Gampang ngatasi masalah lan ngenali anomali kanthi pesen kesalahan sing jelas.
Tabel khusus tambahan bisa ditambahake kanggo replikasi sawise initialization tanpa ngganti liyane saka konfigurasi.
Sampeyan bisa ngatur macem-macem basis data sumber kanggo basis data target siji, lan iki migunani banget yen sampeyan nggabungake data saka siji utawa luwih database MySQL menyang database PostgreSQL siji.
Sampeyan ora kudu niru tabel sing dipilih.

Kekurangan pg_chameleon

Mung didhukung karo MySQL 5.5 lan ndhuwur minangka sumber lan PostgreSQL 9.5 lan ndhuwur minangka target database.
Saben tabel kudu duwe kunci utami utawa unik, yen ora, tabel bakal diinisialisasi sajrone proses init_replica nanging ora ditiru.
Replikasi siji-arah - mung saka MySQL menyang PostgreSQL. Mulane, mung cocok kanggo sirkuit "aktif-pasif".
Sumber kasebut mung bisa dadi basis data MySQL, lan dhukungan kanggo basis data PostgreSQL minangka sumber mung eksperimen lan kanthi watesan (sinau luwih lengkap. kene)

Asil kanggo pg_chameleon

Cara replikasi ing pg_chameleon apik kanggo migrasi database saka MySQL menyang PostgreSQL. Kelemahane sing signifikan yaiku replikasi mung siji-sijine, mula para profesional basis data ora pengin nggunakake apa wae kajaba migrasi. Nanging masalah replikasi siji-arah bisa ditanggulangi karo alat open source liyane - SymmetricDS.

Waca liyane ing dokumentasi resmi kene. Bantuan baris printah bisa ditemokake kene.

Ringkesan SymmetricDS

SymmetricDS minangka alat open source sing niru database apa wae menyang database umum liyane: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird lan instans database awan liyane, contone Redshift, lan Azure, etc. Fitur sing kasedhiya: sinkronisasi database lan file, replikasi database multi-master, sinkronisasi sing disaring, transformasi lan liya-liyane. Iki minangka alat Java lan mbutuhake release standar saka JRE utawa JDK (versi 8.0 utawa luwih dhuwur). Ing kene, owah-owahan data dadi pemicu ing basis data sumber bisa direkam lan dikirim menyang basis data target sing cocog ing wangun kumpulan.

Fitur SymmetricDS

Alat kasebut minangka platform independen, tegese loro utawa luwih database beda bisa ngganti data.
Basis data relasional disinkronake nggunakake rekaman pangowahan data, dene basis data basis sistem file nggunakake sinkronisasi file.
Replikasi rong arah nggunakake metode Push lan Pull adhedhasar sakumpulan aturan.
Transfer data bisa liwat jaringan sing aman lan bandwidth kurang.
Pemulihan otomatis nalika simpul nerusake operasi sawise gagal lan resolusi konflik otomatis.
API ekstensi sing kompatibel lan kuat karo awan.

Conto:

SymmetricDS bisa dikonfigurasi kanthi salah siji saka rong cara:
A master (tiyang sepah) simpul sing tengah koordinat réplikasi data antarane loro budak (anak) simpul, lan komunikasi antarane simpul anak mung dumadi liwat wong tuwa.
Node aktif (Node 1) bisa komunikasi kanggo replikasi karo node aktif liyane (Node 2) tanpa perantara.

Ing loro opsi, ijol-ijolan data dumadi nggunakake Push lan Pull. Ing conto iki kita bakal nimbang konfigurasi aktif-aktif. Bakal njupuk dawa banget kanggo njlèntrèhaké kabèh arsitektur, supaya nindakake riset. nuntunkanggo mangerteni sing luwih lengkap babagan piranti SymmetricDS.

Nginstal SymmetricDS gampang banget: download versi open source saka file zip saka kene lan njupuk metu ing ngendi wae sampeyan pengin. Tabel ing ngisor iki nyedhiyakake informasi babagan lokasi instalasi lan versi SymmetricDS ing conto iki, uga versi basis data, versi Linux, alamat IP, lan port kanggo loro simpul kasebut.

Host
vm1
vm2

versi OS
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

versi server DB
MySQL 5.7.26
PostgreSQL 10.5

port DB
3306
5832

Alamat IP
192.168.1.107
192.168.1.112

Versi SymmetricDS
SymmetricDS 3.9
SymmetricDS 3.9

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

Jeneng simpul SymmetricDS
corp-000
toko-001

Ing kene kita nginstal SymmetricDS ing /usr/local/symmetric-server-3.9.20, lan macem-macem subdirektori lan file bakal disimpen ing kana. Kita kasengsem ing conto lan subdirektori mesin. Direktori conto ngemot conto file konfigurasi kanthi sifat simpul, uga conto skrip SQL kanggo miwiti kanthi cepet.

Ing direktori conto kita ndeleng telung file konfigurasi kanthi sifat simpul - jeneng kasebut nuduhake sifat simpul ing skema tartamtu.

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

SymmetricDS wis kabeh file konfigurasi perlu kanggo desain 3-simpul dhasar (pilihan 1), lan file padha bisa digunakake kanggo desain 2-simpul (pilihan 2). Nyalin file konfigurasi sing dibutuhake saka direktori conto menyang mesin ing host vm1. Pranyata kaya mangkene:

$> 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 iki ing konfigurasi SymmetricDS diarani corp-000, lan sambungan database ditangani dening driver mysql jdbc, sing nggunakake senar sambungan ing ndhuwur lan kapercayan login. Kita nyambung menyang database replica_db lan tabel bakal digawe nalika nggawe skema. sync.url nuduhake ngendi kanggo hubungi simpul kanggo sinkronisasi.

Node 2 ing inang vm2 diatur minangka nyimpen-001 lan liyane kasebut ing file node.properties ngisor. Node store-001 nganggo database PostgreSQL lan pgdb_replica minangka database replikasi. registration.url ngidini host vm2 ngubungi host vm1 lan nampa rincian konfigurasi saka iku.

$> 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

Conto SymmetricDS sing wis rampung ngemot paramèter kanggo nyetel replikasi rong arah ing antarane rong server database (loro simpul). Langkah-langkah ing ngisor iki ditindakake ing host vm1 (corp-000), sing bakal nggawe skema conto kanthi 4 tabel. Banjur mlaku nggawe-sym-tabel kanthi perintah symadmin nggawe tabel direktori ing ngendi aturan lan arah replikasi antarane simpul bakal disimpen. Pungkasan, data sampel dimuat menyang 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

Ing conto, item lan item_selling_price tabel otomatis diatur kanggo nurun saka corp-000 kanggo nyimpen-001, lan tabel Advertisement (sale_transaction lan sale_return_line_item) otomatis diatur kanggo nurun saka nyimpen-001 kanggo corp-000. Saiki kita nggawe skema ing database PostgreSQL ing host vm2 (store-001) kanggo nyiapake kanggo nampa data saka corp-000.

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

Priksa manawa database MySQL ing vm1 duwe tabel conto lan tabel katalog SymmetricDS. Elinga yen tabel sistem SymmetricDS (awalan sym_) saiki mung kasedhiya ing node corp-000 amarga ing kana kita mbukak perintah create-sym-tables lan bakal ngatur replikasi. Lan ing basis data ing toko simpul-001 mung bakal ana 4 tabel conto tanpa data.

Kabeh. Lingkungan siap kanggo mbukak pangolahan server sym ing loro kelenjar minangka kapacak ing ngisor iki.

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

Entri log dikirim menyang file log latar mburi (symmetric.log) ing folder log ing direktori ing ngendi SymmetricDS diinstal, uga kanggo output standar. Server sym saiki bisa diwiwiti ing node store-001.

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

Yen sampeyan mbukak proses server sym ing host vm2, uga bakal nggawe tabel katalog SymmetricDS ing database PostgreSQL. Yen sampeyan mbukak proses server sym ing loro simpul, padha koordinasi karo saben liyane kanggo niru data saka corp-000 kanggo nyimpen-001. Yen sawise sawetara detik kita takon kabeh 4 tabel ing loro-lorone, kita bakal weruh yen replikasi sukses. Utawa sampeyan bisa ngirim bootstrap menyang node store-001 saka corp-000 kanthi printah ing ngisor iki.

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

Ing wektu iki, rekaman anyar dilebokake ing tabel item ing database MySQL ing node corp-000 (host: vm1), lan sampeyan bisa mriksa replikasi menyang database PostgreSQL ing node store-001 (host: vm2). Kita ndeleng operasi Tarik kanggo mindhah data saka corp-000 menyang nyimpen-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)

Kanggo nindakake operasi Push kanggo mindhah data saka store-001 menyang corp-000, kita masang rekaman menyang tabel sale_transaction lan verifikasi yen replikasi sukses.

Asile

Kita ndeleng persiyapan sukses replikasi rong arah saka tabel conto antarane database MySQL lan PostgreSQL. Kanggo nyiyapake replikasi kanggo tabel pangguna anyar, tindakake langkah iki: Kita nggawe tabel t1 contone lan ngatur aturan replikasi minangka nderek. Kanthi cara iki, kita mung ngatur replikasi saka corp-000 menyang 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 kasebut banjur diwenehi kabar babagan owah-owahan skema, yaiku, tambahan tabel anyar, nggunakake perintah symadmin kanthi argumen sync-triggers, sing nggawe maneh pemicu kanggo peta definisi tabel. send-schema dieksekusi kanggo ngirim owah-owahan skema menyang simpul nyimpen-001, lan replikasi tabel t1 dikonfigurasi.

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

Keuntungan saka SymmetricDS

Instalasi lan konfigurasi sing gampang, kalebu file sing siap digawe kanthi paramèter kanggo nggawe sirkuit telung simpul utawa rong simpul.
Database lintas platform lan kamardikan platform, kalebu server, laptop lan piranti seluler.
Tiron database apa wae menyang database liyane sacara lokal, ing WAN utawa ing awan.
Kemungkinan karya optimal karo sawetara database utawa sawetara ewu kanggo replikasi trep.
Versi mbayar kanthi GUI lan dhukungan sing apik banget.

Kekurangan SymmetricDS

Sampeyan kudu kanthi manual netepake aturan lan arah réplikasi ing baris printah liwat statements SQL kanggo mbukak tabel katalog, kang bisa ora trep.
Nyiyapake akeh tabel kanggo replikasi bisa dadi angel kajaba sampeyan nggunakake skrip kanggo nggawe statement SQL sing nemtokake aturan lan arah replikasi.
Kakehan informasi sing direkam ing log, lan kadhangkala sampeyan kudu ngresiki file log supaya ora njupuk akeh papan.

Asil kanggo SymmetricDS

SymmetricDS ngidini sampeyan nyiyapake replikasi loro-lorone ing antarane loro, telu, utawa malah sawetara ewu kelenjar kanggo niru lan nyinkronake file. Iki minangka alat unik sing nindakake akeh tugas kanthi mandiri, kayata pemulihan data otomatis sawise wektu sing suwe ing simpul, ijol-ijolan data sing aman lan efisien ing antarane simpul liwat HTTPS, manajemen konflik otomatis adhedhasar sakumpulan aturan, lsp. SymmetricDS nindakake. replikasi antarane basis data, mula, bisa digunakake kanggo macem-macem skenario, kalebu migrasi, migrasi, distribusi, nyaring, lan transformasi data antarane platform.

Tuladha kasebut adhedhasar pejabat guide cepet dening SymmetricDS. ING manual pangguna Njlèntrèhaké kanthi rinci macem-macem konsep sing ana ing nyetel replikasi karo SymmetricDS.

Source: www.habr.com

Add a comment