Krossafritun milli PostgreSQL og MySQL

Krossafritun milli PostgreSQL og MySQL

Ég mun útlista krossafritun á milli PostgreSQL og MySQL, sem og aðferðir til að setja upp krossafritun milli gagnagrunnsþjónanna tveggja. Venjulega eru krossafritaðir gagnagrunnar kallaðir einsleitir og það er þægileg aðferð til að flytja frá einum RDBMS netþjóni til annars.

PostgreSQL og MySQL gagnagrunnar eru almennt álitnir venslabundnir, en með viðbótarviðbótum bjóða þeir upp á NoSQL getu. Hér munum við ræða afritun á milli PostgreSQL og MySQL frá tengsla DBMS sjónarhorni.

Við munum ekki lýsa öllu innra starfi, bara grunnreglunum svo að þú fáir hugmynd um að stilla afritun á milli gagnagrunnsþjóna, kostum, takmörkunum og notkunartilvikum.

Venjulega er afritun milli tveggja eins gagnagrunnsþjóna unnin annað hvort í tvíundarham eða með því að nota fyrirspurnir á milli meistara (a.k.a. útgefanda, meistara eða virks) og þræls (áskrifandi, biðstöðu eða óvirkur). Tilgangur afritunar er að útvega rauntíma afrit af aðalgagnagrunninum á þrælhliðinni. Í þessu tilviki eru gögn flutt frá skipstjóra til þræls, það er frá virku til óvirku, vegna þess að afritun er aðeins framkvæmd í eina átt. En þú getur sett upp afritun á milli tveggja gagnagrunna í báðar áttir, þannig að gögn eru flutt frá þræl til húsbónda í virkri-virkri stillingu. Allt þetta, þar með talið afritunarafritun, er mögulegt á milli tveggja eða fleiri eins gagnagrunnsþjóna. Virk-virk eða virk-aðgerðalaus stilling fer eftir þörf, framboði á slíkum möguleikum í upphaflegri uppsetningu eða notkun ytri stillingarlausna og núverandi málamiðlun.

Uppsetningin sem lýst er er möguleg á milli mismunandi gagnagrunnsþjóna. Hægt er að stilla þjóninn til að samþykkja afrituð gögn frá öðrum gagnagrunnsþjóni og viðhalda samt rauntíma skyndimyndum af endurteknum gögnum. MySQL og PostgreSQL bjóða upp á flestar þessar stillingar innanhúss eða í gegnum viðbætur frá þriðja aðila, þar á meðal tvöfaldar logaðferðir, diskalæsingar og aðferðir sem byggja á yfirlýsingum og röðum.

Þörf er á krossafritun milli MySQL og PostgreSQL fyrir flutning í eitt skipti frá einum gagnagrunnsþjóni til annars. Þessir gagnagrunnar nota mismunandi samskiptareglur, svo það er ekki hægt að tengja þá beint. Til að koma á gagnaskiptum er hægt að nota utanaðkomandi opinn uppspretta tól, til dæmis pg_chameleon.

Hvað er pg_chameleon

pg_chameleon er afritunarkerfi frá MySQL til PostgreSQL í Python 3. Það notar opinn uppspretta mysql-afritunarsafn, einnig í Python. Röð myndir eru unnar úr MySQL töflum og geymdar sem JSONB hlutir í PostgreSQL gagnagrunninum og síðan afkóðaraðar með pl/pgsql fallinu og afritaðar í PostgreSQL gagnagrunninum.

Eiginleikar pg_chameleon

Hægt er að endurtaka mörg MySQL stef úr sama þyrpingunni í einn markpóst PostgreSQL gagnagrunn í ein-á-mörgum uppsetningu
Uppruna- og markskemuheitin geta ekki verið þau sömu.
Hægt er að ná í afritunargögn frá MySQL eftirmynd í fossi.
Töflur sem geta ekki endurtekið eða framkallað villur eru útilokaðar.
Hverri afritunaraðgerð er stjórnað af púkum.
Stjórna í gegnum YAML-undirstaða færibreytur og stillingarskrár.

