Unakrsna replikacija između PostgreSQL-a i MySQL-a

Unakrsna replikacija između PostgreSQL-a i MySQL-a

Navešću unakrsnu replikaciju između PostgreSQL-a i MySQL-a, kao i metode za postavljanje unakrsne replikacije između dva servera baze podataka. Unakrsno replicirane baze podataka se obično nazivaju homogenim, i to je zgodan metod prelaska sa jednog RDBMS servera na drugi.

PostgreSQL i MySQL baze podataka se generalno smatraju relacionim, ali uz dodatna proširenja nude NoSQL mogućnosti. Ovdje ćemo raspravljati o replikaciji između PostgreSQL-a i MySQL-a iz perspektive relacijskog DBMS-a.

Nećemo opisivati ​​cijeli unutrašnji rad, samo osnovne principe kako biste dobili ideju o konfiguraciji replikacije između poslužitelja baze podataka, prednosti, ograničenja i slučajeve upotrebe.

Obično se replikacija između dva identična servera baze podataka vrši ili u binarnom načinu ili korištenjem upita između glavnog (tzv. izdavača, glavnog ili aktivnog) i podređenog (pretplatnika, pripravnog ili pasivnog). Svrha replikacije je osigurati kopiju glavne baze podataka u realnom vremenu na slave strani. U ovom slučaju podaci se prenose sa mastera na slave, odnosno iz aktivnog u pasiv, jer se replikacija vrši samo u jednom smjeru. Ali možete postaviti replikaciju između dvije baze podataka u oba smjera, tako da se podaci prenose od slave-a do glavnog u aktivno-aktivnoj konfiguraciji. Sve ovo, uključujući kaskadnu replikaciju, moguće je između dva ili više identičnih servera baze podataka.Aktivno-aktivna ili aktivno-pasivna konfiguracija ovisi o potrebi, dostupnosti takvih mogućnosti u početnoj konfiguraciji ili korištenju vanjskih konfiguracijskih rješenja i postojećih kompromisa.

Opisana konfiguracija je moguća između različitih poslužitelja baze podataka. Server se može konfigurirati da prihvati replicirane podatke s drugog poslužitelja baze podataka i još uvijek održava snimke repliciranih podataka u realnom vremenu. MySQL i PostgreSQL nude većinu ovih konfiguracija unutar kuće ili putem ekstenzija trećih strana, uključujući metode binarnog dnevnika, zaključavanje diska i metode zasnovane na izjavama i redovima.

Unakrsna replikacija između MySQL-a i PostgreSQL-a je potrebna za jednokratnu migraciju sa jednog servera baze podataka na drugi. Ove baze podataka koriste različite protokole, tako da ih nije moguće direktno povezati. Da biste uspostavili razmjenu podataka, možete koristiti vanjski alat otvorenog koda, na primjer pg_chameleon.

Šta je pg_chameleon

pg_chameleon je sistem replikacije sa MySQL na PostgreSQL u Pythonu 3. Koristi open source biblioteku za replikaciju mysql, također u Pythonu. Slike reda se izdvajaju iz MySQL tabela i pohranjuju kao JSONB objekti u PostgreSQL bazi podataka, a zatim dešifriraju pl/pgsql funkcija i reprodukuju u PostgreSQL bazi podataka.

Karakteristike pg_chameleon

Više MySQL shema iz istog klastera može se replicirati na jednu ciljnu PostgreSQL bazu podataka u konfiguraciji jedan prema više
Nazivi izvorne i ciljne sheme ne mogu biti isti.
Podaci o replikaciji mogu se dohvatiti iz kaskadne MySQL replike.
Tablice koje se ne mogu replicirati ili proizvesti greške su isključene.
Svaka funkcija replikacije je kontrolirana od strane demona.
Kontrola putem parametara i konfiguracijskih datoteka zasnovanih na YAML-u.

Primjer:

Domaćin
vm1
vm2

OS verzija
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

Verzija DB servera
MySQL 5.7.26
PostgreSQL 10.5

DB port
3306
5433

IP adresa
192.168.56.102
192.168.56.106

Za početak pripremite sve potrebne komponente za instalaciju pg_chameleon. Ovaj primjer instalira Python 3.6.8, koji kreira i aktivira virtuelno okruženje.

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

