Réplikasi silang antara PostgreSQL sareng MySQL

Réplikasi silang antara PostgreSQL sareng MySQL

Kuring gé outline cross-réplikasi antara PostgreSQL na MySQL, kitu ogé métode pikeun nyetél cross-réplikasi antara dua server database. Ilaharna, database cross-replicated disebut homogen, sarta éta métode merenah pikeun mindahkeun tina hiji server RDBMS ka nu sejen.

Database PostgreSQL sareng MySQL umumna dianggap relasional, tapi kalayan ekstensi tambahan aranjeunna nawiskeun kamampuan NoSQL. Di dieu urang bakal ngabahas réplikasi antara PostgreSQL sareng MySQL tina sudut pandang DBMS relasional.

Kami moal ngajelaskeun sadayana padamelan batin, ngan ukur prinsip dasar supados anjeun nampi ide pikeun ngonpigurasikeun réplikasi antara server database, kaunggulan, watesan sareng kasus panggunaan.

Ilaharna, réplikasi antara dua server database idéntik dipigawé boh dina modeu binér atawa maké queries antara master (a.k.a. penerbit, master, atawa aktip) jeung budak (langganan, standby, atawa pasif). Tujuan réplikasi nyaéta nyadiakeun salinan real-time tina database master di sisi budak. Dina hal ieu, data ditransferkeun ti master ka budak, nyaeta, ti aktip ka pasip, sabab réplikasi dipigawé ngan dina hiji arah. Tapi anjeun tiasa nyetél réplikasi antara dua pangkalan data dina dua arah, supados data ditransferkeun ti budak ka master dina konfigurasi aktip-aktip. Sadaya ieu, kaasup réplikasi cascading, mungkin antara dua atawa leuwih server database idéntik.Konfigurasi aktip-aktip atawa aktif-pasip gumantung kana kabutuhan, kasadiaan kamampuhan misalna dina konfigurasi awal atawa pamakéan solusi konfigurasi éksternal tur aya trade-offs .

Konfigurasi anu dijelaskeun mungkin antara server database anu béda. Pangladén tiasa dikonpigurasi pikeun nampi data réplika tina pangladén database anu sanés sareng tetep ngajaga snapshot sacara real-time tina data anu direplikasi. MySQL sareng PostgreSQL nawiskeun kalolobaan konfigurasi ieu di-imah atanapi ngalangkungan ekstensi pihak katilu, kalebet metode log binér, ngonci disk, sareng metode dumasar pernyataan sareng baris.

Réplikasi silang antara MySQL sareng PostgreSQL diperyogikeun pikeun migrasi sakali-waktos tina hiji server database ka anu sanés. Basis data ieu ngagunakeun protokol anu béda-béda, ku kituna henteu mungkin pikeun nyambungkeunana langsung. Pikeun ngadegkeun bursa data, anjeun tiasa nganggo alat open source éksternal, contona pg_chameleon.

Naon pg_chameleon

pg_chameleon nyaéta sistem réplikasi ti MySQL ka PostgreSQL di Python 3. Ieu ngagunakeun open source perpustakaan mysql-réplikasi, ogé dina Python. Gambar baris diekstrak tina tabel MySQL sareng disimpen salaku objék JSONB dina database PostgreSQL, teras didekripsi ku fungsi pl/pgsql sareng diproduksi dina database PostgreSQL.

Fitur pg_chameleon

Sababaraha skéma MySQL tina klaster anu sami tiasa ditiru kana hiji udagan database PostgreSQL dina konfigurasi hiji-ka-loba.
Ngaran skéma sumber sareng target henteu tiasa sami.
Data réplikasi tiasa dicandak tina réplika MySQL anu dirobih.
Tabel anu teu tiasa ngayakeun réplikasi atanapi ngahasilkeun kasalahan teu kalebet.
Unggal fungsi réplikasi dikawasa ku daemons.
Kontrol via parameter basis YAML sareng file konfigurasi.