Dæmi

Gestgjafi
vm1
vm2

OS útgáfa
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

DB miðlara útgáfa
MySQL 5.7.26
10.5

DB tengi
3306
5433

IP tölu
192.168.56.102
192.168.56.106

Til að byrja skaltu undirbúa alla nauðsynlega íhluti til að setja upp pg_chameleon. Þetta dæmi setur upp Python 3.6.8, sem býr til og virkjar sýndarumhverfið.

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

Eftir að hafa sett upp Python3.6 með góðum árangri þarftu að uppfylla þær kröfur sem eftir eru, eins og að búa til og virkja sýndarumhverfi. Að auki er pip-einingin uppfærð í nýjustu útgáfuna og notuð til að setja upp pg_chameleon. Skipanirnar hér að neðan setja viljandi upp pg_chameleon 2.0.9, þó nýjasta útgáfan sé 2.0.10. Þetta er nauðsynlegt til að forðast nýjar villur í uppfærðu útgáfunni.

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

Við köllum síðan pg_chameleon (chameleon er skipun) með set_configuration_files rökunum til að virkja pg_chameleon og búa til sjálfgefnar möppur og stillingarskrár.

(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

Nú búum við til afrit af config-example.yml sem default.yml þannig að það verður sjálfgefin stillingarskrá. Sýnishorn af stillingarskrá fyrir þetta dæmi er að finna hér að neðan.

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

Stillingarskráin í þessu dæmi er sýnishorn af pg_chameleon skrá með smávægilegum breytingum til að henta uppruna- og markumhverfinu og hér að neðan er yfirlit yfir mismunandi hluta stillingaskrárinnar.

Í default.yml stillingarskránni er hluti af hnattrænum stillingum, þar sem þú getur stjórnað stillingum eins og staðsetningu læsingarskrár, staðsetningu annála, geymslutíma fyrir annála o.s.frv. sett af reglum um að hnekkja gerðum við afritun. Dæmið er sjálfgefið fyrir tegund sem hnekkir reglu sem breytir tinyint(1) í Boolean gildi. Í næsta kafla tilgreinum við upplýsingar um tenginguna við markgagnagrunninn. Í okkar tilviki er þetta PostgreSQL gagnagrunnur, nefndur pg_conn. Í síðasta hluta tilgreinum við upprunagögnin, það er tengingarfæribreytur upprunagagnagrunnsins, kortlagningarkerfið milli uppruna- og markgagnagrunnsins, töflur sem þarf að sleppa, biðtíma, minni, pakkningastærð. Athugaðu að "heimildir" er fleirtölu, sem þýðir að við getum bætt mörgum upprunagagnagrunnum við einn markgagnagrunn til að setja upp margar-í-einn stillingar.

Dæmi gagnagrunnurinn world_x inniheldur 4 töflur með línum sem MySQL samfélagið býður upp á sem dæmi. Það er hægt að hlaða niður hér. Sýnagagnagrunnurinn kemur sem tjara og þjappað skjalasafn með leiðbeiningum um að búa til og flytja inn línur.

Í MySQL og PostgreSQL gagnagrunnum er sérstakur notandi búinn til með sama nafni usr_replica. Í MySQL er það gefinn viðbótarlesréttur fyrir allar endurteknar töflur.

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 hliðinni er búið til db_replica gagnagrunnur sem tekur við breytingum frá MySQL gagnagrunninum. Notandinn usr_replica í PostgreSQL er sjálfkrafa stilltur sem eigandi tveggja skemas, pgworld_x og sch_chameleon, sem innihalda raunverulegar endurteknar töflur og afritunarskráartöflurnar, í sömu röð. Create_replica_schema röksemdin er ábyrg fyrir sjálfvirkri stillingu, eins og þú munt sjá hér að neðan.

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

MySQL gagnagrunnurinn er stilltur með nokkrum breytubreytingum til að undirbúa hann fyrir afritun eins og sýnt er hér að neðan. Þú þarft að endurræsa gagnagrunnsþjóninn til að breytingarnar taki gildi.

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

Nú er mikilvægt að athuga tenginguna við báða gagnagrunnsþjónana þannig að engin vandamál komi upp þegar pg_chameleon skipanirnar eru keyrðar.

Á PostgreSQL hnútnum:

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

Á MySQL hnút:

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

Næstu þrjár pg_chameleon (chameleon) skipanir undirbúa umhverfið, bæta upprunanum við og frumstilla eftirmyndina. Create_replica_schema rökin til pg_chameleon búa til sjálfgefið skema (sch_chameleon) og afritunarskema (pgworld_x) í PostgreSQL gagnagrunninum, eins og við höfum þegar rætt. Add_source röksemdin bætir frumgagnagrunni við stillingarnar með því að lesa stillingarskrána (default.yml), og í okkar tilviki er það mysql, og init_replica frumstillir stillinguna út frá breytum í stillingarskránni.

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

Úttak þessara þriggja skipana gefur greinilega til kynna að þær hafi verið framkvæmdar með góðum árangri. Allar hrun eða setningafræðivillur eru tilkynntar í einföldum, skýrum skilaboðum með vísbendingum um hvernig eigi að laga vandamálið.

Að lokum byrjum við afritun með því að nota start_replica og fáum árangursskilaboð.

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

Hægt er að spyrjast fyrir um stöðu afritunar með því að nota show_status rökin og villur er hægt að skoða með því að nota show_errors rökin.

Niðurstaðan.

Eins og við höfum áður sagt er hverri afritunaraðgerð stjórnað af púkum. Til að skoða þá spyrjum við í ferlitöfluna með Linux ps skipuninni, eins og sýnt er hér að neðan.

Niðurstaðan.

Afritun er ekki talin stillt fyrr en við prófum hana í rauntíma, eins og sýnt er hér að neðan. Við búum til töflu, setjum nokkrar færslur inn í MySQL gagnagrunninn og köllum sync_tables rökin í pg_chameleon til að uppfæra púkana og endurtaka töfluna með færslunum í PostgreSQL gagnagrunninn.

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.

Til að staðfesta prófunarniðurstöðurnar spyrjum við í töfluna úr PostgreSQL gagnagrunninum og sendum út línurnar.

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

Ef við erum að flytja, verða eftirfarandi pg_chameleon skipanir endirinn á því. Skipanirnar þarf að framkvæma eftir að við erum viss um að raðir allra marktaflna hafi verið endurteknar og útkoman verður snyrtilega fluttur PostgreSQL gagnagrunnur án tilvísana í upprunagagnagrunninn eða afritunarkerfi (sch_chameleon).

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

Ef þess er óskað geturðu notað eftirfarandi skipanir til að eyða upprunalegu stillingunum og afritunarkerfinu.

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

Kostir pg_chameleon

Auðveld uppsetning og stillingar.
Auðveldlega bilanaleit og auðkenndu frávik með skýrum villuboðum.
Hægt er að bæta við sérstökum töflum við afritun eftir frumstillingu án þess að breyta restinni af uppsetningunni.
Það er hægt að stilla marga upprunagagnagrunna fyrir einn markgagnagrunn og það er mjög gagnlegt ef þú ert að sameina gögn úr einum eða fleiri MySQL gagnagrunnum í einn PostgreSQL gagnagrunn.
Þú þarft ekki að endurtaka valdar töflur.

Ókostir pg_chameleon

Aðeins stutt með MySQL 5.5 og nýrri sem uppruna og PostgreSQL 9.5 og nýrri sem markgagnagrunn.
Hver tafla verður að hafa frumlykil eða einstakan lykil, annars eru töflurnar frumstilltar meðan á init_replica ferlinu stendur en eru ekki endurteknar.
Einhliða afritun - aðeins frá MySQL til PostgreSQL. Þess vegna er það aðeins hentugur fyrir „virka-óvirka“ hringrásina.
Heimildin getur aðeins verið MySQL gagnagrunnur og stuðningur við PostgreSQL gagnagrunn sem heimild er aðeins tilraunaverkefni og með takmörkunum (frekari upplýsingar hér)

Niðurstöður fyrir pg_chameleon

Afritunaraðferðin í pg_chameleon er frábær til að flytja gagnagrunn frá MySQL til PostgreSQL. Mikilvægi ókosturinn er sá að afritun er aðeins á einn veg, svo ólíklegt er að sérfræðingar í gagnagrunni vilji nota hann fyrir neitt annað en flutning. En vandamálið við einhliða afritun er hægt að leysa með öðru opnum hugbúnaði - SymmetricDS.

Lestu meira í opinberu skjölunum hér. Skipanalínuhjálp er að finna hér.

Yfirlit yfir SymmetricDS

SymmetricDS er opinn uppspretta tól sem endurtekur hvaða gagnagrunn sem er í hvaða annan algengan gagnagrunn sem er: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird og önnur skýjagagnagrunnstilvik, t.d. Redshift, og Azure, o.s.frv. Lausir eiginleikar: gagnagrunns- og skráarsamstillingu, fjölskipaðra gagnagrunnsafritunar, síaðrar samstillingu, umbreytingu og fleira. Þetta er Java tól og krefst staðlaðrar útgáfu af JRE eða JDK (útgáfa 8.0 eða nýrri). Hér er hægt að skrá gagnabreytingar á kveikjum í frumgagnagrunninum og senda í viðeigandi markgagnagrunn í formi lotu.

SymmetricDS eiginleikar

Tólið er vettvangsóháð, sem þýðir að tveir eða fleiri mismunandi gagnagrunnar geta skiptst á gögnum.
Venslagagnagrunnar eru samstilltir með því að nota gagnabreytingaskrár en gagnagrunnar sem byggja á skráarkerfi nota skráarsamstillingu.
Tvíhliða afritun með Push og Pull aðferðum byggðar á setti reglna.
Gagnaflutningur er mögulegur yfir örugg netkerfi með lítilli bandbreidd.
Sjálfvirk endurheimt þegar hnútar halda áfram að starfa eftir bilun og sjálfvirk lausn átaka.
Skýjasamhæft og öflug framlengingarforritaskil.

Dæmi

Hægt er að stilla SymmetricDS í einum af tveimur valkostum:
Aðalhnút (foreldra) sem miðstýrt samhæfir gagnaafritun milli tveggja þræl-(barn)hnúta og samskipti milli barnahnúta eiga sér aðeins stað í gegnum foreldri.
Virkur hnút (hnútur 1) getur átt samskipti við annan virkan hnút (hnút 2) til afritunar án milliliða.

Í báðum valkostum eiga sér stað gagnaskipti með því að nota Push og Pull. Í þessu dæmi munum við íhuga virka-virka stillingu. Það myndi taka of langan tíma að lýsa öllum arkitektúrnum, svo gerðu rannsóknir þínar. forystutil að læra meira um SymmetricDS tækið.

Það er mjög einfalt að setja upp SymmetricDS: sæktu opna útgáfuna af zip skránni þess vegna og taktu það út hvar sem þú vilt. Taflan hér að neðan veitir upplýsingar um uppsetningarstaðsetningu og útgáfu SymmetricDS í þessu dæmi, svo og gagnagrunnsútgáfur, Linux útgáfur, IP tölur og tengi fyrir báða hnúta.

Gestgjafi
vm1
vm2

OS útgáfa
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

DB miðlara útgáfa
MySQL 5.7.26
10.5

DB tengi
3306
5832

IP tölu
192.168.1.107
192.168.1.112

SymmetricDS útgáfa
SymmetricDS 3.9
SymmetricDS 3.9

SymmetricDS uppsetningarleið
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

Nafn SymmetricDS hnúts
Corp-000
verslun-001

Hér setjum við upp SymmetricDS í /usr/local/symmetric-server-3.9.20 og þar verða geymdar ýmsar undirmöppur og skrár. Við höfum áhuga á sýnishornum og undirskrám véla. Sýnisskráin inniheldur dæmi um stillingarskrár með hnútareiginleikum, sem og dæmi SQL forskriftir til að koma þér fljótt af stað.

Í sýnisskránni sjáum við þrjár stillingarskrár með hnútareiginleikum - nafnið sýnir eðli hnútsins í ákveðnu kerfi.

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

SymmetricDS hefur allar nauðsynlegar stillingarskrár fyrir grunn 3-hnúta hönnun (valkostur 1), og sömu skrár er hægt að nota fyrir 2-hnúta hönnun (valkostur 2). Afritaðu nauðsynlega stillingarskrá úr sýnisskránni yfir í vélar á vm1 hýsilnum. Það kemur svona út:

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

Þessi hnútur í SymmetricDS stillingunni er kallaður corp-000, og gagnagrunnstengingin er meðhöndluð af mysql jdbc reklum, sem notar tengistrenginn hér að ofan og innskráningarskilríki. Við tengjumst replica_db gagnagrunninum og töflur verða búnar til við skemagerð. sync.url sýnir hvar á að hafa samband við hnútinn fyrir samstillingu.

Hnútur 2 á hýsil vm2 er stilltur sem store-001 og restin er tilgreind í node.properties skránni hér að neðan. Node store-001 keyrir PostgreSQL gagnagrunninn og pgdb_replica er afritunargagnagrunnurinn. registration.url gerir hýsil vm2 kleift að hafa samband við hýsil vm1 og fá upplýsingar um stillingar frá honum.

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

Útfyllta SymmetricDS dæmið inniheldur færibreytur til að setja upp tvíhliða afritun á milli tveggja gagnagrunnsþjóna (tveir hnútar). Skrefin hér að neðan eru framkvæmd á hýsil vm1 (corp-000), sem mun búa til dæmi skema með 4 töflum. Síðan að keyra create-sym-tables með symadmin skipuninni býr til möpputöflur þar sem reglurnar og stefna afritunar milli hnúta verða geymdar. Að lokum er sýnishornsgögnum hlaðið inn í töflurnar.

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

Í dæminu eru vöru- og vörusöluverð töflurnar sjálfkrafa stilltar til að afrita frá corp-000 yfir í verslun-001 og sölutöflurnar (sale_transaction og sale_return_line_item) eru sjálfkrafa stilltar til að endurtaka frá verslun-001 í corp-000. Nú búum við til skema í PostgreSQL gagnagrunninum á hýsil vm2 (store-001) til að undirbúa það til að taka á móti gögnum frá corp-000.

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

Gakktu úr skugga um að MySQL gagnagrunnurinn á vm1 hafi dæmitöflur og SymmetricDS vörulistatöflur. Athugaðu að SymmetricDS kerfistöflurnar (forskeyti með sym_) eru sem stendur aðeins fáanlegar á hnút corp-000 vegna þess að það er þar sem við keyrðum create-sym-tables skipunina og munum stjórna afritun. Og í gagnagrunninum á node store-001 verða aðeins 4 dæmi um töflur án gagna.

Allt. Umhverfið er tilbúið til að keyra sym netþjónaferli á báðum hnútum eins og sýnt er hér að neðan.

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

Skrárfærslur eru sendar í bakgrunnsskrá (symmetric.log) í logs möppunni í möppunni þar sem SymmetricDS er sett upp, sem og í staðlað úttak. Nú er hægt að ræsa sym netþjóninn á hnút store-001.

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

Ef þú keyrir sym miðlara ferlið á vm2 hýsilnum mun það einnig búa til SymmetricDS vörulistatöflur í PostgreSQL gagnagrunninum. Ef þú keyrir sym miðlara ferlið á báðum hnútum, samræma þeir hver annan til að endurtaka gögn frá corp-000 til store-001. Ef eftir nokkrar sekúndur er spurt um allar 4 töflurnar á báðum hliðum, munum við sjá að afritunin tókst. Eða þú getur sent bootstrap til node store-001 frá corp-000 með eftirfarandi skipun.

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

Á þessum tímapunkti er ný skrá sett inn í atriðistöfluna í MySQL gagnagrunninum á hnút corp-000 (gestgjafi: vm1), og þú getur athugað afritun hennar í PostgreSQL gagnagrunninn á hnút verslun-001 (gestgjafi: vm2). Við sjáum Pull aðgerð til að færa gögn frá corp-000 í 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)