Nakon što uspješno instalirate Python3.6, morate ispuniti preostale zahtjeve, kao što je kreiranje i aktiviranje virtuelnog okruženja. Dodatno, pip modul je ažuriran na najnoviju verziju i koristi se za instalaciju pg_chameleon. Naredbe ispod namjerno instaliraju pg_chameleon 2.0.9, iako je najnovija verzija 2.0.10. Ovo je neophodno kako bi se izbjegle nove greške u ažuriranoj verziji.

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

Zatim pozivamo pg_chameleon (kameleon je naredba) s argumentom set_configuration_files da omogućimo pg_chameleon i kreiramo zadane direktorije i konfiguracijske datoteke.

(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

Sada kreiramo kopiju config-example.yml kao default.yml tako da postane zadana konfiguracijska datoteka. Primjer konfiguracijske datoteke za ovaj primjer je dat ispod.

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

Konfiguraciona datoteka u ovom primjeru je primjer pg_chameleon datoteke sa manjim modifikacijama kako bi odgovarala izvornom i ciljnom okruženju, a ispod je pregled različitih dijelova konfiguracijske datoteke.

U default.yml konfiguracijskoj datoteci postoji odjeljak globalnih postavki, gdje možete upravljati postavkama kao što su lokacija zaključane datoteke, lokacija dnevnika, period skladištenja dnevnika, itd. Zatim slijedi odjeljak za nadjačavanje tipa, gdje skup pravila za nadjačavanje tipova tokom replikacije. U primjeru je zadano pravilo nadjačavanja tipa koje pretvara tinyint(1) u booleovu vrijednost. U sljedećem odjeljku specificiramo detalje veze s ciljnom bazom podataka. U našem slučaju, ovo je PostgreSQL baza podataka, označena kao pg_conn. U posljednjem dijelu navodimo izvorne podatke, odnosno parametre povezivanja izvorne baze podataka, šemu mapiranja između izvorne i ciljne baze podataka, tablice koje treba preskočiti, vrijeme čekanja, memoriju, veličinu paketa. Imajte na umu da je "izvori" množina, što znači da možemo dodati više izvornih baza podataka u jednu ciljnu bazu podataka kako bismo postavili konfiguraciju više-na-jedan.

Primer baze podataka world_x sadrži 4 tabele sa redovima koje MySQL zajednica nudi kao primere. Može se preuzeti ovdje. Primer baze podataka dolazi kao tar i komprimovana arhiva sa uputstvima za kreiranje i uvoz redova.

U MySQL i PostgreSQL bazama podataka kreira se poseban korisnik sa istim imenom usr_replica. U MySQL-u mu se daju dodatna prava čitanja za sve replicirane tabele.

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;

Na strani PostgreSQL-a kreira se baza podataka db_replica koja će prihvatiti promjene iz MySQL baze podataka. Korisnik usr_replica u PostgreSQL-u se automatski konfigurira kao vlasnik dvije sheme, pgworld_x i sch_chameleon, koje sadrže stvarne replicirane tablice i tablice direktorija replikacije, respektivno. Argument create_replica_schema odgovoran je za automatsku konfiguraciju, kao što ćete vidjeti u nastavku.

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

MySQL baza podataka je konfigurisana sa nekim promenama parametara da bi se pripremila za replikaciju kao što je prikazano ispod. Morat ćete ponovo pokrenuti poslužitelj baze podataka kako bi promjene stupile na snagu.

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

Sada je važno provjeriti vezu sa oba servera baze podataka kako ne bi bilo problema prilikom pokretanja naredbi pg_chameleon.

Na PostgreSQL čvoru:

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

Na MySQL čvoru:

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

Sljedeće tri naredbe pg_chameleon (kameleon) pripremaju okruženje, dodaju izvor i inicijaliziraju repliku. Argument create_replica_schema za pg_chameleon kreira zadanu šemu (sch_chameleon) i šemu replikacije (pgworld_x) u PostgreSQL bazi podataka, kao što smo već raspravljali. Argument add_source dodaje izvornu bazu podataka u konfiguraciju čitanjem konfiguracijske datoteke (default.yml), au našem slučaju to je mysql, a init_replica inicijalizira konfiguraciju na osnovu parametara u konfiguracijskoj datoteci.

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

Izlaz ove tri naredbe jasno pokazuje da su uspješno izvršene. Svaki pad ili sintaksička greška se izvještava u jednostavnim, jasnim porukama sa savjetima kako riješiti problem.

Konačno, započinjemo replikaciju koristeći start_replica i primamo poruku o uspjehu.

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

Status replikacije se može ispitati korištenjem argumenta show_status, a greške se mogu vidjeti pomoću argumenta show_errors.

Rezultat.

Kao što smo već rekli, svaku funkciju replikacije kontrolišu demoni. Da bismo ih vidjeli, postavljamo upit u tablicu procesa s Linux ps naredbom, kao što je prikazano ispod.

Rezultat.

Replikacija se ne smatra konfiguriranom dok je ne testiramo u realnom vremenu, kao što je prikazano ispod. Kreiramo tabelu, ubacujemo nekoliko zapisa u MySQL bazu podataka i pozivamo argument sync_tables u pg_chameleon da ažuriramo demone i repliciramo tabelu sa zapisima u PostgreSQL bazu podataka.

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.

Da bismo potvrdili rezultate testa, tražimo tabelu iz PostgreSQL baze podataka i ispisujemo redove.

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

Ako radimo migraciju, sljedeće pg_chameleon komande će biti kraj toga. Naredbe se moraju izvršiti nakon što smo sigurni da su redovi svih ciljnih tablica replicirani, a rezultat će biti uredno migrirana PostgreSQL baza podataka bez referenci na izvornu bazu podataka ili šemu replikacije (sch_chameleon).

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

Ako želite, možete koristiti sljedeće naredbe za brisanje originalne konfiguracije i šeme replikacije.

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

Prednosti pg_chameleon

Jednostavno podešavanje i konfiguracija.
Lako otklonite probleme i identifikujte anomalije uz jasne poruke o grešci.
Dodatne posebne tablice mogu se dodati replikaciji nakon inicijalizacije bez promjene ostatka konfiguracije.
Moguće je konfigurirati više izvornih baza podataka za jednu ciljnu bazu podataka, a ovo je vrlo korisno ako kombinirate podatke iz jedne ili više MySQL baza podataka u jednu PostgreSQL bazu podataka.
Ne morate replicirati odabrane tabele.

Nedostaci pg_chameleon

Podržano samo sa MySQL 5.5 i novijim kao izvornim i PostgreSQL 9.5 i novijim kao ciljnom bazom podataka.
Svaka tabela mora imati primarni ili jedinstveni ključ, inače se tabele inicijaliziraju tokom procesa init_replica, ali se ne repliciraju.
Jednosmjerna replikacija - samo sa MySQL na PostgreSQL. Stoga je pogodan samo za "aktivno-pasivni" krug.
Izvor može biti samo MySQL baza podataka, a podrška za PostgreSQL bazu podataka kao izvor je samo eksperimentalna i sa ograničenjima (saznajte više ovdje)

Rezultati za pg_chameleon

Metoda replikacije u pg_chameleon je odlična za migraciju baze podataka sa MySQL na PostgreSQL. Značajna mana je to što je replikacija samo jednosmjerna, tako da je malo vjerovatno da će je stručnjaci baze podataka htjeti koristiti za bilo šta osim migracije. Ali problem jednosmjerne replikacije može se riješiti s drugim alatom otvorenog koda - SymmetricDS.

Više pročitajte u zvaničnoj dokumentaciji ovdje. Pomoć u komandnoj liniji se može pronaći ovdje.

Pregled SymmetricDS-a

SymmetricDS je alat otvorenog koda koji replicira bilo koju bazu podataka na bilo koju drugu uobičajenu bazu podataka: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird i druge instance baze podataka u oblaku, npr. Redshift i Azure, itd. Dostupne funkcije: sinhronizacija baze podataka i datoteka, multi-master replikacija baze podataka, filtrirana sinhronizacija, transformacija i druge. Ovo je Java alat i zahtijeva standardno izdanje JRE ili JDK (verzija 8.0 ili novija). Ovdje se promjene podataka na okidačima u izvornoj bazi podataka mogu snimiti i poslati u odgovarajuću ciljnu bazu podataka u obliku grupa.

SymmetricDS karakteristike

Alat je nezavisan od platforme, što znači da dvije ili više različitih baza podataka mogu razmjenjivati ​​podatke.
Relacione baze podataka se sinhronizuju pomoću zapisa o promeni podataka, dok baze podataka zasnovane na sistemu datoteka koriste sinhronizaciju datoteka.
Dvosmjerna replikacija korištenjem Push i Pull metoda zasnovanih na skupu pravila.
Prijenos podataka je moguć preko sigurnih mreža niskog propusnog opsega.
Automatski oporavak kada čvorovi nastave s radom nakon kvara i automatsko rješavanje sukoba.
Cloud kompatibilni i moćni API-ji za proširenja.

Primjer:

SymmetricDS se može konfigurirati u jednoj od dvije opcije:
Glavni (roditeljski) čvor koji centralno koordinira replikaciju podataka između dva podređena (podređena) čvora, a komunikacija između podređenih čvorova odvija se samo preko roditelja.
Aktivni čvor (čvor 1) može komunicirati radi replikacije s drugim aktivnim čvorom (čvor 2) bez posrednika.

U obje opcije, razmjena podataka se odvija korištenjem Push i Pull. U ovom primjeru ćemo razmotriti aktivno-aktivnu konfiguraciju. Predugo bi trebalo da se opiše cijela arhitektura, pa istražite. vodičda saznate više o SymmetricDS uređaju.

Instalacija SymmetricDS-a je vrlo jednostavna: preuzmite verziju zip datoteke otvorenog koda odavde i iznesite ga gde god želite. Tabela ispod pruža informacije o lokaciji instalacije i verziji SymmetricDS-a u ovom primjeru, kao i verzije baze podataka, Linux verzije, IP adrese i portove za oba čvora.

Domaćin
vm1
vm2

OS verzija
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

Verzija DB servera
MySQL 5.7.26
PostgreSQL 10.5

DB port
3306
5832

IP adresa
192.168.1.107
192.168.1.112

SymmetricDS verzija
SymmetricDS 3.9
SymmetricDS 3.9

SymmetricDS instalacijski put
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

Ime SymmetricDS čvora
corp-000
prodavnica-001

Ovdje instaliramo SymmetricDS u /usr/local/symmetric-server-3.9.20 i tu će biti pohranjeni različiti poddirektoriji i datoteke. Zanimaju nas uzorci i poddirektoriji motora. Direktorij uzoraka sadrži primjere konfiguracijskih datoteka sa svojstvima čvora, kao i primjere SQL skripti za brzi početak.

U direktoriju uzoraka vidimo tri konfiguracijske datoteke sa svojstvima čvora - ime pokazuje prirodu čvora u određenoj šemi.

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

SymmetricDS ima sve potrebne konfiguracijske datoteke za osnovni dizajn sa 3 čvora (opcija 1), a iste datoteke se mogu koristiti za dizajn sa 2 čvora (opcija 2). Kopirajte potrebnu konfiguracijsku datoteku iz direktorija uzoraka u motore na vm1 hostu. Ispada ovako:

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

Ovaj čvor u SymmetricDS konfiguraciji naziva se corp-000, a vezom baze podataka upravlja mysql jdbc drajver, koji koristi gornji niz veze i vjerodajnice za prijavu. Povezujemo se sa bazom podataka replica_db i tabele će biti kreirane tokom kreiranja šeme. sync.url pokazuje gdje kontaktirati čvor radi sinhronizacije.

Čvor 2 na hostu vm2 je konfiguriran kao store-001, a ostalo je navedeno u datoteci node.properties ispod. Čvor store-001 pokreće PostgreSQL bazu podataka, a pgdb_replica je baza podataka za replikaciju. register.url omogućava hostu vm2 da kontaktira host vm1 i od njega primi detalje o konfiguraciji.

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

Završeni primjer SymmetricDS sadrži parametre za postavljanje dvosmjerne replikacije između dva poslužitelja baze podataka (dva čvora). Koraci u nastavku se izvode na hostu vm1 (corp-000), koji će kreirati primjer šeme sa 4 tabele. Zatim pokretanje create-sym-tables sa symadmin naredbom kreira tablice direktorija u kojima će biti pohranjena pravila i smjer replikacije između čvorova. Konačno, uzorci podataka se učitavaju u tabele.

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

U primjeru, tabele item i item_selling_price su automatski konfigurirane da se repliciraju iz corp-000 u store-001, a tabele prodaje (sale_transaction i sale_return_line_item) su automatski konfigurirane da se repliciraju iz trgovine-001 u corp-000. Sada kreiramo šemu u PostgreSQL bazi podataka na hostu vm2 (store-001) kako bismo je pripremili za primanje podataka od corp-000.

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

Obavezno provjerite da li MySQL baza podataka na vm1 ima primjere tablica i SymmetricDS kataloške tablice. Imajte na umu da su SymmetricDS sistemske tabele (sa prefiksom sym_) trenutno dostupne samo na čvoru corp-000 jer smo tamo pokrenuli naredbu create-sym-tables i upravljali replikacijom. A u bazi podataka na čvoru store-001 bit će samo 4 primjera tablice bez podataka.

Sve. Okruženje je spremno za pokretanje procesa sym servera na oba čvora kao što je prikazano ispod.

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

Unosi dnevnika se šalju u pozadinsku log datoteku (symmetric.log) u folderu dnevnika u direktoriju gdje je SymmetricDS instaliran, kao i na standardni izlaz. Sym server se sada može pokrenuti na čvoru store-001.

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

Ako pokrenete proces sym servera na vm2 hostu, on će također kreirati SymmetricDS kataloške tablice u PostgreSQL bazi podataka. Ako pokrenete proces sym servera na oba čvora, oni se međusobno koordiniraju kako bi replicirali podatke iz corp-000 u store-001. Ako nakon nekoliko sekundi upitamo sve 4 tabele s obje strane, vidjet ćemo da je replikacija uspjela. Ili možete poslati bootstrap čvoru store-001 iz corp-000 sa sljedećom naredbom.

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

U ovom trenutku, novi zapis se ubacuje u tabelu stavki u MySQL bazi podataka na čvoru corp-000 (host: vm1), i možete provjeriti njegovu replikaciju u PostgreSQL bazu podataka na čvoru store-001 (host: vm2). Vidimo operaciju povlačenja za premještanje podataka iz corp-000 u 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)

