Ristireplikointi PostgreSQL:n ja MySQL:n välillä

Ristireplikointi PostgreSQL:n ja MySQL:n välillä

Esittelen PostgreSQL:n ja MySQL:n välisen ristireplikoinnin sekä menetelmiä ristiinreplikoinnin määrittämiseksi kahden tietokantapalvelimen välillä. Tyypillisesti ristiin replikoituja tietokantoja kutsutaan homogeenisiksi, ja se on kätevä tapa siirtyä RDBMS-palvelimelta toiselle.

PostgreSQL- ja MySQL-tietokantoja pidetään yleensä relaatioina, mutta lisälaajennuksilla ne tarjoavat NoSQL-ominaisuudet. Täällä keskustelemme PostgreSQL:n ja MySQL:n välisestä replikaatiosta relaatiotietokantajärjestelmän näkökulmasta.

Emme kuvaile koko sisäistä toimintaa, vain perusperiaatteet, jotta saat käsityksen tietokantapalvelinten välisen replikoinnin konfiguroinnista, eduista, rajoituksista ja käyttötapauksista.

Tyypillisesti replikointi kahden identtisen tietokantapalvelimen välillä tehdään joko binääritilassa tai käyttämällä kyselyitä isäntäpalvelimen (eli julkaisijan, isäntäpalvelimen tai aktiivisen) ja orjan (tilaaja, valmiustila tai passiivinen) välillä. Replikoinnin tarkoitus on tarjota reaaliaikainen kopio isäntätietokannasta orjapuolelle. Tässä tapauksessa tiedot siirretään isännältä orjalle, eli aktiivisesta passiiviseen, koska replikointi suoritetaan vain yhteen suuntaan. Mutta voit määrittää replikoinnin kahden tietokannan välillä molempiin suuntiin, jotta tiedot siirretään orjalta isännälle aktiivi-aktiivisessa kokoonpanossa. Kaikki tämä, mukaan lukien peräkkäinen replikointi, on mahdollista kahden tai useamman identtisen tietokantapalvelimen välillä Aktiivinen-aktiivinen tai aktiivinen-passiivinen konfigurointi riippuu tarpeesta, tällaisten ominaisuuksien saatavuudesta alkukokoonpanossa tai ulkoisten konfigurointiratkaisujen käytöstä ja olemassa olevista kompromisseista.

Kuvattu konfiguraatio on mahdollinen eri tietokantapalvelimien välillä. Palvelin voidaan määrittää hyväksymään replikoituja tietoja toiselta tietokantapalvelimelta ja ylläpitämään silti reaaliaikaisia ​​tilannekuvia replikoiduista tiedoista. MySQL ja PostgreSQL tarjoavat suurimman osan näistä määrityksistä talon sisällä tai kolmannen osapuolen laajennusten kautta, mukaan lukien binäärilokimenetelmät, levyn lukitus sekä lause- ja rivipohjaiset menetelmät.

MySQL:n ja PostgreSQL:n välinen ristireplikointi tarvitaan kertaluonteiseen siirtoon tietokantapalvelimesta toiseen. Nämä tietokannat käyttävät eri protokollia, joten niitä ei ole mahdollista linkittää suoraan. Tiedonvaihdon luomiseen voit käyttää ulkoista avoimen lähdekoodin työkalua, esimerkiksi pg_chameleon.

Mikä on pg_chameleon

pg_chameleon on replikointijärjestelmä MySQL:stä PostgreSQL:ään Python 3:ssa. Se käyttää avoimen lähdekoodin mysql-replication -kirjastoa, myös Pythonissa. Rivikuvat poimitaan MySQL-taulukoista ja tallennetaan JSONB-objekteina PostgreSQL-tietokantaan, minkä jälkeen salaus puretaan pl/pgsql-funktiolla ja toistetaan PostgreSQL-tietokantaan.

pg_chameleonin ominaisuudet

Useita MySQL-skeemoja samasta klusterista voidaan replikoida yhteen kohdepostgreSQL-tietokantaan yksi-moneen-kokoonpanossa
Lähde- ja kohdeskeeman nimet eivät voi olla samat.
Replikointitiedot voidaan hakea peräkkäisestä MySQL-replikoista.
Taulukot, joita ei voi replikoida tai tuottaa virheitä, suljetaan pois.
Jokaista replikointitoimintoa ohjaavat demonit.
Ohjaus YAML-pohjaisten parametrien ja asetustiedostojen kautta.