Til að framkvæma Push-aðgerð til að færa gögn frá store-001 til corp-000, setjum við færslu inn í sale_transaction töfluna og staðfestum að afritun hafi tekist.

Niðurstaðan.

Við sjáum árangursríka uppsetningu tvíhliða afritunar á dæmitöflum milli MySQL og PostgreSQL gagnagrunna. Til að setja upp afritun fyrir nýjar notendatöflur skaltu fylgja þessum skrefum: Við búum til töflu t1 til dæmis og stillum afritunarreglur hennar sem hér segir. Þannig stillum við aðeins afritun frá corp-000 í 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)

Stillingunni er síðan tilkynnt um skemabreytinguna, það er að bæta við nýrri töflu, með því að nota symadmin skipunina með sync-triggers röksemdinni, sem endurskapar kveikjurnar til að kortleggja töfluskilgreiningarnar. send-skema er keyrt til að senda skemabreytingar í hnút verslun-001 og afritun töflu t1 er stillt.

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

Kostir SymmetricDS

Auðveld uppsetning og stilling, þar á meðal tilbúið sett af skrám með breytum til að búa til þriggja hnúta eða tveggja hnúta hringrás.
Gagnagrunnar á milli vettvanga og sjálfstæði vettvangs, þar á meðal netþjóna, fartölvur og farsíma.
Afritaðu hvaða gagnagrunn sem er í hvaða annan gagnagrunn sem er á staðnum, á WAN eða í skýinu.
Möguleiki á ákjósanlegri vinnu með nokkra gagnagrunna eða nokkur þúsund fyrir þægilega afritun.
Greidd útgáfa með GUI og framúrskarandi stuðningi.

