Replikasyon kwa ant PostgreSQL ak MySQL

Replikasyon kwa ant PostgreSQL ak MySQL

Mwen pral esplike kwa-replikasyon ant PostgreSQL ak MySQL, osi byen ke metòd pou mete kanpe kwa-replikasyon ant de serveurs baz done yo. Tipikman, baz done kwa-repwodwi yo rele omojèn, epi li se yon metòd pratik pou deplase soti nan yon sèvè RDBMS nan yon lòt.

Baz done PostgreSQL ak MySQL yo jeneralman konsidere kòm relasyon, men ak ekstansyon adisyonèl yo ofri kapasite NoSQL. Isit la nou pral diskite sou replikasyon ant PostgreSQL ak MySQL nan yon pèspektiv DBMS relasyon.

Nou pa pral dekri tout fonksyonman enteryè yo, jis prensip debaz yo pou w ka jwenn yon lide sou konfigirasyon replikasyon ant serveurs baz done, avantaj, limit ak ka itilize.

Tipikman, replikasyon ant de sèvè baz done ki idantik fèt swa nan mòd binè oswa lè l sèvi avèk demann ant yon mèt (aka piblikatè, mèt, oswa aktif) ak yon esklav (abònen, sibstiti, oswa pasif). Objektif replikasyon an se bay yon kopi an tan reyèl nan baz done mèt la sou bò esklav la. Nan ka sa a, done yo transfere soti nan mèt nan esklav, se sa ki, soti nan aktif nan pasif, paske replikasyon fèt sèlman nan yon direksyon. Men, ou ka mete kanpe replikasyon ant de baz done nan toude direksyon, pou ke done yo transfere soti nan esklav nan mèt nan yon konfigirasyon aktif-aktif. Tout bagay sa yo, ki gen ladan replikasyon kaskad, se posib ant de oswa plis sèvè baz done ki idantik. Konfigirasyon aktif-aktif oswa aktif-pasif depann de bezwen, disponiblite kapasite sa yo nan konfigirasyon inisyal la oswa itilizasyon solisyon konfigirasyon ekstèn ak echanj ki egziste deja.

Konfigirasyon ki dekri a posib ant diferan serveurs baz done. Sèvè a ka configuré pou aksepte done replike ki soti nan yon lòt sèvè baz done epi toujou kenbe snapshots an tan reyèl nan done yo replike. MySQL ak PostgreSQL ofri pi fò nan konfigirasyon sa yo anndan kay oswa atravè ekstansyon twazyèm pati, ki gen ladan metòd log binè, bloke disk, ak metòd ki baze sou deklarasyon ak ranje.

Replikasyon kwa ant MySQL ak PostgreSQL nesesè pou yon migrasyon yon sèl fwa soti nan yon sèvè baz done a yon lòt. Baz done sa yo itilize diferan pwotokòl, kidonk li pa posib pou lyen yo dirèkteman. Pou etabli echanj done, ou ka itilize yon zouti ekstèn sous louvri, pou egzanp pg_chameleon.

Ki sa ki pg_chameleon

pg_chameleon se yon sistèm replikasyon soti nan MySQL nan PostgreSQL nan Python 3. Li sèvi ak sous louvri bibliyotèk mysql-replikasyon, tou nan Python. Imaj ranje yo ekstrè soti nan tab MySQL epi estoke kòm objè JSONB nan baz done PostgreSQL, ak Lè sa a, dechifre pa fonksyon an pl/pgsql epi repwodui nan baz done PostgreSQL.

Karakteristik pg_chameleon

Plizyè chema MySQL ki soti nan menm gwoup la ka repwodui nan yon sèl baz done PostgreSQL sib nan yon konfigirasyon youn-a-anpil.
Non chema sous ak sib yo pa ka menm.
Done replikasyon yo ka rekipere nan yon kopi MySQL kaskad.
Tablo ki pa ka repwodui oswa pwodui erè yo eskli.
Chak fonksyon replikasyon kontwole pa demon.
Kontwòl atravè paramèt ki baze sou YAML ak dosye konfigirasyon.