conto

Host
vm1
vm2

Vérsi OS
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

Vérsi server DB
MySQL 5.7.26
PostgreSQL 10.5

palabuhan DB
3306
5433

Alamat IP
192.168.56.102
192.168.56.106

Pikeun ngawitan, nyiapkeun sagala komponén perlu install pg_chameleon. Contona kieu installs Python 3.6.8, nu nyiptakeun sarta ngaktipkeun 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

Saatos suksés masang Python3.6, anjeun kedah ngalengkepan sarat sésana, sapertos nyiptakeun sareng ngaktipkeun lingkungan virtual. Salaku tambahan, modul pip diropéa kana vérsi pangénggalna sareng dianggo pikeun masang pg_chameleon. Paréntah handap ngahaja install pg_chameleon 2.0.9, sanajan versi panganyarna nyaeta 2.0.10. Ieu diperlukeun pikeun nyegah bug anyar dina versi diropéa.

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

Kami teras nyauran pg_chameleon (chameleon mangrupikeun paréntah) kalayan argumen set_configuration_files pikeun ngaktipkeun pg_chameleon sareng nyiptakeun diréktori standar sareng 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

Ayeuna urang ngadamel salinan config-example.yml salaku default.yml supados janten file konfigurasi standar. A file konfigurasi sampel pikeun conto ieu disadiakeun di handap.

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

Konfigurasi file dina conto ieu mangrupa sampel pg_chameleon file kalawan modifikasi minor pikeun nyocogkeun ka sumber jeung lingkungan target, sarta di handap ieu tinjauan bagian béda tina file konfigurasi.

Dina file konfigurasi default.yml aya bagian tina setélan global, dimana anjeun tiasa ngatur setelan sapertos lokasi file konci, lokasi log, periode neundeun log, jsb salajengna asalna bagian tipe override, dimana susunan aturan pikeun tipe overriding salila réplikasi. Conto ingkar kana aturan overriding tipe nu ngarobah tinyint (1) kana nilai boolean. Dina bagian salajengna, urang nangtukeun wincik sambungan kana database target. Dina kasus urang, ieu mangrupikeun database PostgreSQL, anu ditunjuk pg_conn. Dina bagian anu terakhir, urang nunjukkeun data sumber, nyaéta, parameter sambungan tina pangkalan data sumber, skéma pemetaan antara sumber sareng pangkalan data target, tabel anu kedah dilewatan, waktos ngantosan, mémori, ukuran pakét. Catet yén "sumber" téh jamak, hartina urang bisa nambahkeun sababaraha basis data sumber kana database target tunggal pikeun nyetél hiji konfigurasi loba-ka-hiji.

The conto database world_x ngandung 4 tabel kalawan barisan nu komunitas MySQL nawarkeun salaku conto. Éta tiasa diunduh di dieu. Sampel database asalna salaku tar jeung dikomprés arsip jeung parentah pikeun nyieun jeung importing baris.

Dina basis data MySQL sareng PostgreSQL, pangguna khusus didamel nganggo nami anu sami usr_replica. Dina MySQL, éta dibéré hak baca tambahan pikeun sakabéh tabel replicated.

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, database db_replica dijieun anu bakal nampa parobahan tina database MySQL. Pamaké usr_replica di PostgreSQL sacara otomatis dikonpigurasikeun salaku nu gaduh dua skéma, pgworld_x sareng sch_chameleon, anu ngandung tabel réplikasi saleresna sareng tabel diréktori réplikasi, masing-masing. Argumen create_replica_schema tanggung jawab pikeun konfigurasi otomatis, sakumaha anu anjeun tingali di handap.

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

Database MySQL dikonpigurasikeun sareng sababaraha parobahan parameter pikeun nyiapkeun réplikasi sapertos anu dipidangkeun di handap ieu. Anjeun kedah ngabalikan deui pangladén pangkalan data supados parobihan tiasa dianggo.

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

