Ristreplikatsioon PostgreSQL-i ja MySQL-i vahel

Ristreplikatsioon PostgreSQL-i ja MySQL-i vahel

Räägin lühidalt PostgreSQL-i ja MySQL-i vahelisest ristreplikatsioonist, samuti nende kahe andmebaasiserveri vahelise ristreplikatsiooni seadistamise meetoditest. Ristpaljundatud andmebaase nimetatakse tavaliselt homogeenseteks andmebaasideks ja see on mugav meetod ühest RDBMS-i serverist teise migreerumiseks.

Traditsiooniliselt peetakse PostgreSQL-i ja MySQL-i andmebaase relatsioonilisteks, kuid täiendavate laiendustega pakuvad need NoSQL-i võimalusi. Siin käsitleme PostgreSQL-i ja MySQL-i replikatsiooni relatsioonilise andmebaasi haldamise vaatenurgast.

Me ei kirjelda kogu sisemust, vaid ainult põhiprintsiipe, et saaksite aimu andmebaasiserverite vahelise replikatsiooni seadistamisest, eelistest, piirangutest ja kasutusjuhtudest.

Tavaliselt toimub replikatsioon kahe identse andmebaasiserveri vahel kas binaarrežiimis või ülem- (aka väljaandja, ülem või aktiivne) ja alamserveri (abonent, ooterežiim või passiivne) vaheliste päringute abil. Replikatsiooni eesmärk on pakkuda põhiandmebaasi reaalajas koopiat ooterežiimis. Sel juhul edastatakse andmed ülemselt alluvale, st aktiivselt passiivsele, kuna replikatsioon toimub ainult ühes suunas. Kuid saate seadistada replikatsiooni kahe andmebaasi vahel mõlemas suunas, nii et andmed edastatakse alamseadmest ülemseadmesse aktiivse-aktiivse konfiguratsioonis. Kõik see, sh kaskaadreplikatsioon, on võimalik kahe või enama identse andmebaasiserveri vahel Aktiivne-aktiivne või aktiivne-passiivne konfiguratsioon sõltub vajadusest, selliste võimaluste olemasolust algkonfiguratsioonis või väliste häälestuslahenduste kasutamisest ja olemasolevast kaubandusest - off .

Kirjeldatud konfiguratsioon on võimalik erinevate andmebaasiserverite vahel. Serverit saab konfigureerida vastu võtma replikeeritud andmeid teisest andmebaasiserverist ja säilitama siiski kopeeritud andmete reaalajas hetktõmmiseid. MySQL ja PostgreSQL pakuvad enamikku neist konfiguratsioonidest algselt või kolmanda osapoole laienduste kaudu, sealhulgas binaarlogimeetodid, kettalukud ning lause- ja reapõhised meetodid.

Ristreplikatsioon MySQL-i ja PostgreSQL-i vahel on vajalik ühekordseks migratsiooniks ühest andmebaasiserverist teise. Need andmebaasid kasutavad erinevaid protokolle, nii et te ei saa neid otse linkida. Andmevahetuse hõlbustamiseks võite kasutada välist avatud lähtekoodiga tööriista, näiteks pg_chameleon.

Mis on pg_chameleon

pg_chameleon on replikatsioonisüsteem MySQL-ist PostgreSQL-i Python 3-s. See kasutab mysql-replication avatud lähtekoodiga teeki, ka Pythonis. Reapildid hangitakse MySQL-i tabelitest ja salvestatakse JSONB-objektidena PostgreSQL-i andmebaasis ning seejärel dekodeeritakse funktsiooni pl/pgsql abil ja taasesitatakse PostgreSQL-i andmebaasis.

pg_chameleoni omadused

Mitu MySQL-i skeemi samast klastrist saab kopeerida ühte PostgreSQL-i sihtandmebaasi konfiguratsiooniga üks-mitmele
Lähte- ja sihtskeemi nimed ei saa olla samad.
Replikatsiooniandmeid saab hankida MySQL-i kaskaadreplicast.
Tabelid, mida ei saa kopeerida ega tekitada vigu, on välistatud.
Iga replikatsioonifunktsiooni juhivad deemonid.
Juhtimine YAML-il põhinevate parameetrite ja konfiguratsioonifailidega.

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

DB port
3306
5433

IP-aadress
192.168.56.102
192.168.56.106

Esiteks valmistage ette kõik vajalikud komponendid pg_chameleoni 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 altinstall