Esimerkki

isäntä
vm1
vm2

OS-versio
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

DB-palvelimen versio
MySQL 5.7.26
PostgreSQL 10.5

DB-portti
3306
5433

IP-osoite
192.168.56.102
192.168.56.106

Aluksi valmistele kaikki tarvittavat komponentit asentaaksesi pg_chameleon. Tämä esimerkki asentaa Python 3.6.8:n, joka luo ja aktivoi virtuaaliympäristön.

$> 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:n onnistuneen asennuksen jälkeen sinun on suoritettava loput vaatimukset, kuten virtuaalisen ympäristön luominen ja aktivointi. Lisäksi pip-moduuli päivitetään uusimpaan versioon ja sitä käytetään pg_chameleonin asentamiseen. Alla olevat komennot asentavat tarkoituksella pg_chameleon 2.0.9:n, vaikka viimeisin versio on 2.0.10. Tämä on välttämätöntä uusien virheiden välttämiseksi päivitetyssä versiossa.

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

Kutsumme sitten pg_chameleon (chameleon on komento) set_configuration_files-argumentilla pg_chameleonin ottamiseksi käyttöön ja oletushakemistojen ja asetustiedostojen luomiseksi.

(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

Luomme nyt kopion tiedostosta config-example.yml nimellä default.yml, jotta siitä tulee oletusasetustiedosto. Alla on esimerkkimääritystiedosto tästä esimerkistä.

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

Tämän esimerkin määritystiedosto on esimerkki pg_chameleon-tiedostosta, johon on tehty pieniä muutoksia lähde- ja kohdeympäristöön sopiviksi, ja alla on yleiskatsaus määritystiedoston eri osioista.

Oletus.yml-asetustiedostossa on globaalien asetusten osio, jossa voit hallita asetuksia, kuten lukitustiedoston sijaintia, lokien sijaintia, lokien säilytysaikaa jne. Seuraavaksi tulee tyypin ohitusosio, jossa joukko sääntöjä ohittaa tyypit replikoinnin aikana. Esimerkissä on oletuksena tyypin ohitussääntö, joka muuntaa tinyint(1):n boolen arvoksi. Seuraavassa osiossa määritämme yhteystiedot kohdetietokantaan. Meidän tapauksessamme tämä on PostgreSQL-tietokanta, jonka nimi on pg_conn. Viimeisessä osiossa ilmoitamme lähdetiedot eli lähdetietokannan yhteysparametrit, lähde- ja kohdetietokannan välinen kartoituskaavio, ohitettavat taulukot, odotusaika, muisti, paketin koko. Huomaa, että "lähteet" on monikko, mikä tarkoittaa, että voimme lisätä useita lähdetietokantoja yhteen kohdetietokantaan useiden yhteen -kokoonpanon määrittämiseksi.

Esimerkkitietokanta world_x sisältää 4 taulukkoa riveineen, joita MySQL-yhteisö tarjoaa esimerkkeinä. Sen voi ladata täällä. Esimerkkitietokanta toimitetaan tervana ja pakattuna arkistona, jossa on ohjeet rivien luomiseen ja tuontiin.

MySQL- ja PostgreSQL-tietokantoihin luodaan erityinen käyttäjä, jolla on sama nimi usr_replica. MySQL:ssä sille annetaan lisälukuoikeuksia kaikkiin replikoituihin taulukoihin.

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-puolelle luodaan db_replica-tietokanta, joka hyväksyy muutokset MySQL-tietokannasta. PostgreSQL:n käyttäjä usr_replica määritetään automaattisesti kahden skeeman, pgworld_x ja sch_chameleon, omistajaksi, jotka sisältävät todelliset replikoidut taulukot ja toisinnushakemistotaulukot. Create_replica_schema-argumentti vastaa automaattisesta määrityksestä, kuten alla näkyy.

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

MySQL-tietokanta on määritetty muutamalla parametrimuutoksilla sen valmistelemiseksi replikointia varten alla kuvatulla tavalla. Sinun on käynnistettävä tietokantapalvelin uudelleen, jotta muutokset tulevat voimaan.

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

Nyt on tärkeää tarkistaa yhteys molempiin tietokantapalvelimiin, jotta pg_chameleon-komentoja ajettaessa ei tule ongelmia.

PostgreSQL-solmussa:

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

MySQL-solmussa:

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

Seuraavat kolme pg_chameleon (chameleon) -komentoa valmistelevat ympäristön, lisäävät lähdekoodin ja alustavat replikan. Pg_chameleonin create_replica_schema-argumentti luo oletusskeeman (sch_chameleon) ja toisinnusskeeman (pgworld_x) PostgreSQL-tietokantaan, kuten olemme jo käsitelleet. Add_source-argumentti lisää lähdetietokannan konfiguraatioon lukemalla asetustiedoston (default.yml), ja meidän tapauksessamme se on mysql, ja init_replica alustaa kokoonpanon asetustiedoston parametrien perusteella.

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

Näiden kolmen komennon tulos osoittaa selvästi, että ne suoritettiin onnistuneesti. Kaikki kaatumiset tai syntaksivirheet raportoidaan yksinkertaisina, selkeinä viesteinä, joissa on vihjeitä ongelman korjaamiseen.

Lopuksi aloitamme replikoinnin käyttämällä start_replicaa ja vastaanotamme onnistumisviestin.

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

Replikaation tilaa voidaan kysyä käyttämällä show_status-argumenttia, ja virheitä voidaan tarkastella show_errors-argumentilla.

Tulos.

Kuten jo sanoimme, jokaista replikointitoimintoa ohjaavat demonit. Niiden tarkastelemiseksi teemme kyselyn prosessitaulukosta Linux ps -komennolla alla olevan kuvan mukaisesti.

Tulos.

Replikointia ei pidetä määritettynä ennen kuin testaamme sen reaaliajassa, kuten alla on esitetty. Luomme taulukon, lisäämme pari tietuetta MySQL-tietokantaan ja kutsumme sync_tables-argumentin pg_chameleonissa päivittääksemme demonit ja replikoimme taulukon tietueineen PostgreSQL-tietokantaan.

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.

Testitulosten vahvistamiseksi teemme kyselyn taulukosta PostgreSQL-tietokannasta ja tulostamme rivit.

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

Jos teemme siirtoa, seuraavat pg_chameleon-komennot ovat sen lopussa. Komennot on suoritettava, kun olemme varmoja, että kaikkien kohdetaulukkojen rivit on replikoitu, ja tuloksena on siististi siirretty PostgreSQL-tietokanta ilman viittauksia lähdetietokantaan tai replikointimalliin (sch_chameleon).

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

Halutessasi voit käyttää seuraavia komentoja poistaaksesi alkuperäisen kokoonpanon ja toisinnusmallin.

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

pg_chameleonin edut

Helppo asennus ja konfigurointi.
Tee vianmääritys ja tunnista poikkeamat helposti selkeillä virheilmoituksilla.
Muita erikoistaulukoita voidaan lisätä replikointiin alustuksen jälkeen muuttamatta muuta kokoonpanoa.
On mahdollista määrittää useita lähdetietokantoja yhdelle kohdetietokannalle, ja tämä on erittäin hyödyllistä, jos yhdistät tiedot yhdestä tai useammasta MySQL-tietokannasta yhdeksi PostgreSQL-tietokannaksi.
Sinun ei tarvitse kopioida valittuja taulukoita.

pg_chameleonin haitat

Tuettu vain MySQL 5.5 tai uudempi lähdetietokanta ja PostgreSQL 9.5 tai uudempi kohdetietokanta.
Jokaisella taulukolla on oltava ensisijainen tai yksilöllinen avain, muuten taulukot alustetaan init_replica-prosessin aikana, mutta niitä ei replikoida.
Yksisuuntainen replikointi – vain MySQL:stä PostgreSQL:ään. Siksi se sopii vain "aktiivi-passiiviseen" piiriin.
Lähde voi olla vain MySQL-tietokanta, ja tuki PostgreSQL-tietokannalle lähteenä on vain kokeellista ja rajoituksin (lisätietoja täällä)

Tulokset haulle pg_chameleon

Pg_chameleonin replikointimenetelmä sopii erinomaisesti tietokannan siirtämiseen MySQL:stä PostgreSQL:ään. Merkittävä haittapuoli on, että replikointi on vain yksisuuntaista, joten tietokannan ammattilaiset eivät todennäköisesti halua käyttää sitä mihinkään muuhun kuin siirtoon. Mutta yksisuuntaisen replikoinnin ongelma voidaan ratkaista toisella avoimen lähdekoodin työkalulla - SymmetricDS.

Lue lisää virallisesta dokumentaatiosta täällä. Komentoriviohje löytyy täällä.

SymmetricDS:n yleiskatsaus

SymmetricDS on avoimen lähdekoodin työkalu, joka replikoi minkä tahansa tietokannan mihin tahansa muuhun yleiseen tietokantaan: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird ja muut pilvitietokanta-instanssit, kuten Redshift ja Azure jne. Käytettävissä olevat ominaisuudet: tietokantojen ja tiedostojen synkronointi, usean isäntätietokannan replikointi, suodatettu synkronointi, muunnos ja muut. Tämä on Java-työkalu ja vaatii JRE:n tai JDK:n vakiojulkaisun (versio 8.0 tai uudempi). Täällä voidaan tallentaa datamuutokset lähdetietokannan triggereihin ja lähettää ne erien muodossa sopivaan kohdetietokantaan.

SymmetricDS-ominaisuudet

Työkalu on alustariippumaton, mikä tarkoittaa, että kaksi tai useampia eri tietokantoja voivat vaihtaa tietoja.
Relaatiotietokannat synkronoidaan tietojen muutostietueiden avulla, kun taas tiedostojärjestelmäpohjaiset tietokannat käyttävät tiedostojen synkronointia.
Kaksisuuntainen replikointi käyttämällä Push and Pull -menetelmiä, jotka perustuvat sääntöihin.
Tiedonsiirto on mahdollista suojattujen ja alhaisen kaistanleveyden verkkojen kautta.
Automaattinen palautus, kun solmut jatkavat toimintaansa vian jälkeen, ja automaattinen konfliktinratkaisu.
Pilviyhteensopivat ja tehokkaat laajennussovellusliittymät.

Esimerkki

SymmetricDS voidaan määrittää kahdella vaihtoehdolla:
Pääsolmu (yläsolmu), joka koordinoi keskitetysti tietojen replikointia kahden orjasolmun (lapsi) välillä, ja viestintä lapsisolmun välillä tapahtuu vain pääsolmun kautta.
Aktiivinen solmu (Node 1) voi kommunikoida replikointia varten toisen aktiivisen solmun (Node 2) kanssa ilman välittäjää.

Molemmissa vaihtoehdoissa tiedonvaihto tapahtuu Push and Pull -toiminnolla. Tässä esimerkissä tarkastellaan aktiivista aktiivista kokoonpanoa. Koko arkkitehtuurin kuvaaminen kestäisi liian kauan, joten tee tutkimusta. руководствоsaadaksesi lisätietoja SymmetricDS-laitteesta.

SymmetricDS:n asentaminen on hyvin yksinkertaista: lataa zip-tiedoston avoimen lähdekoodin versio siten ja ota se pois minne haluat. Alla olevassa taulukossa on tietoja SymmetricDS:n asennuspaikasta ja versiosta tässä esimerkissä sekä molempien solmujen tietokantaversioista, Linux-versioista, IP-osoitteista ja porteista.

isäntä
vm1
vm2

OS-versio
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

DB-palvelimen versio
MySQL 5.7.26
PostgreSQL 10.5

DB-portti
3306
5832

IP-osoite
192.168.1.107
192.168.1.112

SymmetricDS-versio
SymmetricDS 3.9
SymmetricDS 3.9

SymmetricDS-asennuspolku
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

SymmetricDS-solmun nimi
corp-000
kauppa-001

Täällä asennamme SymmetricDS:n hakemistoon /usr/local/symmetric-server-3.9.20, ja sinne tallennetaan erilaisia ​​alihakemistoja ja tiedostoja. Olemme kiinnostuneita näytteistä ja moottorien alihakemistoista. Esimerkkihakemisto sisältää esimerkkimääritystiedostoja solmun ominaisuuksilla sekä esimerkkiSQL-komentosarjoja, joiden avulla pääset alkuun nopeasti.

Esimerkkihakemistossa näemme kolme konfiguraatiotiedostoa solmun ominaisuuksilla - nimi kertoo solmun luonteen tietyssä mallissa.

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

SymmetricDS sisältää kaikki tarvittavat konfigurointitiedostot 3-solmun perussuunnitteluun (vaihtoehto 1), ja samoja tiedostoja voidaan käyttää 2-solmun suunnittelussa (vaihtoehto 2). Kopioi vaadittu määritystiedosto näytehakemistosta vm1-isäntäkoneisiin. Siitä tulee näin:

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

Tätä SymmetricDS-kokoonpanon solmua kutsutaan nimellä corp-000, ja tietokantayhteyden hoitaa mysql jdbc -ohjain, joka käyttää yllä olevaa yhteysmerkkijonoa ja kirjautumistietoja. Yhdistämme replica_db-tietokantaan ja taulukot luodaan skeeman luomisen aikana. sync.url näyttää, mistä solmuun voi ottaa yhteyttä synkronointia varten.

Isäntä vm2:n solmu 2 on määritetty nimellä store-001 ja loput määritetään alla olevassa node.properties-tiedostossa. Node store-001 suorittaa PostgreSQL-tietokannan ja pgdb_replica on replikointitietokanta. Registration.url sallii isäntä vm2:n ottaa yhteyttä isäntään vm1 ja vastaanottaa määritystietoja siitä.

$> 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-esimerkki sisältää parametrit kaksisuuntaisen replikoinnin määrittämiseksi kahden tietokantapalvelimen (kaksi solmua) välillä. Alla olevat vaiheet suoritetaan isännässä vm1 (corp-000), joka luo esimerkkiskeeman, jossa on 4 taulukkoa. Tämän jälkeen create-sym-tables-ohjelman suorittaminen symadmin-komennolla luo hakemistotaulukoita, joihin tallennetaan solmujen välisen replikoinnin säännöt ja suunta. Lopuksi näytetiedot ladataan taulukoihin.

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

Esimerkissä nimike- ja nimikkeiden_myyntihintataulukot määritetään automaattisesti replikoitumaan osoitteesta corp-000 kauppa-001:een ja myyntitaulukot (sale_transaction ja sale_return_line_item) määritetään automaattisesti replikoimaan osoitteesta kauppa-001 yritykseen 000. Nyt luomme skeeman PostgreSQL-tietokantaan isäntä vm2:ssa (store-001), jotta se valmistelee vastaanottamaan tietoja corp-000:sta.

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

Varmista, että vm1:n MySQL-tietokannassa on esimerkkitaulukoita ja SymmetricDS-luettelotaulukoita. Huomaa, että SymmetricDS-järjestelmätaulukot (etuliitteellä sym_) ovat tällä hetkellä saatavilla vain solmussa corp-000, koska siellä suoritimme create-sym-tables-komennon ja hallitsemme replikointia. Ja node store-001 -tietokannassa on vain 4 esimerkkitaulukkoa ilman tietoja.

Kaikki. Ympäristö on valmis suorittamaan sym-palvelinprosesseja molemmissa solmuissa alla esitetyllä tavalla.

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

Lokimerkinnät lähetetään taustalokitiedostoon (symmetric.log) lokikansiossa siinä hakemistossa, johon SymmetricDS on asennettu, sekä vakiotulostukseen. Sym-palvelin voidaan nyt käynnistää solmukaupassa-001.

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

Jos suoritat sym-palvelinprosessin vm2-isännässä, se luo myös SymmetricDS-luettelotaulukot PostgreSQL-tietokantaan. Jos käytät sym-palvelinprosessia molemmissa solmuissa, ne koordinoivat toistensa kanssa replikoidakseen tietoja korp-000:sta store-001:een. Jos muutaman sekunnin kuluttua teemme kyselyn kaikilta neljältä taulukolta molemmilta puolilta, näemme replikoinnin onnistuneen. Tai voit lähettää bootstrapin solmukauppa-4 osoitteesta corp-001 seuraavalla komennolla.

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

Tässä vaiheessa uusi tietue lisätään nimiketaulukkoon MySQL-tietokannassa solmussa corp-000 (isäntä: vm1), ja voit tarkistaa sen replikoinnin PostgreSQL-tietokantaan solmukauppa-001 (isäntä: vm2). Näemme Pull-operaation tietojen siirtämiseksi yhtiöstä 000 kauppaan 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)

