PostgreSQL eta MySQLren arteko erreplikazio gurutzatua

PostgreSQL eta MySQLren arteko erreplikazio gurutzatua

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 Hemen. Laginaren datu-basea tar eta konprimitutako artxibo gisa dator, kateak sortzeko eta inportatzeko argibideekin.

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.

Emaitza.

Esan dugun bezala, deabruek erreplikazio-funtzio guztiak kudeatzen dituzte. Horiek ikusteko, kontsultatu prozesu-taula Linux ps komandoarekin, behean erakusten den moduan.

Emaitza.

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 Hemen)

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 Hemen. Komando lerroko laguntza aurki daiteke Hemen.

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 lidergoaSymmetricDS tresnari buruz gehiago jakiteko.

SymmetricDS instalatzea erraza da: deskargatu kode irekiko zip fitxategia beraz, eta atera nahi duzun tokira. Hurrengo taulak SymmetricDS-ren instalazio-kokapena eta bertsioa zerrendatzen ditu adibide honetan, baita datu-baseen bertsioak, Linux-en bertsioak, IP helbideak eta bi nodoentzako portuak ere.

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.

Emaitza.

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 gida azkarra SymmetricDS-ren eskutik. IN erabiltzailearen eskuliburua Xehetasunez deskribatzen ditu SymmetricDS-ekin erreplikazioa konfiguratzean parte hartzen duten hainbat kontzeptu.

Iturria: www.habr.com

Gehitu iruzkin berria