Egzanp

Lame
vm1
vm2

OS vèsyon
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

Vèsyon sèvè DB
Miskl 5.7.26
PostgreSQL 10.5

DB pò
3306
5433

Adrès IP
192.168.56.102
192.168.56.106

Pou kòmanse, prepare tout eleman ki nesesè yo enstale pg_chameleon. Egzanp sa a enstale Python 3.6.8, ki kreye ak aktive anviwònman vityèl la.

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

Apre w fin enstale Python3.6 avèk siksè, ou bezwen ranpli kondisyon ki rete yo, tankou kreye ak aktive yon anviwònman vityèl. Anplis de sa, modil pip la mete ajou ak dènye vèsyon an epi yo itilize pou enstale pg_chameleon. Kòmandman ki anba yo espre enstale pg_chameleon 2.0.9, byenke dènye vèsyon an se 2.0.10. Sa nesesè pou evite nouvo pinèz nan vèsyon an mete ajou.

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

Lè sa a, nou rele pg_chameleon (kameleon se yon lòd) ak agiman set_configuration_files pou pèmèt pg_chameleon epi kreye repèrtwar default ak fichye konfigirasyon.

(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

Koulye a, nou kreye yon kopi config-example.yml kòm default.yml pou li vin dosye konfigirasyon default la. Yo bay yon echantiyon fichye konfigirasyon pou egzanp sa a anba a.

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

Fichye konfigirasyon an nan egzanp sa a se yon echantiyon fichye pg_chameleon ak modifikasyon minè pou adapte anviwònman sous ak sib, epi pi ba a se yon apèsi sou diferan seksyon fichye konfigirasyon an.

Nan fichye konfigirasyon default.yml la gen yon seksyon nan paramèt mondyal, kote ou ka jere paramèt tankou kote dosye a fèmen, kote mòso bwa, peryòd depo pou mòso bwa, elatriye. yon seri règ pou plis pase kalite pandan replikasyon. Egzanp la pa default nan yon règ ki depase kalite ki konvèti tinyint(1) nan yon valè booleyen. Nan pwochen seksyon an, nou presize detay koneksyon ak baz done sib la. Nan ka nou an, sa a se yon baz done PostgreSQL, ki deziyen pg_conn. Nan dènye seksyon an, nou endike done sous yo, se sa ki, paramèt koneksyon nan baz done sous la, konplo a kat ant baz done sous ak sib, tab ki bezwen sote, tan tann, memwa, gwosè pake. Remake byen ke "sous" se pliryèl, sa vle di nou ka ajoute baz done plizyè sous nan yon sèl baz done sib pou mete kanpe yon konfigirasyon anpil-a-yon sèl.

Baz done egzanp world_x gen 4 tab ak ranje ke kominote a MySQL ofri kòm egzanp. Li ka telechaje isit la. Baz done echantiyon an vini kòm yon achiv goudwon ​​ak konprese ak enstriksyon pou kreye ak enpòte ranje.

Nan baz done MySQL ak PostgreSQL, yo kreye yon itilizatè espesyal ak menm non usr_replica. Nan MySQL, yo bay li plis dwa lekti nan tout tab replike.

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;

Sou bò PostgreSQL, yo kreye yon baz done db_replica ki pral aksepte chanjman ki soti nan baz done MySQL. Itilizatè a usr_replica nan PostgreSQL otomatikman konfigirasyon kòm pwopriyetè de chema, pgworld_x ak sch_chameleon, ki genyen tab aktyèl yo replike ak tab anyè replikasyon yo, respektivman. Agiman create_replica_schema la responsab pou konfigirasyon otomatik, jan ou pral wè anba a.

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

Baz done MySQL la configuré ak kèk chanjman paramèt pou prepare li pou replikasyon jan yo montre anba a. Ou pral bezwen rekòmanse sèvè baz done a pou chanjman yo pran efè.

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

Koulye a, li enpòtan yo tcheke koneksyon an nan tou de serveurs baz done pou pa gen okenn pwoblèm lè w ap kouri kòmandman pg_chameleon yo.

Sou ne PostgreSQL:

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

Sou ne MySQL:

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

Twa pwochen pg_chameleon (kameleon) kòmandman yo prepare anviwònman an, ajoute sous la, epi inisyalize kopi a. Agiman create_replica_schema pou pg_chameleon kreye yon chema default (sch_chameleon) ak yon chema replikasyon (pgworld_x) nan baz done PostgreSQL, jan nou te deja diskite. Agiman add_source ajoute yon baz done sous nan konfigirasyon an lè li li fichye konfigirasyon an (default.yml), ak nan ka nou an li se mysql, ak init_replica inisyalize konfigirasyon an ki baze sou paramèt yo nan dosye a konfigirasyon.

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

Pwodiksyon twa kòmandman sa yo montre klèman ke yo te egzekite avèk siksè. Nenpòt aksidan oswa erè sentaks yo rapòte nan mesaj senp, klè ak sijesyon sou kòman yo ranje pwoblèm nan.

Finalman, nou kòmanse replikasyon lè l sèvi avèk start_replica epi resevwa yon mesaj siksè.

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

Yo ka mande estati replikasyon yo lè l sèvi avèk agiman show_status la, epi yo ka wè erè lè l sèvi avèk agiman show_errors.

Rezilta a.

Kòm nou te deja di, chak fonksyon replikasyon kontwole pa demon. Pou wè yo, nou mande tab pwosesis la ak lòd Linux ps la, jan yo montre anba a.

Rezilta a.

Replikasyon pa konsidere kòm configuré jiskaske nou teste li an tan reyèl, jan yo montre anba a. Nou kreye yon tab, mete yon koup dosye nan baz done MySQL, epi rele agiman sync_tables nan pg_chameleon pou mete ajou demon yo epi replike tablo a ak dosye yo nan baz done PostgreSQL la.

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.

Pou konfime rezilta tès yo, nou mande tab la nan baz done PostgreSQL la epi bay ranje yo.

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

Si n ap fè yon migrasyon, kòmandman pg_chameleon sa yo pral fini. Kòmandman yo dwe egzekite apre nou fin sèten ke ranje tout tab sib yo te repwodui, epi rezilta a pral yon baz done PostgreSQL byen imigre san referans a baz done sous oswa konplo replikasyon (sch_chameleon).

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

Si ou vle, ou ka itilize kòmandman sa yo pou efase konfigirasyon orijinal la ak konplo replikasyon.

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

Avantaj pg_chameleon

Fasil konfigirasyon ak konfigirasyon.
Fasil rezoud pwoblèm ak idantifye anomali ak mesaj erè klè.
Lòt tab espesyal yo ka ajoute nan replikasyon apre inisyalizasyon san yo pa chanje rès la nan konfigirasyon an.
Li posib pou konfigirasyon plizyè baz done sous pou yon sèl baz done sib, e sa a trè itil si w ap konbine done ki sòti nan youn oswa plis baz done MySQL nan yon sèl baz done PostgreSQL.
Ou pa bezwen repwodui tab yo chwazi yo.

Dezavantaj pg_chameleon

Sèlman sipòte ak MySQL 5.5 ak pi wo kòm sous ak PostgreSQL 9.5 ak pi wo kòm baz done sib.
Chak tab dwe gen yon kle prensipal oswa inik, otreman tab yo inisyalize pandan pwosesis init_replica la men yo pa repwodui.
Replikasyon nan yon sèl-fason - sèlman soti nan MySQL nan PostgreSQL. Se poutèt sa, li se sèlman apwopriye pou kous la "aktif-pasif".
Sous la kapab sèlman yon baz done MySQL, ak sipò pou yon baz done PostgreSQL kòm yon sous se sèlman eksperimantal ak limit (aprann plis isit la)

Rezilta pou pg_chameleon

Metòd replikasyon an nan pg_chameleon se gwo pou imigre yon baz done soti nan MySQL nan PostgreSQL. Dezavantaj enpòtan an se ke replikasyon se sèlman yon sèl-fason, kidonk pwofesyonèl baz done yo fasil vle sèvi ak li pou nenpòt lòt bagay pase migrasyon. Men, pwoblèm nan nan yon sèl-fason replikasyon ka rezoud ak yon lòt zouti sous louvri - SymmetricDS.

Li plis nan dokiman ofisyèl la isit la. Ou ka jwenn èd liy kòmand isit la.

Apèsi sou SymmetricDS

SymmetricDS se yon zouti sous louvri ki replike nenpòt baz done nan nenpòt lòt baz done komen: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird ak lòt ka baz done nwaj, pa egzanp Redshift, ak Azure, elatriye Karakteristik ki disponib: baz done ak senkronizasyon dosye, replikasyon baz done milti-mèt, senkronizasyon filtre, transfòmasyon ak lòt moun. Sa a se yon zouti Java epi li mande pou yon lage estanda JRE oswa JDK (vèsyon 8.0 oswa pi wo). Isit la, chanjman done nan deklannche nan baz done sous la ka anrejistre epi voye nan baz done a sib ki apwopriye nan fòm lan nan lo.

SymmetricDS karakteristik

Zouti a se platfòm endepandan, sa vle di de oswa plis baz done diferan ka echanj done.
Baz done relasyon yo senkronize lè l sèvi avèk dosye chanjman done, pandan y ap baz done ki baze sou sistèm dosye yo itilize senkronizasyon dosye.
Replikasyon de-fason lè l sèvi avèk metòd Pouse ak Rale ki baze sou yon seri règ.
Transfè done posib sou rezo sekirite ak ba-bandwidth.
Otomatik rekiperasyon lè nœuds rekòmanse operasyon apre yon echèk ak otomatik rezolisyon konfli.
Cloud konpatib ak pwisan API ekstansyon.

Egzanp

SymmetricDS ka konfigirasyon nan youn nan de opsyon:
Yon nœud mèt (paran) ki kowòdone santralman replikasyon done ant de nœuds esklav (pitit), epi kominikasyon ant nœuds timoun fèt sèlman atravè paran an.
Yon ne aktif (Node 1) ka kominike pou replikasyon ak yon lòt ne aktif (Node 2) san yon entèmedyè.

Nan tou de opsyon, echanj done fèt lè l sèvi avèk Pouse ak Rale. Nan egzanp sa a nou pral konsidere yon konfigirasyon aktif-aktif. Li ta pran twò lontan pou dekri tout achitekti a, kidonk fè rechèch ou an. lidèchippou aprann plis sou aparèy SymmetricDS la.

Enstale SymmetricDS se trè senp: telechaje vèsyon sous louvri nan dosye postal la kon sa epi pran li kote ou vle. Tablo ki anba a bay enfòmasyon sou kote enstalasyon an ak vèsyon SymmetricDS nan egzanp sa a, ansanm ak vèsyon baz done yo, vèsyon Linux, adrès IP, ak pò pou tou de nœuds.

Lame
vm1
vm2

OS vèsyon
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

Vèsyon sèvè DB
Miskl 5.7.26
PostgreSQL 10.5

DB pò
3306
5832

Adrès IP
192.168.1.107
192.168.1.112

SymmetricDS vèsyon
SymmetricDS 3.9
SymmetricDS 3.9

SymmetricDS chemen enstalasyon
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

SymmetricDS non ne
corp-000
magazen-001

Isit la nou enstale SymmetricDS nan /usr/local/symmetric-server-3.9.20, ak divès kalite subdirectory ak dosye yo pral estoke la. Nou enterese nan echantiyon yo ak sous-répertoires motè yo. Anyè echantiyon yo genyen egzanp fichye konfigirasyon ak pwopriyete ne, ansanm ak egzanp scripts SQL pou w kòmanse byen vit.

Nan anyè echantiyon an nou wè twa fichye konfigirasyon ak pwopriyete ne - non an montre nati a nan ne nan yon konplo sèten.

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

SymmetricDS gen tout fichye konfigirasyon ki nesesè pou yon konsepsyon debaz 3-nœuds (opsyon 1), epi yo ka itilize menm dosye yo pou yon konsepsyon 2-nœuds (opsyon 2). Kopi fichye konfigirasyon ki nesesè nan anyè echantiyon yo nan motè sou lame vm1 la. Li sanble tankou sa a:

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

Ne sa a nan konfigirasyon SymmetricDS yo rele corp-000, epi koneksyon baz done a okipe pa chofè a mysql jdbc, ki sèvi ak kòd koneksyon ki anwo a ak kalifikasyon yo konekte. Nou konekte ak baz done replica_db epi yo pral kreye tab pandan kreyasyon chema. sync.url montre ki kote pou kontakte ne pou senkronizasyon.

Node 2 sou host vm2 configuré kòm magazen-001 epi rès la espesifye nan fichye node.properties ki anba a. Node store-001 kouri baz done PostgreSQL ak pgdb_replica se baz done replikasyon an. registration.url pèmèt host vm2 kontakte lame vm1 epi resevwa detay konfigirasyon nan men li.

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

Egzanp SymmetricDS ranpli a gen paramèt pou mete kanpe replikasyon de-fason ant de serveurs baz done (de nœuds). Etap ki anba yo fèt sou lame vm1 (corp-000), ki pral kreye yon chema egzanp ak 4 tab. Lè sa a, kouri create-sym-tables ak kòmand symadmin la kreye tab anyè kote règ ak direksyon replikasyon ant nœuds yo pral estoke. Finalman, echantiyon done yo chaje nan tab yo.

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

Nan egzanp lan, atik ak tab item_selling_price yo otomatikman konfigirasyon pou replike soti nan corp-000 rive nan store-001, epi tab lavant yo (sale_transaction ak sale_return_line_item) yo otomatikman konfigirasyon pou replike soti nan store-001 rive nan corp-000. Koulye a, nou kreye yon chema nan baz done PostgreSQL sou host vm2 (magazen-001) pou prepare li pou resevwa done ki soti nan corp-000.

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

Asire w ke w tcheke baz done MySQL la sou vm1 gen tab egzanp ak tab katalòg SymmetricDS. Remake byen ke tablo sistèm SymmetricDS yo (prefiks ak sym_) yo disponib kounye a sèlman sou node corp-000 paske se la nou te kouri kòmandman an create-sym-tables epi yo pral jere replikasyon. Ak nan baz done a sou ne magazen-001 pral gen sèlman 4 egzanp tab san done.

Tout. Anviwònman an pare pou kouri pwosesis sèvè sym sou tou de nœuds jan yo montre anba a.

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

Antre mòso yo voye nan yon dosye mòso background (symmetric.log) nan katab mòso bwa yo nan anyè kote SymmetricDS enstale a, ansanm ak pwodiksyon estanda. Sèvè sym la kapab kounye a inisye sou node store-001.

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

Si ou kouri pwosesis sèvè sym la sou lame vm2 a, li pral kreye tou tab katalòg SymmetricDS nan baz done PostgreSQL la. Si ou kouri pwosesis sèvè sym la sou tou de nœuds, yo kowòdone youn ak lòt pou repwodui done ki soti nan corp-000 rive nan magazen-001. Si apre kèk segond nou mande tout 4 tab sou tou de bò yo, nou pral wè ke replikasyon an te reyisi. Oswa ou ka voye bootstrap la nan node store-001 soti nan corp-000 ak lòd sa a.

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

Nan pwen sa a, yo mete yon nouvo dosye nan tab atik la nan baz done MySQL sou node corp-000 (lame: vm1), epi ou ka tcheke replikasyon li nan baz done PostgreSQL la sou node store-001 (lame: vm2). Nou wè yon operasyon Pull pou deplase done ki soti nan corp-000 nan magazen-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)