Suorittaaksesi Push-toiminnon tietojen siirtämiseksi myymälästä 001 yritykseen 000, lisäämme tietueen sale_transaction-taulukkoon ja varmistamme, että replikointi onnistuu.

Tulos.

Näemme esimerkkitaulukoiden kaksisuuntaisen replikoinnin onnistuneen asennuksen MySQL- ja PostgreSQL-tietokantojen välillä. Voit määrittää replikoinnin uusille käyttäjätaulukoille seuraavasti: Luomme esimerkiksi taulukon t1 ja konfiguroimme sen replikointisäännöt seuraavasti. Tällä tavalla määritämme vain replikoinnin corp-000:sta store-001:een.

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)

Tämän jälkeen konfiguraatiolle ilmoitetaan skeeman muutoksesta, eli uuden taulukon lisäämisestä, käyttämällä symadmin-komentoa sync-triggers-argumentin kanssa, joka luo liipaisimet uudelleen taulukkomääritelmien yhdistämiseksi. send-schema suoritetaan lähettämään skeeman muutokset solmukauppaan-001, ja taulukon t1 replikointi määritetään.

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

SymmetricDS:n edut

Helppo asennus ja konfigurointi, mukaan lukien valmiit tiedostot parametreillä kolmen tai kahden solmun piirin luomiseksi.
Monialustaiset tietokannat ja alustariippumattomuus, mukaan lukien palvelimet, kannettavat tietokoneet ja mobiililaitteet.
Kopioi mikä tahansa tietokanta mihin tahansa muuhun tietokantaan paikallisesti, WAN-verkossa tai pilvessä.
Mahdollisuus optimaaliseen työskentelyyn muutaman tai usean tuhannen tietokannan kanssa kätevää replikointia varten.
Maksullinen versio graafisella käyttöliittymällä ja erinomaisella tuella.