Kui Python3.6 on edukalt installitud, tuleb täita ülejäänud nõuded, näiteks virtuaalse keskkonna loomine ja aktiveerimine. Samuti värskendatakse pip-moodul uusimale versioonile ja seda kasutatakse pg_chameleoni installimiseks. Allolevad käsud installivad tahtlikult versiooni pg_chameleon 2.0.9, kuigi uusim versioon on 2.0.10. See on vajalik värskendatud versiooni uute vigade vältimiseks.

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

Seejärel kutsume pg_chameleoni (chameleon on käsk) argumendiga set_configuration_files, et lubada pg_chameleon ja luua vaikekonfiguratsioonikataloogid ja failid.

(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üüd teeme failist config-example.yml koopia faili default.yml, nii et sellest saab vaikekonfiguratsioonifail. Selle näite konfiguratsioonifaili näidis on esitatud allpool.

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

Selle näite konfiguratsioonifail on näidisfail pg_chameleon, mida on tehtud väiksemate muudatustega, et need sobiksid lähte- ja sihtkeskkonnaga, ning allpool on ülevaade konfiguratsioonifaili erinevatest jaotistest.

Konfiguratsioonifailis default.yml on jaotis globaalsetest sätetest (globaalsed sätted), kus saate juhtida selliseid sätteid nagu lukufaili asukoht, logide asukoht, logide salvestusperiood jne. Järgmiseks tuleb tüübi alistamine. jaotis, kus on määratud reeglid tüüpide alistamiseks replikatsiooni ajal. Vaikimisi näide kasutab tüübi alistamise reeglit, mis teisendab tinyint(1) tõeväärtuseks. Järgmises jaotises täpsustame sihtandmebaasiga ühenduse loomise üksikasju. Meie puhul on see PostgreSQL-i andmebaas, mida tähistatakse kui pg_conn. Viimases jaotises täpsustame lähteandmed ehk lähteandmebaasi ühenduse parameetrid, lähte- ja sihtandmebaaside kaardistamise skeemi, vahele jäetavad tabelid, aegumise, mälu, paketi suuruse. Pange tähele, et "allikad" on mitmus, mis tähendab, et saame lisada samale sihtmärgile mitu lähteandmebaasi, et seadistada mitu-ühele konfiguratsiooni.

Näites toodud andmebaas world_x sisaldab 4 tabelit ridadega, mida MySQL-i kogukond näite jaoks soovitab. Seda saab alla laadida siin. Näidisandmebaas on tar ja tihendatud arhiiv koos juhistega stringide loomiseks ja importimiseks.

MySQL-i ja PostgreSQL-i andmebaasides luuakse spetsiaalne kasutaja sama nimega usr_replica. MySQL annab talle täiendava lugemisõiguse kõigile kopeeritud tabelitele.

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-i poolel luuakse andmebaas db_replica, mis aktsepteerib MySQL-i andmebaasi muudatusi. PostgreSQL-i kasutaja usr_replica konfigureeritakse automaatselt kahe skeemi pgworld_x ja sch_chameleon omanikuks, mis sisaldavad vastavalt tegelikke kopeeritud tabeleid ja replikatsioonikataloogitabeleid. Argument create_replica_schema vastutab automaatse konfigureerimise eest, nagu näete allpool.

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

MySQL-i andmebaas on konfigureeritud mõningate muudatustega, et muuta see replikatsiooniks valmis, nagu allpool näidatud. Muudatuste jõustumiseks peate andmebaasiserveri taaskäivitama.

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

Nüüd on oluline kontrollida ühendust mõlema andmebaasiserveriga, et pg_chameleoni käskude täitmisel probleeme ei tekiks.

PostgreSQL-i sõlmes:

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

MySQL-i sõlmes:

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

Järgmised kolm käsku pg_chameleon (chameleon) valmistavad ette keskkonna, lisavad allika ja lähtestavad koopia. Pg_chameleoni argument create_replica_schema loob PostgreSQL-i andmebaasis vaikeskeemi (sch_chameleon) ja replikatsiooniskeemi (pgworld_x), nagu me ütlesime. Argument add_source lisab konfiguratsioonile lähteandmebaasi, lugedes konfiguratsioonifaili (default.yml), mis meie puhul on mysql, ja init_replica lähtestab konfiguratsiooni konfiguratsioonifailis olevate sätete alusel.

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

Nende kolme käsu väljund näitab selgelt nende edu. Kõik tõrked või süntaksivead on näidatud lihtsates ja arusaadavas sõnumites koos vihjetega probleemide lahendamiseks.

Lõpuks alustame replikatsiooni start_replica abil ja saame eduteate.

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

Replikatsiooni olekut saab küsida argumendiga show_status ja vigu saab vaadata argumendiga show_errors.

Tulemus.

Nagu me juba ütlesime, haldavad deemonid kõiki replikatsioonifunktsioone. Nende vaatamiseks küsige protsessitabelit Linuxi ps käsuga, nagu allpool näidatud.

Tulemus.

Replikatsiooni ei loeta konfigureerituks enne, kui me seda reaalajas testime, nagu allpool näidatud. Loome tabeli, sisestame paar kirjet MySQL-i andmebaasi ja kutsume failis pg_chameleon argumendi sync_tables, et värskendada deemoneid ja kopeerida tabel kirjetega PostgreSQL-i andmebaasi.

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.

Testitulemuste kinnitamiseks küsime tabelit PostgreSQL andmebaasist ja väljastame read.

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

Kui me migreerime, lõpetavad järgmised käsud pg_chameleon. Käsud tuleks käivitada pärast seda, kui oleme veendunud, et kõigi sihttabelite read on kopeeritud, mille tulemuseks on korralikult migreeritud PostgreSQL-i andmebaas, millel pole viiteid lähteandmebaasile ega replikatsiooniskeemile (sch_chameleon).

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

Algse konfiguratsiooni ja replikatsiooniskeemi saate valikuliselt kustutada järgmiste käskudega.

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

pg_chameleoni eelised

Lihtne seadistamine ja seadistamine.
Mugav veaotsing ja anomaaliate tuvastamine selgete veateadetega.
Pärast lähtestamist saab replikatsioonile lisada täiendavaid eritabeleid ilma ülejäänud konfiguratsiooni muutmata.
Ühe sihtandmebaasi jaoks on võimalik seadistada mitu lähteandmebaasi ja see on väga mugav, kui ühendate andmeid ühest või mitmest MySQL andmebaasist üheks PostgreSQL-i andmebaasiks.
Saate valitud tabeleid mitte kopeerida.

Pg_chameleoni puudused

Toetatud ainult MySQL 5.5 ja uuemate versioonidega lähteandmebaasina ning PostgreSQL 9.5 ja uuemate sihtandmebaasidega.
Igal tabelil peab olema primaar- või kordumatu võti, vastasel juhul initsialiseeritakse tabelid protsessis init_replica, kuid neid ei korrata.
Ühesuunaline replikatsioon – ainult MySQL-ist PostgreSQL-i. Seetõttu sobib see ainult aktiivse-passiivse skeemi jaoks.
Allikaks saab olla ainult MySQL andmebaas ja PostgreSQL andmebaasi tugi allikana on ainult eksperimentaalne ja piiratud (lisateave siin)

Pg_chameleoni kogusummad

Pg_chameleoni replikatsioonimeetod sobib suurepäraselt andmebaasi migreerimiseks MySQL-ist PostgreSQL-i. Suur negatiivne külg on see, et replikatsioon on ainult ühesuunaline, nii et tõenäoliselt ei soovi andmebaasiprofessionaalid seda kasutada millekski muuks kui migratsiooniks. Kuid ühesuunalise replikatsiooni probleemi saab lahendada teise avatud lähtekoodiga tööriistaga - SymmetricDS.

Lisateavet leiate ametlikust dokumentatsioonist siin. Käsurea abi leiate siin.

SymmetricDS-i ülevaade

SymmetricDS on avatud lähtekoodiga tööriist, mis paljundab mis tahes andmebaasi mis tahes muu levinud andmebaasiga: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird ja muud pilvandmebaasi eksemplarid, näiteks Redshift, ja Azure jne. Saadaolevad funktsioonid: andmebaaside ja failide sünkroonimine, mitme põhiandmebaasi replikatsioon, filtreeritud sünkroonimine, teisendus ja muud. See on Java tööriist ja nõuab standardset väljalaset JRE või JDK (versioon 8.0 või uuem). Siin saate salvestada andmemuudatused lähteandmebaasi trigeritel ja saata need partiidena vastavasse sihtandmebaasi.

SymmetricDS-i võimalused

Tööriist on platvormist sõltumatu, mis tähendab, et kaks või enam erinevat andmebaasi saavad andmeid vahetada.
Relatsiooniandmebaase sünkroonitakse andmemuudatuste salvestamise teel ning failisüsteemidel põhinevad andmebaasid kasutavad failide sünkroonimist.
Kahesuunaline replikatsioon, kasutades tõuke- ja tõmbamismeetodeid, mis põhinevad reeglistikul.
Andmeedastus on võimalik turvaliste võrkude ja väikese ribalaiusega võrkude kaudu.
Automaatne taastamine sõlmede töö jätkamisel pärast riket ja automaatne konfliktide lahendamine.
Pilvega ühilduvad ja tõhusad laiendusliidesed.

Näide

SymmetricDS-i saab konfigureerida kahel viisil:
Peasõlm (ülemassõlm), mis koordineerib tsentraalselt andmete replikatsiooni kahe alluva (alam) sõlme vahel ja andmevahetus alamsõlmede vahel toimub ainult ülemsõlme kaudu.
Aktiivne sõlm (sõlm 1) saab replikatsiooniks suhelda teise aktiivse sõlmega (sõlm 2) ilma vahendajata.

Mõlema valiku puhul toimub andmevahetus Push and Pull abil. Selles näites käsitleme aktiivset-aktiivset konfiguratsiooni. Kogu arhitektuuri kirjeldamiseks on see liiga pikk, seega uurige juhtpositsiooniSymmetricDS-seadme kohta lisateabe saamiseks.

SymmetricDS-i installimine on lihtne: laadige alla avatud lähtekoodiga ZIP-fail siit ja ekstraheerige see kõikjal, kus soovite. Järgmises tabelis on loetletud SymmetricDS-i installikoht ja versioon selles näites, samuti mõlema sõlme andmebaasi versioonid, Linuxi versioonid, IP-aadressid ja pordid.

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

DB port
3306
5832

IP-aadress
192.168.1.107
192.168.1.112

SymmetricDS versioon
SymmetricDS 3.9
SymmetricDS 3.9

SymmetricDS-i installitee
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

SymmetricDS-i hostinimi
korp-000
kauplus-001

Siin installime SymmetricDS-i kausta /usr/local/symmetric-server-3.9.20 ja sinna salvestatakse erinevad alamkataloogid ja failid. Oleme huvitatud alamkataloogide näidistest ja mootoritest. Näidiste kataloog sisaldab näidiskonfiguratsioonifaile koos sõlme atribuutidega, samuti SQL-i näidisskripte demo kiireks käivitamiseks.

Näidiskataloogis näeme kolme sõlme omadustega konfiguratsioonifaili – nimi näitab sõlme olemust konkreetses skeemis.

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

SymmetricDS-il on kõik vajalikud konfiguratsioonifailid 3 sõlme põhiskeemi jaoks (valik 1) ja samu faile saab kasutada 2 sõlme skeemi jaoks (valik 2). Kopeerige vajalik konfiguratsioonifail näidiskataloogist vm1 hosti mootoritesse. See selgub nii:

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

Seda sõlme nimetatakse SymmetricDS-i konfiguratsioonis corp-000 ja andmebaasiühendust haldab mysql jdbc draiver, mis kasutab ülaltoodud ühendusstringi ja sisselogimismandaate. Loome ühenduse replica_db andmebaasiga ja tabelid luuakse skeemi loomise ajal. sync.url näitab linki sünkroonitavale sõlmele.

Hosti vm2 sõlm 2 on konfigureeritud kui store-001 ja ülejäänu on määratud allolevas failis node.properties. Sõlm store-001 käitab PostgreSQL-i andmebaasi ja pgdb_replica on paljundatav andmebaas. Register.url võimaldab vm2 hostil vm1 hostiga ühendust võtta ja sealt konfiguratsiooni üksikasju hankida.

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

Valmis SymmetricDS-i näide sisaldab valikuid kahe andmebaasiserveri (kahe sõlme) vahelise kahesuunalise replikatsiooni seadistamiseks. Allolevad toimingud viiakse läbi hostis vm1 (corp-000), mis loob 4 tabeliga näidisskeemi. Seejärel luuakse käsu create-sym-tables käivitamine käsuga symadmin kataloogitabelid, kuhu salvestatakse sõlmedevahelise replikatsiooni reeglid ja suund. Lõpuks laaditakse näidisandmed tabelitesse.

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

Näites konfigureeritakse kauba ja kauba_müügihinna tabelid automaatselt kopeerima alates korporatsioonist-000-st poodi-001 ning müügitabelid (müügitehing ja müügitagastuse_rea_üksus) konfigureeritakse automaatselt kopeerima poest-001-st ettevõtte-000-sse. Loome nüüd hostis vm2 (store-001) PostgreSQL-i andmebaasis skeemi, et valmistada see ette Corp-000 andmete vastuvõtmiseks.

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

Veenduge, et vm1 MySQL-i andmebaasis oleks näidistabelid ja SymmetricDS-kataloogitabel. Pange tähele, et SymmetricDS-i süsteemitabelid (eesliitega sym_) on praegu saadaval ainult sõlmes corp-000, kuna seal käivitasime käsu create-sym-tables ja haldame replikatsiooni. Ja sõlme Store-001 andmebaasis on ainult 4 näidistabelit ilma andmeteta.

Kõik. Keskkond on valmis sümserveri protsesside käitamiseks mõlemas sõlmes, nagu allpool näidatud.

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

Logikirjed saadetakse taustalogifaili (symmetric.log) kataloogi, kuhu SymmetricDS on installitud, logikausta, samuti standardväljundisse. Sym-serverit saab nüüd käivitada sõlmes store-001.

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

Kui käivitate sym-serveri protsessi vm2-hostis, loob see SymmetricDS-i kataloogitabelid ka PostgreSQL-i andmebaasis. Kui käivitate süm-serveri protsessi mõlemas sõlmes, koordineerivad need üksteisega andmeid, et kopeerida andmeid korp-000-st store-001-sse. Kui mõne sekundi pärast küsime mõlemalt poolt kõigi nelja tabeli kohta, näeme, et replikatsioon õnnestus. Või saate järgmise käsuga saata alglaadimiskäskluse aadressilt corp-4 aadressile store-001.

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

Sel hetkel lisatakse uus kirje MySQL-i andmebaasi üksuse tabelisse sõlmes corp-000 (host: vm1) ja selle replikatsiooni saab kontrollida PostgreSQL-i andmebaasi sõlme store-001 (host: vm2). Näeme tõmbeoperatsiooni andmete teisaldamiseks ettevõttest 000 kauplusesse 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)