Ayeuna hal anu penting pikeun pariksa sambungan ka duanana server database ambéh teu aya masalah nalika ngajalankeun paréntah pg_chameleon.

Dina titik PostgreSQL:

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

Dina titik MySQL:

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

Tilu pg_chameleon salajengna (chameleon) paréntah nyiapkeun lingkungan, tambahkeun sumber, sarta initialize replica nu. Argumen create_replica_schema pikeun pg_chameleon nyiptakeun skéma standar (sch_chameleon) sareng skéma réplikasi (pgworld_x) dina database PostgreSQL, sakumaha anu parantos dibahas. Argumen add_source nambihan basis data sumber kana konfigurasi ku maca file konfigurasi (default.yml), sarta dina hal urang éta MySQL, sarta init_replica initializes konfigurasi dumasar kana parameter dina file konfigurasi.

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

Kaluaran tina tilu paréntah ieu jelas nunjukkeun yén aranjeunna suksés dieksekusi. Kasalahan naon waé atanapi kasalahan sintaksis dilaporkeun dina pesen anu sederhana sareng jelas sareng petunjuk ngeunaan cara ngalereskeun masalah.

Tungtungna, urang ngamimitian réplikasi nganggo start_replica sareng nampi pesen suksés.

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

Status réplikasi tiasa ditaroskeun nganggo argumen show_status, sareng kasalahan tiasa ditingali nganggo argumen show_errors.

Hasil.

Sakumaha urang parantos nyarios, unggal fungsi réplikasi dikawasa ku daemon. Pikeun ningali éta, kami naroskeun tabel prosés nganggo paréntah ps Linux, sapertos anu dipidangkeun di handap ieu.

Hasil.

Réplikasi henteu dianggap dikonpigurasi dugi ka urang nguji sacara real waktos, sapertos anu dipidangkeun di handap. Urang nyieun méja, nyelapkeun sababaraha rékaman kana database MySQL, sarta nelepon argumen sync_tables di pg_chameleon pikeun ngapdet daemons sarta ngayakeun réplikasi tabel kalawan rékaman kana 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.

Pikeun mastikeun hasil tés, urang naroskeun tabel tina database PostgreSQL sareng kaluaran barisan.

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

Upami urang ngalakukeun migrasi, paréntah pg_chameleon di handap ieu bakal tungtungna. Paréntah kudu dieksekusi sanggeus kami yakin yén barisan sakabéh tabel target geus replicated, sarta hasilna bakal rapih hijrah database PostgreSQL tanpa rujukan kana database sumber atawa skéma réplikasi (sch_chameleon).

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

Upami hoyong, anjeun tiasa nganggo paréntah di handap ieu pikeun mupus konfigurasi asli sareng skéma réplikasi.

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

Kaunggulan tina pg_chameleon

Setélan sareng konfigurasi anu gampang.
Gampang troubleshoot sareng ngaidentipikasi anomali kalayan pesen kasalahan anu jelas.
tabél husus tambahan bisa ditambahkeun kana réplikasi sanggeus initialization tanpa ngarobah sesa konfigurasi nu.
Kasebut nyaéta dimungkinkeun pikeun ngonpigurasikeun sababaraha basis data sumber pikeun database target tunggal, sarta ieu pohara kapaké lamun anjeun ngagabungkeun data tina hiji atawa leuwih database MySQL kana database PostgreSQL tunggal.
Anjeun teu kudu ngayakeun réplikasi tabel nu dipilih.

Kakurangan pg_chameleon