Za izvođenje Push operacije za premještanje podataka iz store-001 u corp-000, ubacujemo zapis u sale_transaction tablicu i potvrđujemo da je replikacija uspješna.

Rezultat.

Vidimo uspješno postavljanje dvosmjerne replikacije primjera tablica između MySQL i PostgreSQL baza podataka. Za postavljanje replikacije za nove korisničke tablice slijedite ove korake: Na primjer, kreiramo tablicu t1 i konfiguriramo njena pravila replikacije na sljedeći način. Na ovaj način konfigurišemo samo replikaciju od corp-000 do 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)

Konfiguracija se zatim obavještava o promjeni sheme, odnosno dodavanju nove tablice, koristeći naredbu symadmin s argumentom sync-triggers, koja ponovo kreira okidače za mapiranje definicija tablice. send-schema se izvršava za slanje promjena sheme u čvor store-001, a replikacija tablice t1 je konfigurirana.

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

Prednosti SymmetricDS-a

Jednostavna instalacija i konfiguracija, uključujući gotov set datoteka sa parametrima za kreiranje kola sa tri ili dva čvora.
Baze podataka na više platformi i nezavisnost od platforme, uključujući servere, laptopove i mobilne uređaje.
Replicirajte bilo koju bazu podataka u bilo koju drugu bazu podataka lokalno, na WAN-u ili u oblaku.
Mogućnost optimalnog rada sa nekoliko baza podataka ili nekoliko hiljada za pogodnu replikaciju.
Plaćena verzija sa GUI i odličnom podrškom.