Tõuketoimingu tegemiseks andmete teisaldamiseks kauplusest 001 ettevõttesse 000 sisestame kirje sale_transaction tabelisse ja kontrollime, kas replikatsioon on lõpule viidud.

Tulemus.

Näeme näitetabelite kahesuunalise replikatsiooni edukat seadistamist MySQL-i ja PostgreSQL-i andmebaaside vahel. Uute kasutajatabelite replikatsiooni seadistamiseks toimige järgmiselt. Loome näiteks tabeli t1 ja seadistame selle replikatsioonireeglid järgmiselt. Seega seadistasime ainult replikatsiooni alates corp-000 kuni 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)

Seejärel teavitatakse konfiguratsiooni skeemi muudatusest, st uue tabeli lisamisest, kasutades symadmin käsku koos argumendiga sync-triggers, mis loob uuesti käivitajad, et need vastaksid tabeli definitsioonidele. Send-schema käivitatakse skeemi muudatuste saatmiseks poodi-001 ja tabel t1 kopeeritakse.

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

SymmetricDSi eelised

Lihtne installimine ja seadistamine, sealhulgas valmis failide komplekt parameetritega kolme või kahe sõlmega skeemi loomiseks.
Platvormideülesed andmebaasid ja platvormide sõltumatus, sealhulgas serverid, sülearvutid ja mobiilseadmed.
Kopeerige mis tahes andmebaas mis tahes muusse andmebaasi kohapeal, WAN-is või pilves.
Võimalus töötada optimaalselt paari või mitme tuhande andmebaasiga lihtsaks replikatsiooniks.
GUI ja suurepärase toega tasuline versioon.