Ókostir SymmetricDS

Þú þarft að skilgreina reglur og stefnu afritunar handvirkt á skipanalínunni í gegnum SQL setningar til að hlaða vörulistatöflum, sem getur verið óþægilegt.
Að setja upp margar töflur fyrir afritun getur verið leiðinlegt nema þú notir forskriftir til að búa til SQL staðhæfingar sem skilgreina reglur og stefnu afritunar.
Það er verið að skrá of mikið af upplýsingum í annálana og stundum þarf að snyrta skrána svo hún taki ekki of mikið pláss.

Niðurstöður fyrir SymmetricDS

SymmetricDS gerir þér kleift að setja upp tvíhliða afritun á milli tveggja, þriggja eða jafnvel nokkur þúsund hnúta til að endurtaka og samstilla skrár. Þetta er einstakt tól sem framkvæmir sjálfstætt mörg verkefni, svo sem sjálfvirka endurheimt gagna eftir langan tíma í niðri á hnút, örugg og skilvirk gagnaskipti á milli hnúta í gegnum HTTPS, sjálfvirk átakastjórnun sem byggir á reglum o.s.frv. SymmetricDS framkvæmir afritun milli hvaða gagnagrunna sem er, þess vegna er hægt að nota það fyrir margs konar aðstæður, þar á meðal flutning, flutning, dreifingu, síun og umbreytingu gagna á milli kerfa.

Dæmið er byggt á embættismanninum fljótleg leiðarvísir eftir SymmetricDS. IN leiðarvísir Lýsir í smáatriðum hinum ýmsu hugmyndum sem taka þátt í að setja upp afritun með SymmetricDS.

Heimild: www.habr.com

Bæta við athugasemd