Pou fè yon operasyon Pouse pou deplase done ki soti nan magazen-001 rive nan corp-000, nou mete yon dosye nan tab sale_transaction epi verifye ke replikasyon an reyisi.

Rezilta a.

Nou wè konfigirasyon siksè nan replikasyon de-fason nan tab egzanp yo ant MySQL ak PostgreSQL baz done. Pou mete kanpe replikasyon pou nouvo tab itilizatè yo, swiv etap sa yo: Nou kreye tab t1 pou egzanp ak konfigirasyon règ replikasyon li yo jan sa a. Nan fason sa a nou konfigirasyon sèlman replikasyon soti nan corp-000 nan magazen-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)

Lè sa a, konfigirasyon an notifye sou chanjman nan chema, se sa ki, adisyon a nan yon nouvo tab, lè l sèvi avèk kòmand symadmin la ak agiman sync-triggers la, ki rkree deklannche yo nan kat definisyon tab yo. send-schema egzekite pou voye chanjman chema nan node store-001, epi se replikasyon tab t1 configuré.

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

Benefis SymmetricDS

Fasil enstalasyon ak konfigirasyon, ki gen ladan yon seri dosye pare ak paramèt pou kreye yon sikwi twa-nœud oswa de-nœud.
Baz done kwa-platfòm ak endepandans platfòm, ki gen ladan serveurs, laptops ak aparèy mobil.
Repwodui nenpòt baz done nan nenpòt lòt baz done lokalman, sou WAN oswa nan nwaj la.
Posiblite pou travay pi bon ak yon koup la baz done oswa plizyè mil pou replikasyon pratik.
Peye vèsyon ak entèfas ak sipò ekselan.