Ngan dirojong ku MySQL 5.5 sareng di luhur salaku sumber sareng PostgreSQL 9.5 sareng di luhur salaku pangkalan data target.
Unggal tabel kudu boga konci primér atawa unik, disebutkeun tabel nu initialized salila prosés init_replica tapi teu replicated.
Réplikasi saarah - ukur tina MySQL ka PostgreSQL. Ku alatan éta, éta ngan cocog pikeun sirkuit "aktif-pasif".
Sumberna ngan ukur tiasa janten pangkalan data MySQL, sareng dukungan pikeun pangkalan data PostgreSQL salaku sumberna ngan ukur ékspérimén sareng kalayan keterbatasan (leuwih jéntré). di dieu)

Hasil pikeun pg_chameleon

Metodeu réplikasi dina pg_chameleon saé pikeun migrasi pangkalan data tina MySQL ka PostgreSQL. Kakurangan anu signifikan nyaéta réplikasi ngan ukur hiji arah, ku kituna para ahli database sigana henteu hoyong nganggo éta pikeun naon waé salian ti migrasi. Tapi masalah réplikasi hiji arah bisa direngsekeun ku alat open source sejen - SymmetricDS.

Baca leuwih dina dokuméntasi resmi di dieu. Pitulung baris paréntah bisa kapanggih di dieu.

Tinjauan SymmetricDS

SymmetricDS mangrupikeun alat open source anu ngayakeun réplikasi databés naon waé kana pangkalan data umum anu sanés: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird sareng instansi database awan anu sanés, sapertos Redshift, sareng Azure, jsb fitur sadia: database na singkronisasi file, multi-master réplikasi database, sinkronisasi disaring, transformasi jeung sajabana. Ieu mangrupikeun alat Java sareng peryogi sékrési standar JRE atanapi JDK (versi 8.0 atanapi langkung luhur). Di dieu, parobahan data ka pemicu dina database sumber bisa dirékam sarta dikirim ka database target luyu dina bentuk bets.

fitur SymmetricDS

Alatna bebas platform, hartina dua atawa leuwih database béda bisa tukeur data.
Basis data relasional disingkronkeun nganggo rékaman parobahan data, sedengkeun basis data dumasar sistem file nganggo sinkronisasi file.
Réplikasi dua arah ngagunakeun métode Push and Pull dumasar kana sakumpulan aturan.
Mindahkeun data tiasa ngalangkungan jaringan anu aman sareng bandwidth rendah.
Pamulihan otomatis nalika node neruskeun operasi saatos gagal sareng resolusi konflik otomatis.
API ekstensi anu cocog sareng awan anu kuat.

conto

SymmetricDS tiasa dikonpigurasi dina salah sahiji tina dua cara:
A master (kolot) titik nu centrally koordinat réplikasi data antara dua budak (anak) titik, sarta komunikasi antara titik anak lumangsung ngan ngaliwatan indungna.
Hiji titik aktif (Node 1) bisa komunikasi pikeun réplikasi jeung titik aktif sejen (Node 2) tanpa perantara.

Dina duanana pilihan, bursa data lumangsung maké Push jeung Tarik. Dina conto ieu urang bakal mertimbangkeun konfigurasi aktip-aktip. Bakal butuh panjang teuing pikeun ngajelaskeun sakabéh arsitéktur, jadi ngalakukeun panalungtikan Anjeun. kapamimpinanpikeun leuwih jéntré ngeunaan alat SymmetricDS.

Masang SymmetricDS saderhana pisan: unduh versi open source tina file pos di dieu sarta nyandak kaluar dimana wae Anjeun hoyong. Tabel di handap nyadiakeun inpormasi ngeunaan lokasi pamasangan sareng versi SymmetricDS dina conto ieu, kitu ogé versi database, versi Linux, alamat IP, sareng palabuhan pikeun kadua titik.

Host
vm1
vm2

Vérsi OS
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

Vérsi server DB
MySQL 5.7.26
PostgreSQL 10.5

palabuhan DB
3306
5832

Alamat IP
192.168.1.107
192.168.1.112

Vérsi SymmetricDS
SymmetricDS 3.9
SymmetricDS 3.9

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

Ngaran titik SymmetricDS
corp-000
toko-001