SymmetricDS:n haitat

Sinun on määritettävä manuaalisesti säännöt ja replikoinnin suunta komentorivillä SQL-käskyjen avulla luettelotaulukoiden lataamiseksi, mikä voi olla hankalaa.
Monien taulukoiden määrittäminen replikointia varten voi olla työlästä, ellet käytä komentosarjoja SQL-käskyjen luomiseen, jotka määrittävät replikoinnin säännöt ja suunnan.
Lokeihin tallennetaan liikaa tietoa, ja joskus lokitiedostoa on siivottava, jotta se ei vie liikaa tilaa.

Tulokset haulle SymmetricDS

SymmetricDS:n avulla voit määrittää kaksisuuntaisen replikoinnin kahden, kolmen tai jopa usean tuhannen solmun välillä tiedostojen replikointia ja synkronointia varten. Tämä on ainutlaatuinen työkalu, joka suorittaa itsenäisesti monia tehtäviä, kuten automaattisen tietojen palauttamisen solmun pitkän seisokkiajan jälkeen, turvallisen ja tehokkaan tiedonvaihdon solmujen välillä HTTPS:n kautta, automaattisen ristiriitojen hallinnan sääntöihin perustuen jne. SymmetricDS suorittaa replikointi minkä tahansa tietokantojen välillä, joten sitä voidaan käyttää monenlaisiin skenaarioihin, mukaan lukien tietojen siirto, siirto, jakelu, suodatus ja muuntaminen alustojen välillä.

Esimerkki perustuu virkamiehiin Pikaopas by SymmetricDS. SISÄÄN ohjekirja Kuvaa yksityiskohtaisesti eri käsitteitä, jotka liittyvät replikoinnin määrittämiseen SymmetricDS:n avulla.

Lähde: will.com

Lisää kommentti