Nedostaci SymmetricDS-a

Morate ručno definirati pravila i smjer replikacije na komandnoj liniji kroz SQL izraze da učitate kataloške tablice, što može biti nezgodno.
Postavljanje mnogih tablica za replikaciju može biti zamorno osim ako ne koristite skripte za kreiranje SQL izraza koji definiraju pravila i smjer replikacije.
U evidenciji se bilježi previše informacija, a ponekad je potrebno pospremiti log datoteku kako ne bi zauzimala previše prostora.

Rezultati za SymmetricDS

SymmetricDS vam omogućava da postavite dvosmjernu replikaciju između dva, tri ili čak nekoliko hiljada čvorova za replikaciju i sinhronizaciju datoteka. Ovo je jedinstveni alat koji samostalno obavlja mnoge zadatke, kao što je automatski oporavak podataka nakon dužeg perioda zastoja na čvoru, sigurna i efikasna razmjena podataka između čvorova putem HTTPS-a, automatsko upravljanje sukobima na osnovu skupa pravila, itd. SymmetricDS obavlja replikacija između bilo koje baze podataka, stoga se može koristiti za širok spektar scenarija, uključujući migraciju, migraciju, distribuciju, filtriranje i transformaciju podataka preko platformi.

Primjer je zasnovan na službenom brzi vodič od SymmetricDS. IN uputstvo za upotrebu Detaljno opisuje različite koncepte uključene u postavljanje replikacije sa SymmetricDS.

izvor: www.habr.com

Dodajte komentar