Di dieu urang install SymmetricDS di /usr/local/symmetric-server-3.9.20, sarta sagala rupa subdirectories jeung payel bakal disimpen di dinya. Kami museurkeun sampel sareng subdirektori mesin. Diréktori sampel ngandung conto file konfigurasi sareng sipat titik, kitu ogé conto skrip SQL pikeun ngamimitian anjeun gancang.

Dina diréktori sampel urang ningali tilu file konfigurasi kalawan sipat titik - nami nembongkeun sipat titik dina skéma tangtu.

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

SymmetricDS gaduh sadaya file konfigurasi anu dipikabutuh pikeun desain 3-titik dasar (pilihan 1), sareng file anu sami tiasa dianggo pikeun desain 2-titik (pilihan 2). Nyalin file konfigurasi anu diperyogikeun tina diréktori sampel ka mesin dina host vm1. Tétéla kieu:

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

Titik ieu dina konfigurasi SymmetricDS disebut corp-000, sareng sambungan database diurus ku supir mysql jdbc, anu nganggo senar sambungan di luhur sareng kredensial login. Urang nyambung ka database replica_db jeung tabel bakal dijieun salila nyieun schema. sync.url nembongkeun dimana ngahubungan titik pikeun sinkronisasi.

Node 2 on host vm2 geus ngonpigurasi salaku toko-001 sarta sésana dieusian dina file node.properties handap. Node store-001 ngajalankeun database PostgreSQL sareng pgdb_replica mangrupikeun database réplikasi. registration.url ngamungkinkeun host vm2 ngahubungan host vm1 sarta nampa rinci konfigurasi ti dinya.

$> 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 réngsé ngandung parameter pikeun nyetél réplikasi dua arah antara dua server database (dua titik). Léngkah-léngkah di handap ieu dilakukeun dina host vm1 (corp-000), anu bakal nyiptakeun conto skéma sareng 4 méja. Teras ngajalankeun create-sym-tables kalayan paréntah symadmin nyiptakeun tabel diréktori dimana aturan sareng arah réplikasi antara titik bakal disimpen. Tungtungna, data sampel dimuat kana tabél.

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

Dina conto, item na item_selling_price tabel otomatis ngonpigurasi pikeun ngayakeun réplikasi ti corp-000 ka toko-001, sarta tabel diobral (sale_transaction na sale_return_line_item) otomatis ngonpigurasi pikeun ngayakeun réplikasi ti store-001 mun corp-000. Ayeuna urang nyieun skéma dina database PostgreSQL on host vm2 (store-001) pikeun nyiapkeun eta pikeun nampa data ti corp-000.

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

Pastikeun pikeun pariksa yén database MySQL on vm1 boga tabel conto na SymmetricDS tabel katalog. Catet yén tabel sistem SymmetricDS (awalan sym_) ayeuna ngan sayogi dina node corp-000 sabab éta tempat urang ngajalankeun paréntah create-sym-tables sareng bakal ngatur réplikasi. Sarta dina database on titik toko-001 bakal aya ngan 4 conto tabel tanpa data.

Sadayana. Lingkungan geus siap ngajalankeun prosés server sym on duanana titik sakumaha ditémbongkeun di handap ieu.

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

Éntri log dikirim ka file log latar tukang (symmetric.log) dina folder log dina diréktori dimana SymmetricDS dipasang, ogé kaluaran standar. Server sym ayeuna tiasa dimimitian dina node store-001.

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

Upami anjeun ngajalankeun prosés server sym dina host vm2, éta ogé bakal nyiptakeun tabel katalog SymmetricDS dina database PostgreSQL. Lamun ngajalankeun prosés server sym on duanana titik, aranjeunna koordinat saling pikeun ngayakeun réplikasi data ti corp-000 ka store-001. Upami saatos sababaraha detik urang naroskeun sadayana 4 tabel dina dua sisi, urang bakal ningali yén réplikasi éta suksés. Atanapi anjeun tiasa ngirim bootstrap ka node store-001 ti corp-000 kalayan paréntah di handap ieu.

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