Dezavantaj SymmetricDS

Ou bezwen manyèlman defini règ yo ak direksyon replikasyon sou liy lòd la atravè deklarasyon SQL pou chaje tab katalòg, ki ka enkonvenyan.
Mete kanpe anpil tab pou replikasyon ka fatigan sof si ou itilize scripts pou kreye deklarasyon SQL ki defini règ ak direksyon replikasyon.
Gen twòp enfòmasyon ki anrejistre nan mòso bwa yo, epi pafwa ou bezwen pwòp dosye mòso a pou li pa pran twòp espas.

Rezilta pou SymmetricDS

SymmetricDS pèmèt ou mete kanpe de-fason replikasyon ant de, twa, oswa menm plizyè milye nœuds pou repwodui ak senkronize fichye yo. Sa a se yon zouti inik ki poukont fè anpil travay, tankou rekiperasyon done otomatik apre yon peryòd tan ki long sou yon ne, echanj done sekirite ak efikas ant noeuds atravè HTTPS, jesyon otomatik konfli ki baze sou yon seri règ, elatriye SymmetricDS fè replikasyon ant nenpòt baz done, kidonk, li ka itilize pou yon gran varyete senaryo, ki gen ladan migrasyon, migrasyon, distribisyon, filtraj, ak transfòmasyon nan done atravè platfòm.

Egzanp lan baze sou ofisyèl la gid rapid pa SymmetricDS. NAN manyèl itilizatè Dekri an detay divès konsèp ki enplike nan konfigirasyon replikasyon ak SymmetricDS.

Sous: www.habr.com

Add nouvo kòmantè