SymmetricDS-i puudused

Kataloogitabelite laadimiseks peate käsureal SQL-lausete kaudu käsitsi määrama reeglid ja replikatsiooni suuna, mis võib olla ebamugav.
Paljude tabelite seadistamine replikatsiooniks võib olla tüütu, kui te ei kasuta SQL-lausete loomiseks skripte, mis määravad replikatsiooni reeglid ja suuna.
Logides on liiga palju teavet ja mõnikord peate logifaili puhastama, et see liiga palju ruumi ei võtaks.

SymmetricDSi kokkuvõte

SymmetricDS võimaldab failide paljundamiseks ja sünkroonimiseks seadistada kahe, kolme või isegi mitme tuhande sõlme vahel kahesuunalist replikatsiooni. See on ainulaadne tööriist, mis täidab iseseisvalt paljusid ülesandeid, näiteks andmete automaatne taastamine pärast pikka seisakut sõlmes, turvaline ja tõhus side sõlmede vahel HTTPS-i kaudu, reeglistikul põhinev automaatne konfliktide haldamine jne. SymmetricDS kordab mis tahes andmebaaside vahel, seetõttu saab seda kasutada mitmesuguste stsenaariumide jaoks, sealhulgas migreerimine, täiendamine, levitamine, filtreerimine ja andmete teisendamine platvormide vahel.

Näide põhineb ametnikul Kiirjuhend SymmetricDS poolt. IN kasutusjuhend Kirjeldab üksikasjalikult erinevaid kontseptsioone, mis on seotud SymmetricDS-i replikatsiooni seadistamisega.

Allikas: www.habr.com

Lisa kommentaar