Dina titik ieu, rékaman anyar diselapkeun kana tabel item dina database MySQL on node corp-000 (host: vm1), sarta anjeun bisa pariksa réplikasi na kana database PostgreSQL on node store-001 (host: vm2). Kami ningali operasi Tarik pikeun mindahkeun data tina corp-000 ka toko-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)

Pikeun ngalakukeun operasi Push pikeun mindahkeun data ti store-001 ka corp-000, kami ngalebetkeun catetan kana tabel sale_transaction sareng pariksa yén réplikasi suksés.

Hasil.

Kami ningali pangaturan suksés réplikasi dua arah tina conto tabel antara database MySQL sareng PostgreSQL. Pikeun nyetel réplikasi pikeun tabel pamaké anyar, tuturkeun léngkah ieu: Urang nyieun tabel t1 contona jeung ngonpigurasikeun aturan réplikasi na saperti kieu. Ku cara kieu urang ngonpigurasikeun ukur réplikasi tina corp-000 ka 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 ieu lajeng dibere beja ngeunaan parobahan skéma, nyaeta, tambahan tabel anyar, ngagunakeun paréntah symadmin kalawan argumen sinkronisasi-pemicu, nu recreates micu peta definisi tabel. ngirim-schema dieksekusi pikeun ngirim parobahan skéma titik toko-001, sarta réplikasi tabel t1 geus ngonpigurasi.

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

Kauntungannana SymmetricDS

Pamasangan sareng konfigurasi anu gampang, kalebet sakumpulan file anu siap-siap sareng parameter pikeun nyiptakeun sirkuit tilu-titik atanapi dua-titik.
Basis data lintas platform sareng kamerdékaan platform, kalebet server, laptop sareng alat sélulér.
Tiron databés naon waé kana pangkalan data anu sanés sacara lokal, dina WAN atanapi dina méga.
Kamungkinan gawé optimal kalayan sababaraha database atanapi sababaraha rébu pikeun réplikasi merenah.
Vérsi mayar sareng GUI sareng dukungan anu saé.

Kakurangan SymmetricDS

Anjeun kedah sacara manual nangtukeun aturan sareng arah réplikasi dina garis paréntah ngaliwatan pernyataan SQL pikeun ngamuat tabel katalog, anu tiasa ngaganggu.
Nyetél loba tabel pikeun réplikasi tiasa tedious iwal mun ngagunakeun Aksara nyieun pernyataan SQL nu nangtukeun aturan jeung arah réplikasi.
Aya seueur teuing inpormasi anu dirékam dina log, sareng sakapeung anjeun kedah ngabersihkeun file log supados henteu nyandak seueur rohangan.

Hasil pikeun SymmetricDS

SymmetricDS ngamungkinkeun anjeun nyetél réplikasi dua arah antara dua, tilu, atanapi malah sababaraha rébu titik pikeun ngayakeun réplikasi sareng nyingkronkeun file. Ieu mangrupikeun alat unik anu sacara mandiri ngalaksanakeun seueur pancén, sapertos pamulihan data otomatis saatos waktos waktos anu lami dina node, pertukaran data anu aman sareng efisien antara titik via HTTPS, manajemén konflik otomatis dumasar kana sakumpulan aturan, jsb SymmetricDS ngalaksanakeun réplikasi antara database mana wae, kituna, bisa dipaké pikeun rupa-rupa skenario, kaasup migrasi, migrasi, distribusi, nyaring, jeung transformasi data sakuliah platform.

Conto dumasar kana resmi pituduh gancang ku SymmetricDS. DI manual pamaké Ngajelaskeun sacara rinci rupa-rupa konsép anu aub dina nyetél réplikasi sareng SymmetricDS.

sumber: www.habr.com

Tambahkeun komentar