
Annan ĂŒlevaate ristrepikatsioonist PostgreSQL-i ja MySQL-i vahel ning meetoditest nende andmebaasisĂŒsteemide vahelise ristrepikatsiooni seadistamiseks. Ăldiselt peetakse ristrepikatsiooni allikaid homogeenseteks, ning see on mugav meetod liikuda ĂŒhest relatsioonilisest andmebaasisĂŒsteemist teise.
PostgreSQL-i ja MySQL-i andmebaasid peetakse relatsioonilisteks, kuid koos lisandustega pakuvad nad ka NoSQL vĂ”imalusi. RÀÀgime PostgreSQL-i ja MySQL-i vahelisest repikatsioonist relatsiooniliste andmebaasisĂŒsteemide perspektiivist.
Me ei kirjeldada kogu sisemist toimingut, vaid ainult pÔhialuseid, et te saaksite aimu andmebaasiserverite vahelise repikatsiooni seadistamisest, selle eelistest, piirangutest ja kasutusstsenaariumidest.
Replikatsioon kahe identse andmebaasiserveri vahel toimub tavaliselt kas binaarses reĆŸiimis vĂ”i pĂ€ringute kaudu peamise sĂ”lme (tuntud ka kui vĂ€ljaandja, peamine vĂ”i aktiivne) ja alam-sĂ”lme (tellija, oote- vĂ”i passiivne) vahel. Replikatsiooni eesmĂ€rk on reaalajas edastada peamise andmebaasi koopia alam-sĂ”lmele. Andmed edastatakse peamiselt alammele, see tĂ€hendab aktiivsest passiivsesse, kuna replikatsioon toimub ainult ĂŒhes suunas. Siiski on vĂ”imalik seadistada replikatsioon kahe andmebaasi vahel mĂ”lemas suunas, nii et andmed edastatakse alam-sĂ”lmest peamisele, luues âaktiivne-aktiivneâ konfiguratsiooni. KĂ”ik see, sealhulgas kaskaad-replikatsioon, on vĂ”imalik kahe vĂ”i enama identse andmebaasiserveri vahel. âAktiivne-aktiivneâ vĂ”i âaktiivne-passiivneâ konfiguratsioon sĂ”ltub vajadusest, nende vĂ”imaluste olemasolust algses konfiguratsioonis vĂ”i vĂ€listest lahendustest, mis on vajalikud seadistamiseks ja olemasolevate kompromisside tegemiseks.
Kirjeldatud konfiguratsioon on vÔimalik erinevate andmebaasi serverite vahel. Serverit saab seadistada teiste andmebaasi serverite replitseeritud andmete vastuvÔtmiseks, sÀilitades samas reaalajas replitseeritud andmete stseenid. MySQL ja PostgreSQL pakuvad enamikku neist konfiguratsioonidest oma jÔududega vÔi kolmandate osapoolte laienduste abil, sealhulgas binaarsete logide, kettalukkude ja operaatorite ning ridade pÔhiste meetodite abil.
Ristreplikatsioon MySQL ja PostgreSQL vahel on vajalik ĂŒhekordseks migreerimiseks ĂŒhelt andmebaasi serverilt teisele. Need andmebaasid kasutavad erinevaid protokolle, seetĂ”ttu ei saa neid otse siduda. Andmete vahetamiseks saab kasutada vĂ€liseid avatud lĂ€htekoodiga tööriistu, nĂ€iteks pg_chameleon.
Mis on pg_chameleon
pg_chameleon on replikatsiooni sĂŒsteem MySQL'ist PostgreSQL'i, mis on loodud Python 3 peal. See kasutab avatud lĂ€htekoodiga mysql-replication teeki, samuti Pythonis. Ridade pildid tĂ”mmatakse MySQL tabelitest ja salvestatakse PostgreSQL andmebaasis JSONB objektidena, seejĂ€rel deĆĄifreeritakse pl/pgsql funktsiooni abil ja taastatakse PostgreSQL andmebaasis.
pg_chameleon omadused
Ăhe klaster MySQL-i mitu skeemi saab replitseerida ĂŒhte siht PostgreSQL andmebaasi konfiguratsiooniga âĂŒks-ĂŒheleâ.
Algse ja sihiskeemi nimed ei saa kattuda.
Replitseeritud andmeid saab saada MySQL-i kaskaadiga replika kaudu.
Tabelid, mis ei saa replitseerida vÔi pÔhjustavad vigu, jÀetakse vÀlja.
Iga replitseerimisfunktsiooni haldavad daemonid.
Kontroll YAML-pÔhiste parameetrite ja konfiguratsioonifailide abil.
NĂ€ide
Host
vm1
vm2
OS-i versioon
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64
Andmebaasi serveri versioon
MySQL 5.7.26
PostgreSQL 10.5
Andmebaasi port
3306
5433
IP-aadress
192.168.56.102
192.168.56.106
Esiteks valmistage kÔik vajalikud komponendid pg_chameleon'i installimiseks. Selles nÀites on installitud Python 3.6.8, mis loob virtuaalse keskkonna ja aktiveerib selle.
$> 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 altinstallPĂ€rast Python3.6 edukat installimist tuleb tĂ€ita ĂŒlejÀÀnud nĂ”uded, nĂ€iteks luua ja aktiveerida virtuaalne keskkond. Lisaks uuendatakse pip-moodul viimasele versioonile ja seda kasutatakse pg_chameleon'i installimiseks. Allpool olevates kĂ€skudes installitakse tahtlikult pg_chameleon 2.0.9, kuigi viimane versioon on 2.0.10. See on vajalik, et vĂ€ltida uusi vigu uuendatud versioonis.
$ > python3.6 -m venv venv
$ > source venv/bin/activate
(venv) $ > pip install pip --upgrade
(venv) $ > pip install pg_chameleon==2.0.9SeejÀrel kutsume pg_chameleon'i (chameleon on kÀsk) argumentidega set_configuration_files, et aktiveerida pg_chameleon ja luua vaike kataloogid ja konfiguratsioonifailid.
(venv) $ > chameleon set_configuration_files
loome katalooge /root/.pg_chameleon
loome katalooge /root/.pg_chameleon/configuration/
loome katalooge /root/.pg_chameleon/logs/
loome katalooge /root/.pg_chameleon/pid/
kopeerime konfiguratsiooni nĂ€ite failisse /root/.pg_chameleon/configuration//config-example.ymlNĂŒĂŒd loome faili config-example.yml koopia nimega default.yml, et sellest saaks vaike konfiguratsioonifail. Selle nĂ€idisfaili konfiguratsioon on toodud allpool.
$> cat default.yml
---
#globaal seadistused
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 vĂ”imaldab kasutajal muuta vaikimisi tĂŒĂŒbi teisendamine teiseks.
type_override:
"tinyint(1)":
override_to: boolean
override_tables:
- "*"
#postgresi sihtkoha ĂŒhendus
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 pÀev'
copy_max_memory: "300M"
copy_mode: 'file'
out_dir: /tmp
sleep_loop: 1
on_error_replay: continue
on_error_read: continue
auto_maintenance: "keelatud"
gtid_enable: No
type: mysql
skip_events:
insert:
- delphis_mediterranea.foo #vahetab vÀlja sisestused tabelis delphis_mediterranea.foo
delete:
- delphis_mediterranea #vahetab vÀlja kustutused skeemis delphis_mediterranea
update:Konfiguratsioonifail selles nĂ€ites on pg_chameleon'i fail, millel on vĂ€ikesed muudatused vastavalt alg- ja sihtkeskkondadele. Allpool on ĂŒlevaade konfiguratsioonifaili erinevatest jaotustest.
Faili konfiguratsioonis default.yml on globaalsete parameetrite (global settings) jaotis, kus saab hallata selliseid seadeid nagu lukufaili asukoht, logide asukoht, logide sĂ€ilitamise periood jne. JĂ€rgneb tĂŒĂŒpide ĂŒlekirjutamise (type override) jaotis, kus on mÀÀratud reeglite kogum tĂŒĂŒpide ĂŒlekirjutamiseks replikeerimise ajal. VaikesnĂ€idisena kasutatakse tĂŒĂŒpide ĂŒlekirjutamise reeglit, mis muundab tinyint(1) loogiliseks vÀÀrtuseks. JĂ€rgmisel jaotisel mÀÀrame ĂŒhenduse ĂŒksikasjad sihtandmebaasiga. Meie juhul on see PostgreSQL andmebaas, mille tĂ€histamine on pg_conn. Viimases jaotises mÀÀrame lĂ€hteandmete andmed, st lĂ€htandmebaasi ĂŒhenduse parameetrid, lĂ€hte- ja sihtandmebaasi skeemi vastavuse, tabelid, mida tuleb vahele jĂ€tta, ooteaeg, mĂ€lu, pakendi suurus. Pange tĂ€hele, et âsourcesâ on mitmuses, seega saame lisada mitu lĂ€hteandmebaasi ĂŒhe sihtandmebaasi jaoks, et seadistada âmitu ĂŒheleâ konfiguratsioon.
NÀidis andmebaas world_x sisaldab 4 tabelit ridadega, mille MySQLi kogukond on nÀitena pakkunud. Selle saab alla laadida. . NÀidis andmebaas tuleb tar- ja pakitud arhiivina koos juhistega ridade loomise ja importimise kohta.
MySQLis ja PostgreSQLis luuakse eriline kasutaja nimega usr_replica. MySQLis antakse talle tÀiendavad Ôigused kÔigi replikeeritavate tabelite lugemiseks.
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;PostgreSQLi poolel luuakse andmebaas db_replica, mis aktsepteerib muudatusi MySQLi andmebaasist. Kasutaja usr_replica PostgreSQLis konfigureeritakse automaatselt kahe skeemi pgworld_x ja sch_chameleon omanikuks, mis sisaldavad vastavalt tegelikke replikeeritud tabeleid ja replikatsiooni katalooge. Automaatse konfiguratsiooni eest vastutab argument create_replica_schema, nagu nÀete allpool.
postgres=# CREATE USER usr_replica WITH PASSWORD 'pass123';
CREATE ROLE
postgres=# CREATE DATABASE db_replica WITH OWNER usr_replica;
CREATE DATABASEMySQL andmebaas konfigureeritakse mÔningate parameetrite muutmisega, et valmistada see ette replikatsiooniks, nagu allpool nÀidatud. Andmebaasi server tuleb taaskÀivitada, et muudatused jÔustuksid.
$> vi /etc/my.cnf
binlog_format= ROW
binlog_row_image=FULL
log-bin = mysql-bin
server-id = 1Praegu on oluline kontrollida ĂŒhendust mĂ”lema andmebaasi serveriga, et pg_chameleon'i kĂ€ivitamisel ei tekiks probleeme.
PostgreSQL sÔlmes:
$> mysql -u usr_replica -Ap'admin123' -h 192.168.56.102 -D world_xMySQL sÔlmes:
$> psql -p 5433 -U usr_replica -h 192.168.56.106 db_replicaJÀrgmised kolm kÀsku pg_chameleon (chameleon) valmistavad keskkonna ette, lisavad allika ja initsialiseerivad replikatsiooni. Argument create_replica_schema pg_chameleon'is loob vaikimisi skeemi (sch_chameleon) ja replikatsiooniskeemi (pgworld_x) PostgreSQL andmebaasis, nagu oleme juba maininud. Argument add_source lisab allika andmebaasi konfiguratsiooni, lugedes konfiguratsioonifaili (default.yml), ja meie juhul on see mysql, ning init_replica initsialiseerib konfiguratsiooni, lÀhtudes failis mÀÀratud parameetritest.
$> chameleon create_replica_schema --debug
$> chameleon add_source --config default --source mysql --debug
$> chameleon init_replica --config default --source mysql --debugNende kolme kĂ€su vĂ€ljund nĂ€itab selgelt nende eduka tĂ€itmise. KĂ”ik tĂ”rked vĂ”i sĂŒntaksivead kuvatakse lihtsate ja arusaadavate sĂ”numitega koos vihjete jaotamiseks probleemide parandamiseks.
LÔpuks alustame replikatsiooni start_replica abil ja saame sÔnumi eduka tÀitmise kohta.
$> chameleon start_replica --config default --source mysql
output: Alustamine replikatsiooni protsessi allika mysql jaoksReplikatsiooni staatust saab kĂŒsida show_status argumendi abil ja vigu vaadata show_errors argumendi kaudu.
Kuidas juba mainitud, kontrollivad iga replikatsiooni funktsiooni deemonid. Deemonite vaatamiseks kĂŒsime Linuxi protsesside tabelit kĂ€suga ps, nagu allpool nĂ€idatud.
Replikatsioon ei loeta seadistunuks, kui me ei testi seda reaalajas, nagu allpool nÀidatud. Loome tabeli, sisestame paar kirjeid MySQL andmebaasi ja kutsume pg_chameleon'is vÀlja sync_tables argumendi, et vÀrskendada deemonid ja replitseerimise tabel andmetega PostgreSQL andmebaasis.
mysql> create table t1 (n1 int primary key, n2 varchar(10));
KĂŒsimus OK, 0 rida mĂ”jutatud (0.01 sek)
mysql> insert into t1 values (1,'one');
KĂŒsimus OK, 1 rida mĂ”jutatud (0.00 sek)
mysql> insert into t1 values (2,'two');
KĂŒsimus OK, 1 rida mĂ”jutatud (0.00 sek)$> chameleon sync_tables --tables world_x.t1 --config default --source mysql
Andmete sĂŒnkroniseerimise protsess allikast mysql on alanud.Testitulemuste kinnitamiseks kĂŒsime tabelit PostgreSQL andmebaasist ja vĂ€ljundime read.
$> psql -p 5433 -U usr_replica -d db_replica -c "select * from pgworld_x.t1";
n1 | n2
----+-------
1 | ĂŒks
2 | kaksKui teeme migreerimist, siis jĂ€rgmised pg_chameleoni kĂ€sud lĂ”petavad selle. KĂ€sud tuleb tĂ€ita pĂ€rast seda, kui oleme kinnitanud, et kĂ”iki sihttabeleid on replitseeritud, ja tulemuseks on korralikult ĂŒle viidud PostgreSQL andmebaas, millel ei ole viiteid algsele andmebaasile ega replikatsiooniskeemile (sch_chameleon).
$> chameleon stop_replica --config default --source mysql
$> chameleon detach_replica --config default --source mysql --debugSoovi korral saab jÀrgmiste kÀskudega algse konfiguratsiooni ja replikatsiooniskeemi eemaldada.
$> chameleon drop_source --config default --source mysql --debug
$> chameleon drop_replica_schema --config default --source mysql --debugpg_chameleoni eelised
Lihtne seadistamine ja konfigureerimine.
Mugav tÔrkeotsing ja anomaaliate tuvastamine arusaadavate veateadete abil.
Replikatsiooni saab lisada tĂ€iendavaid spetsiaalseid tabeleid pĂ€rast initsialiseerimist, muutes ĂŒlejÀÀnud konfiguratsiooni.
Saate seadistada mitu lĂ€hteandmebaasi ĂŒhe sihtandmebaasi jaoks, mis on vĂ€ga mugav, kui ĂŒhendate andmeid ĂŒhest vĂ”i mitmest MySQL andmebaasist PostgreSQL andmebaasis.
Valitud tabeleid ei ole vÔimalik replikeerida.
pg_chameleon puudused
Toetatakse ainult MySQL 5.5 ja uuemaid versioone allikaks ning PostgreSQL 9.5 ja uuemaid versioone sihtandmebaasina.
Igal tabelil peab olema peamine vÔi unikaalne vÔti, vastasel juhul initsialiseeritakse tabelid init_replica protsessi kÀigus, kuid neid ei replikeerita.
Ăhesuunaline replikeerimine â ainult MySQL-st PostgreSQL-i. SeetĂ”ttu sobib see ainult 'aktiivne-passiivne' skeemile.
Allikas vÔib olla ainult MySQL andmebaas, samas on PostgreSQL andmebaasi toetamine allikana alles katsetamisfaasis ja piirangutega (saate rohkem teada )
KokkuvÔtted pg_chameleonist
pg_chameleon replikeerimismeetod sobib suurepĂ€raselt andmebaasi migreerimiseks MySQL-ist PostgreSQL-i. Oluline puudus on see, et replikeerimine on ainult ĂŒhesuunaline, mistĂ”ttu andmebaasi spetsialistid tĂ”enĂ€oliselt ei soovi seda kasutada millegi muu jaoks peale migreerimise. Kuid ĂŒhesuunalise replikeerimise probleemi saab lahendada veel ĂŒhe avatud lĂ€htekoodiga tööriista â SymmetricDS.
Lisage rohkem teavet ametlikus dokumentatsioonis . KĂ€skude rida aitab leida .
SymmetricDS ĂŒlevaade
SymmetricDS on avatud lĂ€htekoodiga tööriist, mis replikeerib mis tahes andmebaasi igasse teise tuntud andmebaasi: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird ja teised pilveandmebaasid, nĂ€iteks Redshift ja Azure jne. Saadaval on funktsioonid: andmebaaside ja failide sĂŒnkroniseerimine, mitme juhtiva andmebaasi replikatsioon, filtreeritud sĂŒnkroniseerimine, andmete muutmine ja palju muud. See on Java tööriist ja nĂ”uab standardset JRE vĂ”i JDK versiooni 8.0 vĂ”i kĂ”rgemat. Siin on vĂ”imalik salvestada andme muutusi algandmebaasi trikkide kaudu ja edastada need vastavasse sihtandmebaasi pakettidena.
SymmetricDS funktsioonid
Tööriist ei sÔltu platvormist, see tÀhendab, et kaks vÔi enam erinevat andmebaasi saavad vahetada andmeid.
Relatiivsed andmebaasid sĂŒnkroniseeritakse andme muudatuste salvestamise teel, samas kui failisĂŒsteemide pĂ”hised andmebaasid kasutavad failide sĂŒnkroniseerimist.
Kahepoolne replikatsioon Push ja Pull meetodite kaudu, mis pÔhinevad reeglite kogumil.
Andmete edastus on vÔimalik kaitstud vÔrkudes ja madala lÀbilaskevÔimega vÔrkudes.
Automaatne taastamine pÀrast sÔlmede tööd taasalkavandamist ja automaatne konfliktide lahendamine.
Ăhildatavus pilves ja efektiivsed API laiendusi.
NĂ€ide
SymmetricDS-i saab seadistada ĂŒhe kahest variandist:
Juht (vanem) sĂ”lm, mis keskset koordineerib andmete replikatsiooni kahe alam (tĂŒtar) sĂ”lme vahel ning andmevahetus tĂŒtar sĂ”lmede vahel toimub ainult vanema kaudu.
Aktiivne sÔlm (sÔlm 1) saab andmeid replikatsiooni jaoks vahetada teise aktiivse sÔlmega (sÔlm 2) ilma vahendajata.
MÔlemal variandil toimub andmevahetus Push ja Pull kaudu. KÀesolevas nÀites vaatame 'aktiivne-aktiivne' konfiguratsiooni. Kogu arhitektuuri kirjeldamine vÔtaks liiga kaua aega, seetÔttu uurige , et rohkem teada saada SymmetricDS-i seadistusest.
SymmetricDS-i paigaldamine on vÀga lihtne: laadige alla avatud lÀhtekoodiga zip-faili versioon. ja tÔmmake see vÀlja, kuhu soovite. Allolevas tabelis on toodud SymmetricDS paigalduskoht ja versioon antud nÀites, samuti andmebaaside versioonid, Linuxi versioonid, IP-aadressid ja sadamad mÔlemale sÔlmele.
Host
vm1
vm2
OS-i versioon
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64
Andmebaasi serveri versioon
MySQL 5.7.26
PostgreSQL 10.5
Andmebaasi port
3306
5832
IP-aadress
192.168.1.107
192.168.1.112
SymmetricDS versioon
SymmetricDS 3.9
SymmetricDS 3.9
SymmetricDS paigaldusteekond
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20
SymmetricDS sÔlme nimi
corp-000
store-001
Siin paigaldame SymmetricDS aadressile /usr/local/symmetric-server-3.9.20, kus hoitakse erinevaid alakaustu ja faile. Meid huvitavad alakaustad samples ja engines. Kaustas samples leidub nÀidis konfiguratsioonifaile sÔlme omadustega ning SQL skriptide nÀidiseid kiireks demonstratsiooniks.
Kaustas samples nĂ€eme kolme konfiguratsioonifaili sĂ”lme omadustega â nimi nĂ€itab sĂ”lme iseloomu teatud skeemis.
corp-000.properties
store-001.properties
store-002.propertiesSymmetricDS-l on kÔik vajalikud konfiguratsioonifailid kolme sÔlmega pÔhiskeemi jaoks (valik 1), ja samu faile saab kasutada ka kahe sÔlmega skeemis (valik 2). Kopsime vajaliku konfiguratsioonifaili kaustast samples kausta engines hostis vm1. Tulemus on jÀrgmine:
$> 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=000Selle SymmetricDS konfiguratsiooni sĂ”lm on nimetatud corp-000, ja andmebaasi ĂŒhendust haldab mysql jdbc draiver, mis kasutab ĂŒlaltoodud ĂŒhendusstringi ja sissepÀÀsukrediite. Oleme ĂŒhendatud database replica_db ja skeemi loomisel luuakse tabelid. sync.url nĂ€itab sildumispaika sĂ”lmega sĂŒnkroonimise jaoks.
SĂ”lm 2 hostil vm2 seadistatakse kui store-001, ja kĂ”ik muu on mÀÀratud failis node.properties, mis on toodud allpool. SĂ”lm store-001 töötab PostgreSQL andmebaasiga, ja pgdb_replica on replika jaoks mĂ”eldud andmebaas. registration.url vĂ”imaldab hostil vm2 ĂŒhenduda hostiga vm1 ja saada konfiguratsiooni ĂŒksikasju.
$> 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=001Valmis SymmetricDS-i nÀide sisaldab seadeid kahe andmebaasi serveri (kaks sÔlme) vaheline kahepoolse replikatsiooni seadistamiseks. Allolevad sammud tÀidetakse hostis vm1 (corp-000), kus luuakse nelja tabeliga skeem. SeejÀrel kÀivitab kÀsu create-sym-tables kasutamine symadmin, et luua kataloogitabelid, kuhu salvestatakse replikatsioonireeglid ja -suunad sÔlmede vahel. LÔpuks laaditakse tabelitesse nÀidisandmed.
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.sqlNĂ€ites on tabelid item ja item_selling_price automaatselt seadistatud replikeerimiseks corp-000-st store-001-i, samas kui tabelid sale (sale_transaction ja sale_return_line_item) on automaatselt seadistatud replikeerimiseks store-001-st corp-000-sse. NĂŒĂŒd loome andmebaasis PostgreSQL skeemi hostis vm2 (store-001), et valmistada see ette andmete vastuvĂ”tmiseks corp-000-lt.
vm2$> cd /usr/local/symmetric-server-3.9.20/bin
vm2$> ./dbimport --engine store-001 --format XML create_sample.xmlKontrollime kindlasti, et MySQL andmebaasis vm1 on olemas SymmetricDS-i tabelite ja kataloogide tabelid. Pange tĂ€hele, et SymmetricDS-i sĂŒsteemitabelid (prefiksiga sym_) on praegu saadaval ainult sĂ”lmes corp-000, sest seal tĂ€itsime kĂ€su create-sym-tables ja haldame replikatsiooni. Lisaks on sĂ”lmes store-001 ainult 4 nĂ€idetabelit, milles andmeid ei ole.
KÔik. Keskkond on serveriprotsesside sym kÀivitamiseks valmis mÔlemal sÔlmel, nagu allpool nÀidatud.
vm1$> cd /usr/local/symmetric-server-3.9.20/bin
vm1$> sym 2>&1 &Logikirjed saadetakse taustalogifaili (symmetric.log) logikausta, kus SymmetricDS on paigaldatud, ja ka standardvĂ€ljundisse. Serverit sym saab nĂŒĂŒd algatada sĂ”lmes store-001.
vm2$> cd /usr/local/symmetric-server-3.9.20/bin
vm2$> sym 2>&1 &Kui kĂ€ivitada sym serveri protsess vm2 hostis, loob see SymmetricDS katalooge PostgreSQL andmebaasis. Kui sym serveri protsess kĂ€ivitada mĂ”lemal sĂ”lmel, sĂŒnkroniseerivad nad andmeid corp-000-st store-001-esse. Kui paarisekundilise ooteaja pĂ€rast pĂ€rime kĂ”iki 4 tabelit mĂ”lemalt poolt, nĂ€eme, et replikatsioon on edukalt toimunud. VĂ”i vĂ”ime edastada esialgse koormuse sĂ”lmele store-001 corp-000-st jĂ€rgmise kĂ€suga.
vm1$> ./symadmin --engine corp-000 reload-node 001Sellel etapil sisestatakse andmebaasi MySQL tabelisse item uus rekord sÔlmes corp-000 (host: vm1) ning kontrollime selle replikatsiooni PostgreSQL andmebaasi sÔlmes store-001 (host: vm2). Me nÀeme Pull operatsiooni andmete edastamiseks corp-000-st store-001-esse.
mysql> insert into item values ('22000002','Jelly Bean');
KĂŒsimus OK, 1 rida mĂ”jutatud (0.00 sek)vm2$> psql -p 5832 -U postgres pgdb_replica -c "select * from item"
item_id | name
----------+-----------
11000001 | Yummy Gum
22000002 | Jelly Bean
(2 rida)Andmete edastamiseks store-001-st corp-000-sse Push operatsiooni teostamiseks sisestage rekord tabelisse sale_transaction ja kontrollige, et replikatsioon on toimunud.
NÀeme edukat kahe suunalise replikatsiooni seadistamist MySQL ja PostgreSQL andmebaaside vahel. Uute kasutaja tabelite replikatsiooni seadistamiseks teeme jÀrgmised sammud. Loome nÀidisena tabeli t1 ja seadistame selle replikatsiooni reeglid jÀrgmiselt. Nii seadistame me replikatsiooni ainult corp-000-st store-001-ks.
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)SeejÀrel saab konfiguratsioon teate schéma muutusest, st uue tabeli lisamisest, kasutades kÀsku symadmin koos argumendiga sync-triggers, mis taasluua trigger'id tabelite mÀÀratlemiseks. KÀivitatakse send-schema, et saata schéma muudatusi sÔlmele store-001, ja tabeli t1 replikatsioon on seadistatud.
vm1$> ./symadmin -e corp-000 --node=001 sync-triggers
vm1$> ./symadmin send-schema -e corp-000 --node=001 t1SymmetricDS eelised
Lihtne seadistamine ja konfigureerimine, sealhulgas valmisfailide komplekt parameetritega kolme vÔi kahe sÔlme skeemi loomiseks.
Andmebaaside platvormideĂŒlene töö ja sĂ”ltumatus, sealhulgas serverid, sĂŒlearvutid ja mobiilseadmed.
Iga andmebaasi replikatsioon igasse teise andmebaasi lokaalselt, WAN-is vÔi pilves.
VÔime optimaalselt töötada paari andmebaasi vÔi mitme tuhande andmebaasiga mugavaks replikatsiooniks.
Tasuline versioon, millel on graafiline liides ja suurepÀrane tugi.
SymmetricDS puudused
Replikatsiooni reeglid ja suund tuleb kÀsitsi mÀÀrata kÀsurealt SQL-operatsioonide abil katalooge laadides, mis vÔib olla ebamugav.
Paljude tabelite replikatsiooni seadmine vÔib olla kurnav, kui skripte SQL-operatsioonide loomiseks ei kasutata, mis mÀÀravad replikatsiooni reeglid ja suuna.
Logidesse kantakse liiga palju teavet ning mÔnikord on vajalik logifailis korda luua, et see ei vÔtaks liiga palju ruumi.
KokkuvÔtted SymmetricDS kohta
SymmetricDS vĂ”imaldab seadistada kaheastmelist replikatsiooni kahe, kolme vĂ”i isegi tuhandete sĂ”lme vahel failide replikatsiooni ja sĂŒnkroonimist. See on ainulaadne tööriist, mis tĂ€idab ise mitmeid ĂŒlesandeid, nĂ€iteks andmete automaatne taastamine pĂ€rast pikka seisakut sĂ”lmes, turvaline ja efektiivne andmevahetus sĂ”lmede vahel HTTPSi kaudu, konfliktide automaatne haldamine reeglite komplekti pĂ”hjal jne. SymmetricDS teostab replikatsiooni mis tahes andmebaaside vahel, seetĂ”ttu saab seda kasutada erinevates stsenaariumites, sealhulgas migratsioon, ĂŒle minemine uuele versioonile, levitamine, andmete filtreerimine ja vormindamine erinevates platvormides.
NĂ€ide on loodud ametliku pĂ”hjal. See kirjeldab ĂŒksikasjalikult erinevaid mĂ”isteid, mis on seotud replikatsiooni seadistamisega SymmetricDS-i abil.
Allikas: habr.com
