Laburki hitz egingo dut PostgreSQL eta MySQL-ren arteko gurutze-erreplikazioari buruz, bai eta bi datu-base zerbitzari hauen arteko erreplikazio gurutzatua ezartzeko metodoez ere. Erreplika gurutzatutako datu-baseei datu-base homogeneoak deitzen zaie normalean, eta hau RDBMS zerbitzari batetik bestera migratzeko metodo erosoa da.
PostgreSQL eta MySQL datu-baseak tradizionalki erlazionaltzat hartzen dira, baina luzapen gehigarriekin NoSQL gaitasunak eskaintzen dituzte. Hemen PostgreSQL eta MySQL-ren arteko erreplikazioa eztabaidatuko dugu datu-base erlazionalaren kudeaketaren ikuspegitik.
Ez ditugu barneko guztiak deskribatuko, oinarrizko printzipioak soilik, datu-baseen zerbitzarien arteko erreplikazioa, abantailak, mugak eta erabilera kasuak konfiguratzeko ideia bat izan dezazun.
Normalean, bi datu-base zerbitzari berdinen arteko erreplikazioa modu bitarrean edo maisu baten (argitaratzailea, maisua edo aktiboa) eta esklabo baten (harpideduna, standbya edo pasiboa) arteko kontsulten bidez egiten da. Erreplikaren helburua erreserba aldean datu-base nagusiaren kopia denbora errealean eskaintzea da. Kasu honetan, datuak maisutik esklabora pasatzen dira, hau da, aktibotik pasibora, erreplikazioa norabide bakarrean egiten baita. Baina bi datu-baseen arteko erreplikazioa konfigura dezakezu bi noranzkoetan, datuak esklabotik maisurako konfigurazio aktibo-aktibo batean transferitzeko. Hori guztia, kaskadako erreplikazioa barne, datu-base zerbitzari berdinen bi edo gehiagoren artean posible da.Konfigurazio aktibo-aktibo edo aktibo-pasiboaren beharraren, gaitasun horien erabilgarritasunaren hasierako konfigurazioan edo kanpoko sintonizazio irtenbideen erabileraren eta lehendik dagoen merkataritzaren araberakoa da. - off .
Deskribatutako konfigurazioa datu-base zerbitzari desberdinen artean posible da. Zerbitzaria beste datu-base zerbitzari batetik erreplikatutako datuak jasotzeko konfiguratu daiteke eta, hala ere, erreplikatutako datuen denbora errealeko argazkiak gordetzeko. MySQL eta PostgreSQL-k konfigurazio horietako gehienak jatorrizko moduan edo hirugarrenen luzapenen bidez eskaintzen dituzte, erregistro bitar metodoak, diskoen blokeoak eta adierazpenetan eta errenkadan oinarritutako metodoak barne.
MySQL eta PostgreSQL-ren arteko erreplikazio gurutzatua beharrezkoa da datu-base zerbitzari batetik bestera behin-behineko migrazio baterako. Datu-base hauek protokolo desberdinak erabiltzen dituzte, beraz, ezin dituzu zuzenean lotu. Datu-trukea errazteko, kanpoko kode irekiko tresna bat erabil dezakezu, adibidez, pg_chameleon.
Zer da pg_chameleon
pg_chameleon MySQL-tik PostgreSQL-era Python 3-rako erreplikazio-sistema bat da. Mysql-replication kode irekiko liburutegia erabiltzen du, Python-en ere. Errenkadako irudiak MySQL tauletatik ateratzen dira eta JSONB objektu gisa gordetzen dira PostgreSQL datu-basean, eta, ondoren, pl/pgsql funtzioak deskodetzen dira eta PostgreSQL datu-basean erreproduzitzen dira.
pg_chameleon-en ezaugarriak
Kluster bereko MySQL eskema anitz erreplika daitezke PostgreSQL helburuko datu-base bakarrera, bat-to-askoren konfigurazioarekin
Iturburu eta xede eskema izenak ezin dira berdinak izan.
Erreplika-datuak MySQL kaskadako erreplika batetik berreskura daitezke.
Akatsak errepikatu edo sortu ezin dituzten taulak baztertzen dira.
Erreplikazio-funtzio bakoitza deabruek kontrolatzen dute.
Kontrola YAMLn oinarritutako parametro eta konfigurazio fitxategiekin.
Adibidea
Ostalaria
vm1
vm2
OS bertsioa
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64
Datu-base zerbitzariaren bertsioa
MySQL 5.7.26
PostgreSQL 10.5
DB ataka
3306
5433
IP helbidea
192.168.56.102
192.168.56.106
Lehenik eta behin, prestatu pg_chameleon instalatzeko beharrezko osagai guztiak. Adibide honek Python 3.6.8 instalatuta dauka, ingurune birtual bat sortu eta aktibatzen duena.
$> 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
Python3.6 behar bezala instalatuta dagoenean, gainerako baldintzak bete behar dira, hala nola ingurune birtual bat sortu eta aktibatzea. Gainera, pip modulua azken bertsiora eguneratzen da eta pg_chameleon instalatzeko erabiltzen da. Beheko komandoek nahita instalatzen dute pg_chameleon 2.0.9, nahiz eta azken bertsioa 2.0.10 izan. Hau beharrezkoa da eguneratutako bertsioan akats berriak saihesteko.
$> python3.6 -m venv venv
$> source venv/bin/activate
(venv) $> pip install pip --upgrade
(venv) $> pip install pg_chameleon==2.0.9
Ondoren, pg_chameleon deitzen dugu (chameleon komando bat da) set_configuration_files argumentuarekin pg_chameleon gaitzeko eta lehenetsitako konfigurazio direktorio eta fitxategiak sortzeko.
(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
Orain config-example.yml-ren kopia bat egiten dugu default.yml gisa, konfigurazio fitxategi lehenetsia izan dadin. Adibide honen konfigurazio-fitxategi lagin bat eskaintzen da behean.
$> 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:
Adibide honetako konfigurazio-fitxategia pg_chameleon fitxategi lagin bat da, aldaketa txikiekin iturburu eta xede-inguruneekin bat etortzeko, eta behean konfigurazio-fitxategiaren hainbat atalen ikuspegi orokorra dago.
default.yml konfigurazio-fitxategiak ezarpen globalen atal bat du (ezarpen globalak) non ezarpenak kontrola ditzakezu, hala nola blokeo-fitxategiaren kokapena, erregistroen kokapena, erregistroen biltegiratze-aldia, etab. Ondoren, mota gainidaztea dator. atalean, non erreplikazioan zehar motak gainidazteko ezarritako arauak. Adibide lehenetsiak tinyint(1) boolear bihurtzen duen mota gainidazteko arau bat erabiltzen du. Hurrengo atalean, helburuko datu-basera konektatzeko xehetasunak zehazten ditugu. Gure kasuan, hau PostgreSQL datu-base bat da, pg_conn bezala adierazita. Azken atalean, iturburu-datuak zehazten ditugu, hau da, iturburuko datu-basearen konexio-parametroak, iturburuko eta helburuko datu-baseen mapaketa-eskema, saltatu beharreko taulak, denbora-muga, memoria, paketearen tamaina. Kontuan izan "iturburuak" plurala dela, hots, iturburu-datu-base anitz gehi ditzakegula helburu berean, askotariko konfigurazio bat konfiguratzeko.
Adibideko world_x datu-baseak MySQL komunitateak adibiderako iradokitzen dituen errenkadak dituzten 4 taula ditu. Deskargatu daiteke
MySQL eta PostgreSQL datu-baseetan usr_replica izen bereko erabiltzaile berezi bat sortzen da. MySQL-k irakurtzeko sarbide gehigarria ematen dio errepikatutako taula guztiei.
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;
PostgreSQL aldean, MySQL datu-baseko aldaketak onartuko dituen db_replica datu-base bat sortzen da. PostgreSQL-n usr_replica erabiltzailea automatikoki konfiguratzen da bi eskemen jabe gisa pgworld_x eta sch_chameleon, zeinak erreplikatutako taulak eta erreplikazio-katalogoko taulak dituzten, hurrenez hurren. create_replica_schema argumentua konfigurazio automatikoaren arduraduna da, behean ikusiko duzun bezala.
postgres=# CREATE USER usr_replica WITH PASSWORD 'pass123';
CREATE ROLE
postgres=# CREATE DATABASE db_replica WITH OWNER usr_replica;
CREATE DATABASE
MySQL datu-basea aldaketa batzuekin konfiguratuta dago erreplikatzeko prest egon dadin, behean erakusten den moduan. Datu-basearen zerbitzaria berrabiarazi beharko duzu aldaketak indarrean egon daitezen.
$> vi /etc/my.cnf
binlog_format= ROW
binlog_row_image=FULL
log-bin = mysql-bin
server-id = 1
Orain garrantzitsua da bi datu-base zerbitzariekiko konexioa egiaztatzea, pg_chameleon komandoak exekutatzeko arazorik egon ez dadin.
PostgreSQL nodoan:
$> mysql -u usr_replica -Ap'admin123' -h 192.168.56.102 -D world_x
MySQL nodoan:
$> psql -p 5433 -U usr_replica -h 192.168.56.106 db_replica
Hurrengo hiru pg_chameleon (chameleon) komandoek ingurunea prestatzen dute, iturburua gehitu eta erreplika hasieratzen dute. pg_chameleon-en create_replica_schema argumentuak eskema lehenetsi bat (sch_chameleon) eta erreplikazio-eskema bat (pgworld_x) sortzen ditu PostgreSQL datu-basean, esan dugun bezala. add_source argumentuak iturburu-datu-base bat gehitzen dio konfigurazioari konfigurazio-fitxategia irakurriz (default.yml), hau da, gure kasuan mysql dena, eta init_replica-k konfigurazio-fitxategiko ezarpenetan oinarrituta hasten du konfigurazioa.
$> chameleon create_replica_schema --debug
$> chameleon add_source --config default --source mysql --debug
$> chameleon init_replica --config default --source mysql --debug
Hiru komando hauen irteerak argi adierazten du haien arrakasta. Hutsegite edo sintaxi akats guztiak mezu erraz eta ulergarrietan adierazten dira, arazoak konpontzeko aholkuekin.
Azkenik, start_replica-rekin hasten gara erreplikatzea eta arrakasta-mezua jasoko dugu.
$> chameleon start_replica --config default --source mysql
output: Starting the replica process for source mysql
Erreplikatze-egoera show_status argumentuarekin kontsulta daiteke eta erroreak show_errors argumentuarekin ikus daitezke.
Esan dugun bezala, deabruek erreplikazio-funtzio guztiak kudeatzen dituzte. Horiek ikusteko, kontsultatu prozesu-taula Linux ps komandoarekin, behean erakusten den moduan.
Erreplikazioa ez da konfiguratuta hartzen denbora errealean probatzen dugun arte, behean erakusten den moduan. Taula bat sortzen dugu, erregistro pare bat MySQL datu-basean txertatzen dugu eta pg_chameleon-en sync_tables argumentua deitzen dugu deabruak eguneratzeko eta erregistroekin taula PostgreSQL datu-basean errepikatzeko.
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.
Probaren emaitzak balioztatzeko, PostgreSQL datu-basetik taula kontsultatzen dugu eta errenkadak ateratzen ditugu.
$> psql -p 5433 -U usr_replica -d db_replica -c "select * from pgworld_x.t1";
n1 | n2
----+-------
1 | one
2 | two
Migratzen ari bagara, pg_chameleon komando hauek migrazioaren amaiera izango dira. Komandoak helburu-taula guztien errenkadak errepikatu direla egiaztatu ondoren exekutatu behar dira, eta, ondorioz, txukun migratutako PostgreSQL datu-base bat sortu da, iturburuko datu-baseari edo erreplikazio-eskemari erreferentziarik gabe (sch_chameleon).
$> chameleon stop_replica --config default --source mysql
$> chameleon detach_replica --config default --source mysql --debug
Aukeran, jatorrizko konfigurazioa eta erreplikazio-eskema ezaba ditzakezu komando hauekin.
$> chameleon drop_source --config default --source mysql --debug
$> chameleon drop_replica_schema --config default --source mysql --debug
pg_chameleon-en onurak
Konfigurazio eta konfigurazio erraza.
Arazoak konpontzeko eta anomaliak hautemate erosoa errore-mezu argiekin.
Taula berezi gehigarriak gehi daitezke erreplikaziora hasieratu ondoren, gainerako konfigurazioa aldatu gabe.
Helburuko datu-base baterako hainbat iturri-datu-base konfiguratu daitezke, eta hau oso erabilgarria da MySQL datu-base bateko edo gehiagoko datuak PostgreSQL datu-base batean batzen badituzu.
Hautatutako taulak ez errepikatzea aukera dezakezu.
pg_chameleon-en desabantailak
MySQL 5.5 eta berriekin soilik onartzen da iturburu gisa eta PostgreSQL 9.5 eta berriekin helburu datu-base gisa.
Taula bakoitzak gako nagusi edo esklusibo bat izan behar du, bestela init_replica prozesuan hasieratzen dira taulak baina ez dira errepikatzen.
Norabide bakarreko erreplikazioa - MySQL-tik PostgreSQL-era soilik. Hori dela eta, eskema aktibo-pasiborako bakarrik da egokia.
Iturburua MySQL datu-base bat bakarrik izan daiteke, eta PostgreSQL datu-base baten laguntza iturri gisa esperimentala eta mugatua baino ez da (lortu informazio gehiago
pg_chameleon-en guztirakoak
pg_chameleon-en erreplikazio-metodoa bikaina da MySQL-tik PostgreSQL-ra datu-base bat migratzeko. Alde txarra da erreplikazioa norabide bakarrekoa dela, beraz, datu-baseen profesionalek nekez erabili nahi izango dute migraziorako beste ezertarako. Baina norabide bakarreko erreplikazioaren arazoa kode irekiko beste tresna batekin konpon daiteke - SymmetricDS.
Irakurri gehiago dokumentazio ofizialean
SymmetricDS-ren ikuspegi orokorra
SymmetricDS kode irekiko tresna bat da, edozein datu-basea beste edozein datu-base arruntetan errepikatzen duena: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird eta hodeiko beste datu-baseen instantzia batzuk, adibidez Redshift, eta Azure, etab. Eskuragarri dauden ezaugarriak: datu-base eta fitxategien sinkronizazioa, maisu anitzeko datu-baseen erreplikazioa, iragazitako sinkronizazioa, eraldaketa eta beste. Hau Java tresna bat da eta JRE edo JDK bertsio estandarra behar du (8.0 bertsioa edo berriagoa). Hemen iturburuko datu-basean abiarazleen datu-aldaketak graba ditzakezu eta dagokion helburuko datu-basera bidal ditzakezu lote gisa.
SymmetricDS Gaitasunak
Tresna plataforma independentea da, hau da, bi datu-base ezberdin edo gehiagok datuak trukatu ditzakete.
Erlazio datu-baseak datu-aldaketak erregistratuz sinkronizatzen dira, eta fitxategi-sistemetan oinarritutako datu-baseek fitxategi-sinkronizazioa erabiltzen dute.
Bi norabideko erreplikazioa arau multzo batean oinarritutako push eta pull metodoak erabiliz.
Datuen transmisioa posible da sare seguruen bidez eta banda zabalera txikiko sareetan.
Berreskuratze automatikoa porrot baten ondoren nodoak berriro hasten direnean eta gatazkak automatikoki konpontzea.
Hodei bateragarriak eta eraginkorrak diren luzapen APIak.
Adibidea
SymmetricDS bi modu hauetako batean konfigura daiteke:
Nodo nagusia (gurasoa) bi nodo esklaboen (seme-alaben) arteko datuen erreplikazioa zentralki koordinatzen duena, eta nodo seme-alaben arteko datu-trukea gurasoaren bidez bakarrik egiten da.
Nodo aktibo bat (1 nodoa) beste nodo aktibo batekin (2 nodoa) erreplikatzeko komunikatu daiteke bitartekaririk gabe.
Bi aukeretan, datu-trukea Push eta Pull erabiliz gertatzen da. Adibide honetan, aktibo-aktibo konfigurazioa kontuan hartuko dugu. Luzeegia da arkitektura osoa deskribatzeko, beraz, aztertu
SymmetricDS instalatzea erraza da: deskargatu kode irekiko zip fitxategia
Ostalaria
vm1
vm2
OS bertsioa
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64
Datu-base zerbitzariaren bertsioa
MySQL 5.7.26
PostgreSQL 10.5
DB ataka
3306
5832
IP helbidea
192.168.1.107
192.168.1.112
SymmetricDS bertsioa
SimetrikoaDS 3.9
SimetrikoaDS 3.9
SymmetricDS instalazio-bidea
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20
SymmetricDS ostalariaren izena
corp-000
denda-001
Hemen SymmetricDS instalatzen dugu /usr/local/symmetric-server-3.9.20-n eta hainbat azpidirektorio eta fitxategi gordeko dira bertan. Azpidirektorioen laginak eta motorrak interesatzen zaizkigu. Laginen direktorioak nodoen propietateak dituzten konfigurazio-fitxategiak ditu, baita demoa azkar hasteko SQL script-ak ere.
Laginen direktorioan, hiru konfigurazio fitxategi ikusiko ditugu nodoen propietateekin; izenak eskema jakin batean nodoaren izaera erakusten du.
corp-000.properties
store-001.properties
store-002.properties
SymmetricDS-k oinarrizko 3 nodo eskema baterako beharrezko konfigurazio fitxategi guztiak ditu (1 aukera) eta fitxategi berak erabil daitezke 2 nodo eskema baterako (2 aukera). Kopiatu behar den konfigurazio-fitxategia laginen direktoriotik vm1 ostalariaren motorretara. Honela ateratzen da:
$> 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
Nodo honi corp-000 deitzen zaio SymmetricDS konfigurazioan eta datu-basearen konexioa goiko konexio-katea eta saioa hasteko kredentzialak erabiltzen dituen mysql jdbc kontrolatzaileak kudeatzen du. replica_db datu-basera konektatzen ari gara eta eskema sortzean taulak sortuko dira. sync.url-ek sinkronizatzeko nodorako esteka erakusten du.
vm2 ostalariaren 2 nodoa store-001 gisa konfiguratuta dago eta gainerakoa beheko node.properties fitxategian zehazten da. Store-001 nodoak PostgreSQL datu-basea exekutatzen du, eta pgdb_replica da errepikatu beharreko datu-basea. registration.url-ek vm2 ostalari vm1 ostalariarekin harremanetan jartzeko eta bertatik konfigurazio xehetasunak lortzeko aukera ematen du.
$> 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
Osatutako SymmetricDS adibidean bi datu-baseko zerbitzarien artean (bi nodo) bi norabideko erreplikazioa konfiguratzeko aukerak daude. Beheko urratsak ostalariaren vm1 (corp-000) egiten dira, 4 taulekin lagin-eskema bat sortuko duena. Gero, create-sym-tables symadmin komandoarekin exekutatzen baduzu, direktorio-taulak sortzen dira, non nodoen arteko erreplikazioaren arauak eta norabidea gordeko diren. Azkenik, laginaren datuak tauletan kargatzen dira.
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
Adibidean, item eta item_selling_price taulak automatikoki konfiguratzen dira corp-000-tik denda-001era erreplikatzeko, eta salmenta-taulak (sale_transaction eta sale_return_line_item) automatikoki konfiguratzen dira denda-001-tik corp-000-ra errepikatzeko. Orain eskema bat sortzen dugu PostgreSQL datu-basean host vm2 (store-001) corp-000-tik datuak jasotzeko prestatzeko.
vm2$> cd /usr/local/symmetric-server-3.9.20/bin
vm2$> ./dbimport --engine store-001 --format XML create_sample.xml
Ziurtatu vm1-eko MySQL datu-baseak lagin-taulak eta SymmetricDS katalogo-taula dituela. Kontuan izan SymmetricDS sistema-taulak (sym_ aurrizkiarekin) une honetan corp-000 nodoan soilik erabilgarri daudela, hortxe exekutatu dugulako create-sym-tables komandoa eta erreplikazioa kudeatuko dugulako. Eta denda-001 nodoko datu-basean 4 adibideko taula baino ez dira egongo daturik gabe.
Denak. Ingurunea prest dago sym zerbitzariaren prozesuak bi nodoetan exekutatzeko behean erakusten den moduan.
vm1$> cd /usr/local/symmetric-server-3.9.20/bin
vm1$> sym 2>&1 &
Erregistro-sarrerak SymmetricDS instalatuta dagoen direktorioko erregistro-karpeta atzeko planora (symmetric.log) bidaltzen dira, baita irteera estandarrera ere. Sym zerbitzaria store-001 nodoan abiarazi daiteke.
vm2$> cd /usr/local/symmetric-server-3.9.20/bin
vm2$> sym 2>&1 &
Sym zerbitzariaren prozesua vm2 ostalarian exekutatzen baduzu, SymmetricDS katalogoko taulak sortuko ditu PostgreSQL datu-basean. Sym zerbitzariaren prozesua bi nodoetan exekutatzen baduzu, elkarrekin koordinatuko dira corp-000-tik store-001-era datuak errepikatzeko. Segundo gutxiren buruan bi aldeetako 4 taulak kontsultatzen baditugu, erreplikazioa arrakastatsua izan dela ikusiko dugu. Edo bootstrap bidal dezakezu store-001 corp-000-tik hurrengo komandoarekin.
vm1$> ./symadmin --engine corp-000 reload-node 001
Une honetan, erregistro berri bat txertatzen da corp-000 nodoko MySQL datu-baseko elementuen taulan (ostalaria: vm1) eta PostgreSQL datu-basean erreplika daitekeela egiaztatu daiteke nodo-denda-001 (ostalaria: vm2). Pull eragiketa bat ikusten dugu datuak corp-000-tik denda-001era eramateko.
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)
Datuak store-001-tik corp-000-ra eramateko push eragiketa bat egiteko, erregistro bat txertatzen dugu sale_transaction taulan eta egiaztatzen dugu erreplikazioa amaitu dela.
MySQL eta PostgreSQL datu-baseen arteko adibide-taulen bi norabideko erreplikazioaren konfigurazio arrakastatsua ikusten dugu. Erabiltzaile-taulen erreplikazioa konfiguratzeko, egin urrats hauek. Adibidez, t1 taula sortzen dugu eta bere erreplikazio-arauak honela ezartzen ditugu. Beraz, corp-000-tik denda-001-era erreplikazioa soilik ezarri dugu.
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)
Ondoren, konfigurazioari eskema aldaketaren berri ematen zaio, hau da, taula berri bat gehitzeaz, symadmin komandoa erabiliz sync-triggers argumentuarekin, eta horrek abiarazleak birsortzen ditu taularen definizioekin bat etortzeko. Send-schema exekutatzen da eskema-aldaketak store-001era bidaltzeko, eta t1 taula errepikatzen da.
vm1$> ./symadmin -e corp-000 --node=001 sync-triggers
vm1$> ./symadmin send-schema -e corp-000 --node=001 t1
SymmetricDS-ren abantailak
Instalazio eta konfigurazio erraza, hiru edo bi nodo dituen eskema bat sortzeko parametroak dituzten fitxategi-multzo prestatua barne.
Plataforma anitzeko datu-baseak eta plataformaren independentzia, zerbitzariak, ordenagailu eramangarriak eta gailu mugikorrak barne.
Erreplikatu edozein datu-base beste edozein datu-base lokalean, WAN-en edo hodeian.
Datu-base pare batekin edo hainbat milakarekin modu ezin hobean lan egiteko gaitasuna erraz errepikatzeko.
Ordainpeko bertsioa GUI eta laguntza bikainarekin.
SymmetricDS-ren desabantailak
Eskuz definitu behar dituzu komando-lerroko erreplikaren arauak eta norabidea SQL instrukzioen bidez katalogo-taulak kargatzeko, eta hori deserosoa izan daiteke.
Erreplikaziorako taula asko konfiguratzea aspergarria izan daiteke, erreplikaren arauak eta norabidea definitzen duten SQL adierazpenak sortzeko script-ak erabiltzen ez badituzu.
Erregistroetan informazio gehiegi dago, eta batzuetan erregistro-fitxategia garbitu behar duzu leku gehiegi okupa ez dezan.
SymmetricDS-ren laburpena
SymmetricDS-k bi, hiru edo hainbat mila nodoren artean bi norabideko erreplikazioa konfiguratzeko aukera ematen du, fitxategiak errepikatu eta sinkronizatzeko. Bere kabuz zeregin asko egiten dituen tresna paregabea da, hala nola, nodo batean geldialdi luze baten ondoren datuak berreskuratu automatikoki, HTTPS bidez nodoen arteko komunikazio seguru eta eraginkorra, arau multzo batean oinarritutako gatazkak automatikoki kudeatzea, etab. SymmetricDS errepikatzen da. edozein datu-baseren artean, beraz, hainbat agertokitarako erabil daiteke, migrazio, berritze, banaketa, iragazketa eta datuen eraldaketa plataformetan barne.
Adibidea ofizialean oinarritzen da
Iturria: www.habr.com