Tar-riochdachadh eadar PostgreSQL agus MySQL

Tar-riochdachadh eadar PostgreSQL agus MySQL

Bheir mi cunntas air tar-riochdachadh eadar PostgreSQL agus MySQL, a bharrachd air dòighean airson tar-riochdachadh a stèidheachadh eadar an dà fhrithealaiche stòr-dàta. Mar as trice, canar co-sheòrsach ri stòran-dàta tar-chòmhla, agus tha e na dhòigh goireasach air gluasad bho aon fhrithealaiche RDBMS gu fear eile.

Thathas den bheachd gu bheil stòran-dàta PostgreSQL agus MySQL dàimheach, ach le leudachadh a bharrachd tha iad a’ tabhann comasan NoSQL. An seo bruidhnidh sinn air ath-riochdachadh eadar PostgreSQL agus MySQL bho shealladh DBMS dàimheach.

Cha toir sinn cunntas air an obair a-staigh gu lèir, dìreach na prionnsapalan bunaiteach gus am faigh thu beachd air mac-samhail a rèiteachadh eadar frithealaichean stòr-dàta, buannachdan, crìochan agus cùisean cleachdaidh.

Mar as trice, bidh ath-riochdachadh eadar dà fhrithealaiche stòr-dàta co-ionann air a dhèanamh an dàrna cuid ann am modh binary no a’ cleachdadh cheistean eadar maighstir (aka foillsichear, maighstir, no gnìomhach) agus tràill (fo-sgrìobhaiche, cùl-taic, no fulangach). Is e adhbhar ath-riochdachadh leth-bhreac fìor-ùine den phrìomh stòr-dàta a thoirt seachad air taobh nan tràillean. Anns a 'chùis seo, tha dàta air a ghluasad bho mhaighstir gu tràill, is e sin, bho ghnìomhach gu fulangach, oir chan eil ath-riochdachadh air a dhèanamh ach ann an aon taobh. Ach faodaidh tu ath-riochdachadh a stèidheachadh eadar dà stòr-dàta anns gach taobh, gus am bi dàta air a ghluasad bho thràill gu maighstir ann an rèiteachadh gnìomhach-gnìomhach. Tha seo uile, a’ gabhail a-steach ath-riochdachadh cascading, comasach eadar dhà no barrachd frithealaichean stòr-dàta co-ionann.Tha rèiteachadh gnìomhach-gnìomhach no gnìomhach-fulangach an urra ri feum, cothrom air comasan mar sin anns a’ chiad rèiteachadh no cleachdadh fhuasglaidhean rèiteachaidh taobh a-muigh agus malairt-malairt gnàthaichte .

Tha e comasach an rèiteachadh a chaidh a mhìneachadh eadar diofar luchd-frithealaidh stòr-dàta. Faodar am frithealaiche a rèiteachadh gus gabhail ri dàta ath-aithris bho fhrithealaiche stòr-dàta eile agus fhathast a’ cumail dealbhan fìor-ùine den dàta a chaidh ath-riochdachadh. Bidh MySQL agus PostgreSQL a’ tabhann a’ mhòr-chuid de na rèiteachaidhean sin a-staigh no tro leudachadh treas-phàrtaidh, a’ toirt a-steach dòighean log dà-chànanach, glasadh diosc, agus dòighean aithris is sreath.

Tha feum air tar-riochdachadh eadar MySQL agus PostgreSQL airson imrich aon-ùine bho aon fhrithealaiche stòr-dàta gu fear eile. Bidh na stòran-dàta sin a’ cleachdadh diofar phròtacalan, agus mar sin chan eil e comasach an ceangal gu dìreach. Gus iomlaid dàta a stèidheachadh, faodaidh tu inneal stòr fosgailte taobh a-muigh a chleachdadh, mar eisimpleir pg_chameleon.

Dè th' ann am pg_chameleon

Tha pg_chameleon na shiostam mac-samhail bho MySQL gu PostgreSQL ann am Python 3. Bidh e a’ cleachdadh leabharlann mac-samhail mysql-tùs fosgailte, cuideachd ann am Python. Tha ìomhaighean sreath air an toirt a-mach à clàran MySQL agus air an stòradh mar nithean JSONB ann an stòr-dàta PostgreSQL, agus an uairsin air an dì-chrioptachadh leis a’ ghnìomh pl / pgsql agus air an ath-riochdachadh ann an stòr-dàta PostgreSQL.

Feartan pg_chameleon

Faodar ioma sgeamaichean MySQL bhon aon bhuidheann ath-aithris gu stòr-dàta aon targaid PostgreSQL ann an rèiteachadh aon-gu-iomadach
Chan urrainn dha ainmean sgeama stòr is targaid a bhith mar an ceudna.
Faodar dàta mac-samhail fhaighinn air ais bho mhac-samhail MySQL a chaidh a sgaoileadh.
Tha clàran nach urrainn ath-riochdachadh no mearachdan a thoirt gu buil air an dùnadh a-mach.
Tha gach gnìomh mac-samhail fo smachd daemons.
Smachd tro pharamadairean stèidhichte air YAML agus faidhlichean rèiteachaidh.

Eisimpleir:

òstair
mum 1
mum 2

Tionndadh OS
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

Tionndadh an fhrithealaiche DB
MySQL 5.7.26
PostgreSQL 10.5

port DB
3306
5433

Seòladh IP
192.168.56.102
192.168.56.106

Gus tòiseachadh, ullaich na pàirtean riatanach uile gus pg_chameleon a stàladh. Bidh an eisimpleir seo a’ stàladh Python 3.6.8, a bhios a’ cruthachadh agus a’ cur an gnìomh an àrainneachd bhrìgheil.

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

Às deidh dhut Python3.6 a chuir a-steach gu soirbheachail, feumaidh tu na riatanasan a tha air fhàgail a choileanadh, leithid cruthachadh agus cuir an gnìomh àrainneachd bhrìgheil. A bharrachd air an sin, tha am modal pip air ùrachadh chun dreach as ùire agus air a chleachdadh gus pg_chameleon a stàladh. Bidh na h-òrdughan gu h-ìosal a’ stàladh pg_chameleon 2.0.9 a dh’aona ghnothach, ged is e 2.0.10 an dreach as ùire. Tha seo riatanach gus biastagan ùra a sheachnadh san dreach ùraichte.

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

Bidh sinn an uairsin a’ gairm pg_chameleon (tha chameleon na àithne) leis an argamaid set_configuration_files gus pg_chameleon a chomasachadh agus clàran bunaiteach agus faidhlichean rèiteachaidh a chruthachadh.

(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

A-nis bidh sinn a’ cruthachadh leth-bhreac de config-example.yml mar default.yml gus am bi e mar am faidhle rèiteachaidh bunaiteach. Tha faidhle rèiteachaidh sampall airson an eisimpleir seo air a thoirt seachad gu h-ìosal.

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

Tha am faidhle rèiteachaidh san eisimpleir seo na shampall pg_chameleon faidhle le mion-atharrachaidhean a fhreagras air an tùs agus àrainneachdan targaid, agus gu h-ìosal tha sealladh farsaing air na diofar earrannan den fhaidhle rèiteachaidh.

Anns an fhaidhle rèiteachaidh default.yml tha earrann de shuidheachaidhean cruinne, far an urrainn dhut suidheachaidhean a riaghladh leithid suidheachadh an fhaidhle glasaidh, suidheachadh nan logaichean, an ùine stòraidh airson logaichean, msaa. seata de riaghailtean airson a dhol thairis air seòrsaichean aig àm ath-riochdachadh. Tha an t-eisimpleir a’ dol an aghaidh riaghailt thar-ghnèitheach a dh’atharraicheas tinyint(1) gu luach boolean. Anns an ath earrann, bidh sinn a 'sònrachadh mion-fhiosrachadh a' cheangail ris an stòr-dàta targaid. Anns a’ chùis againn, is e seo stòr-dàta PostgreSQL, ainmichte pg_conn. Anns an earrainn mu dheireadh, tha sinn a’ comharrachadh an dàta stòr, is e sin, paramadairean ceangail an stòr-dàta stòr, an sgeama mapaidh eadar an stòr-dàta stòr agus targaid, clàran a dh’ fheumar a sheachnadh, ùine feitheimh, cuimhne, meud pacaid. Thoir an aire gu bheil “stòran” iolra, a’ ciallachadh gun urrainn dhuinn grunn stòran-dàta a chur ri aon stòr-dàta targaid gus rèiteachadh ioma-ri-aon a stèidheachadh.

Anns an stòr-dàta eisimpleir world_x tha 4 bùird le sreathan a tha coimhearsnachd MySQL a’ tabhann mar eisimpleirean. Faodar a luchdachadh sìos an seo. Tha an stòr-dàta sampall a’ tighinn mar thasglann teàrr agus teann le stiùireadh airson sreathan a chruthachadh agus a thoirt a-steach.

Ann an stòran-dàta MySQL agus PostgreSQL, thèid cleachdaiche sònraichte a chruthachadh leis an aon ainm usr_replica. Ann am MySQL, tha e a’ faighinn còraichean leughaidh a bharrachd air a h-uile clàr ath-ghinte.

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;

Air taobh PostgreSQL, thèid stòr-dàta db_replica a chruthachadh a ghabhas ri atharrachaidhean bhon stòr-dàta MySQL. Tha an cleachdaiche usr_replica ann am PostgreSQL air a rèiteachadh gu fèin-ghluasadach mar neach-seilbh dà sgeama, pgworld_x agus sch_chameleon, anns a bheil na clàran ath-mhìnichte agus na clàran eòlaire mac-samhail, fa leth. Tha an argamaid create_replica_schema an urra ri rèiteachadh fèin-ghluasadach, mar a chì thu gu h-ìosal.

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

Tha an stòr-dàta MySQL air a rèiteachadh le atharrachaidhean paramadair gus a dheasachadh airson ath-riochdachadh mar a chithear gu h-ìosal. Feumaidh tu frithealaiche an stòr-dàta ath-thòiseachadh airson na h-atharrachaidhean a thoirt gu buil.

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

A-nis tha e cudromach sgrùdadh a dhèanamh air a’ cheangal ris an dà fhrithealaiche stòr-dàta gus nach bi duilgheadasan ann nuair a bhios tu a ’ruith na h-òrdughan pg_chameleon.

Air an nód PostgreSQL:

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

Air an nód MySQL:

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

Bidh na trì òrdughan pg_chameleon (chameleon) a tha romhainn ag ullachadh na h-àrainneachd, cuir ris an stòr, agus tòisichidh am mac-samhail. Bidh an argamaid create_replica_schema gu pg_chameleon a’ cruthachadh sgeama bunaiteach (sch_chameleon) agus sgeama mac-samhail (pgworld_x) ann an stòr-dàta PostgreSQL, mar a bhruidhinn sinn mu thràth. Cuiridh an argamaid add_source stòr-dàta ris an rèiteachadh le bhith a’ leughadh am faidhle rèiteachaidh (default.yml), agus anns a’ chùis againn is e mysql a th’ ann, agus init_replica a’ tòiseachadh an rèiteachadh stèidhichte air na paramadairean san fhaidhle rèiteachaidh.

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

Tha toradh nan trì àitheantan sin a’ nochdadh gu soilleir gun deach an cur gu bàs gu soirbheachail. Thathas ag aithris mu thubaistean no mearachdan co-chòrdadh ann am teachdaireachdan sìmplidh, soilleir le molaidhean air mar a chuireas tu an duilgheadas air dòigh.

Mu dheireadh, bidh sinn a’ tòiseachadh air ath-riochdachadh le bhith a’ cleachdadh start_replica agus a’ faighinn teachdaireachd soirbheachais.

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

Faodar inbhe mac-samhail a cheasnachadh a’ cleachdadh an argamaid show_status, agus chithear mearachdan leis an argamaid show_errors.

Toradh.

Mar a thuirt sinn mu thràth, tha gach gnìomh mac-samhail fo smachd daemons. Gus am faicinn, bidh sinn a’ ceasnachadh a’ chlàr pròiseas leis an àithne Linux ps, mar a chithear gu h-ìosal.

Toradh.

Chan eilear den bheachd gu bheil ath-riochdachadh air a rèiteachadh gus an dèan sinn deuchainn air ann an àm fìor, mar a chithear gu h-ìosal. Cruthaichidh sinn clàr, cuir a-steach clàr no dhà a-steach don stòr-dàta MySQL, agus cuir fios gu argamaid sync_tables ann am pg_chameleon gus na daemons ùrachadh agus ath-aithris a dhèanamh air a’ chlàr leis na clàran gu stòr-dàta PostgreSQL.

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.

Gus toraidhean an deuchainn a dhearbhadh, bidh sinn a’ ceasnachadh a’ bhùird bho stòr-dàta PostgreSQL agus a’ toirt a-mach na sreathan.

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

Ma tha sinn a’ dèanamh imrich, bidh na h-òrdughan pg_chameleon a leanas aig deireadh. Feumar na h-òrdughan a chuir an gnìomh às deidh dhuinn a bhith cinnteach gu bheil na sreathan de na clàran targaid uile air an ath-aithris, agus bidh an toradh mar stòr-dàta PostgreSQL air a ghluasad gu sgiobalta gun iomradh air an stòr-dàta stòr no sgeama ath-riochdachadh (sch_chameleon).

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

Ma thogras tu, faodaidh tu na h-òrdughan a leanas a chleachdadh gus an sgeama rèiteachaidh agus ath-riochdachadh tùsail a dhubhadh às.

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

Buannachdan pg_chameleon

Suidheachadh agus rèiteachadh furasta.
Fuasgladh gu furasta agus aithnich neo-riaghailteachdan le teachdaireachdan mearachd soilleir.
Faodar bùird sònraichte a bharrachd a chuir ri ath-riochdachadh às deidh an tòiseachadh gun a bhith ag atharrachadh an còrr den rèiteachadh.
Tha e comasach grunn stòran-dàta stòran a rèiteachadh airson aon stòr-dàta targaid, agus tha seo glè fheumail ma tha thu a’ cothlamadh dàta bho aon no barrachd stòran-dàta MySQL gu aon stòr-dàta PostgreSQL.
Chan fheum thu na clàran taghte ath-riochdachadh.

Eas-bhuannachdan pg_chameleon

Taic a-mhàin le MySQL 5.5 agus gu h-àrd mar stòr agus PostgreSQL 9.5 agus gu h-àrd mar stòr-dàta targaid.
Feumaidh prìomh iuchair neo iuchair shònraichte a bhith aig gach clàr, air neo thèid na clàran a thòiseachadh tron ​​phròiseas init_replica ach chan eil iad air an ath-aithris.
Ath-riochdachadh aon-shligheach - dìreach bho MySQL gu PostgreSQL. Mar sin, chan eil e freagarrach ach airson a’ chuairt “gnìomhach-fhulangach”.
Chan urrainn don stòr a bhith ach na stòr-dàta MySQL, agus chan eil taic airson stòr-dàta PostgreSQL mar stòr ach deuchainneach agus le crìochan (ionnsaich tuilleadh). an seo)

Toraidhean airson pg_chameleon

Tha an dòigh mac-samhail ann am pg_chameleon air leth math airson stòr-dàta a ghluasad bho MySQL gu PostgreSQL. Is e an ìsleachadh mòr nach eil ann ach ath-riochdachadh ach aon dòigh, agus mar sin chan eil e coltach gum bi proifeiseantaich stòr-dàta ag iarraidh a chleachdadh airson rud sam bith ach imrich. Ach faodar an duilgheadas a thaobh ath-riochdachadh aon-shligheach fhuasgladh le inneal stòr fosgailte eile - SymmetricDS.

Leugh tuilleadh anns na sgrìobhainnean oifigeil an seo. Gheibhear cuideachadh loidhne-àithne an seo.

Sealladh farsaing air SymmetricDS

Tha SymmetricDS na inneal stòr fosgailte a bhios ag ath-aithris stòr-dàta sam bith gu stòr-dàta cumanta sam bith eile: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird agus suidheachaidhean stòr-dàta sgòthan eile, me Redshift, agus Azure, msaa Feartan a tha rim faighinn: sioncronadh stòr-dàta agus faidhle, ath-riochdachadh stòr-dàta ioma-mhaighstir, sioncronadh sìoltachaidh, cruth-atharrachadh agus feadhainn eile. Is e inneal Java a tha seo agus tha feum air foillseachadh àbhaisteach den JRE no JDK (dreach 8.0 no nas àirde). An seo, faodar atharrachaidhean dàta gu luchd-brosnachaidh san stòr-dàta tùsail a chlàradh agus a chuir chun stòr-dàta targaid iomchaidh ann an cruth batches.

Feartan SymmetricDS

Tha an inneal neo-eisimeileach air àrd-ùrlar, a’ ciallachadh gun urrainn dha dhà no barrachd stòran-dàta eadar-dhealaichte dàta iomlaid.
Tha stòran-dàta dàimheach air an sioncronadh le bhith a’ cleachdadh clàran atharrachadh dàta, fhad ‘s a bhios stòran-dàta stèidhichte air siostam faidhle a’ cleachdadh sioncronadh faidhle.
Ath-riochdachadh dà-shligheach a’ cleachdadh dhòighean Push and Pull stèidhichte air seata de riaghailtean.
Tha e comasach gluasad dàta thairis air lìonraidhean tèarainte agus bann-leathann ìosal.
Ath-bheothachadh fèin-ghluasadach nuair a thòisicheas nodan ag obair às deidh fàilligeadh agus fuasgladh còmhstri fèin-ghluasadach.
APIan leudachaidh cumhachdach agus co-chosmhail ri Cloud.

Eisimpleir:

Faodar SymmetricDS a rèiteachadh ann an aon de dhà dhòigh:
Bidh nód maighstir (pàrant) a bhios gu bunaiteach a’ co-òrdanachadh ath-riochdachadh dàta eadar dà nod tràillean (leanabh), agus chan eil conaltradh eadar nodan cloinne a’ tachairt ach tron ​​​​phàrant.
Faodaidh nód gnìomhach (Node 1) conaltradh airson ath-riochdachadh le nód gnìomhach eile (Node 2) gun eadar-mheadhanair.

Anns an dà roghainn, bidh iomlaid dàta a ’tachairt a’ cleachdadh Push and Pull. San eisimpleir seo beachdaichidh sinn air rèiteachadh gnìomhach-gnìomhach. Bheireadh e ro fhada cunntas a thoirt air an ailtireachd gu lèir, mar sin dèan an rannsachadh agad. stiùireadhgus barrachd ionnsachadh mun inneal SymmetricDS.

Tha stàladh SymmetricDS gu math sìmplidh: luchdaich sìos an dreach stòr fosgailte den fhaidhle zip bho seo agus thoir a-mach e ge bith càite a bheil thu ag iarraidh. Tha an clàr gu h-ìosal a’ toirt seachad fiosrachadh mu shuidheachadh an stàlaidh agus an dreach de SymmetricDS san eisimpleir seo, a bharrachd air na dreachan stòr-dàta, dreachan Linux, seòlaidhean IP, agus puirt airson an dà nod.

òstair
mum 1
mum 2

Tionndadh OS
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

Tionndadh an fhrithealaiche DB
MySQL 5.7.26
PostgreSQL 10.5

port DB
3306
5832

Seòladh IP
192.168.1.107
192.168.1.112

Tionndadh SymmetricDS
SymmetricDS 3.9
SymmetricDS 3.9

Slighe stàlaidh SymmetricDS
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

Ainm nód SymmetricDS
corp-000
stòr-001

An seo bidh sinn a’ stàladh SymmetricDS ann an / usr/local/symmetric-server-3.9.20, agus bidh diofar fo-eòlairean agus faidhlichean air an stòradh an sin. Tha ùidh againn anns na sampallan agus fo-eòlairean einnseanan. Anns an eòlaire samples tha eisimpleirean de fhaidhlichean rèiteachaidh le feartan nód, a bharrachd air eisimpleirean de sgriobtaichean SQL gus do thòiseachadh gu sgiobalta.

Anns an eòlaire sampaill chì sinn trì faidhlichean rèiteachaidh le feartan nód - tha an t-ainm a ’sealltainn nàdar an nód ann an sgeama sònraichte.

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

Tha na faidhlichean rèiteachaidh riatanach aig SymmetricDS airson dealbhadh 3-nòd bunaiteach (roghainn 1), agus faodar na h-aon fhaidhlichean a chleachdadh airson dealbhadh 2-node (roghainn 2). Dèan lethbhreac den fhaidhle rèiteachaidh a tha a dhìth bhon eòlaire samples gu einnseanan air an aoigheachd vm1. Tha e a 'tionndadh a-mach mar seo:

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

Canar corp-000 ris an nód seo ann an rèiteachadh SymmetricDS, agus tha ceangal an stòr-dàta air a làimhseachadh leis an draibhear mysql jdbc, a chleachdas an sreang ceangail gu h-àrd agus na teisteanasan logaidh a-steach. Bidh sinn a’ ceangal ris an stòr-dàta replica_db agus thèid clàran a chruthachadh aig àm cruthachadh sgeamaichean. Tha sync.url a’ sealltainn far an cuir thu fios chun nód airson sioncronadh.

Tha Node 2 air aoigheachd vm2 air a rèiteachadh mar store-001 agus tha an còrr air a shònrachadh anns an fhaidhle node.properties gu h-ìosal. Bidh Node store-001 a’ ruith stòr-dàta PostgreSQL agus is e pgdb_replica an stòr-dàta mac-samhail. registration.url a’ leigeil le aoigheachd vm2 fios a chuir gu host vm1 agus fiosrachadh rèiteachaidh fhaighinn bhuaithe.

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

Anns an eisimpleir crìochnaichte SymmetricDS tha paramadairean airson ath-riochdachadh dà-shligheach a stèidheachadh eadar dà fhrithealaiche stòr-dàta (dà nod). Tha na ceumannan gu h-ìosal air an coileanadh air aoigheachd vm1 (corp-000), a chruthaicheas sgeama eisimpleir le 4 bùird. An uairsin le bhith a’ ruith create-sym-tables leis an àithne symadmin a’ cruthachadh chlàran seòlaidh far am bi na riaghailtean agus an t-slighe airson ath-riochdachadh eadar nodan air an stòradh. Mu dheireadh, tha sampall dàta air a luchdachadh a-steach do na clàran.

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

Anns an eisimpleir, tha an nì agus clàran item_selling_price air an rèiteachadh gu fèin-ghluasadach gus ath-riochdachadh bho corp-000 gu stòr-001, agus tha na clàran reic (sale_transaction agus sale_return_line_item) air an rèiteachadh gu fèin-ghluasadach gus ath-riochdachadh bho stòr-001 gu corp-000. A-nis bidh sinn a’ cruthachadh sgeama anns an stòr-dàta PostgreSQL air aoigheachd vm2 (store-001) gus ullachadh airson dàta fhaighinn bho corp-000.

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

Dèan cinnteach gun dèan thu cinnteach gu bheil clàran eisimpleir agus clàran catalog SymmetricDS aig stòr-dàta MySQL air vm1. Thoir an aire nach eil na clàran siostam SymmetricDS (ro-leasaichte le sym_) rim faighinn an-dràsta ach air nód corp-000 oir sin far an do ruith sinn an àithne create-sym-tables agus bidh sinn a’ riaghladh ath-riochdachadh. Agus anns an stòr-dàta air node store-001 cha bhi ach 4 clàran eisimpleir gun dàta.

Uile. Tha an àrainneachd deiseil gus pròiseasan frithealaiche sym a ruith air an dà nod mar a chithear gu h-ìosal.

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

Thèid inntrigidhean loga a chuir gu faidhle log cùl-raoin (symmetric.log) anns a’ phasgan logaichean san eòlaire far a bheil SymmetricDS air a chuir a-steach, a bharrachd air toradh àbhaisteach. Faodar am frithealaiche sym a thòiseachadh a-nis air nód store-001.

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

Ma ruitheas tu am pròiseas frithealaiche sym air an aoigh vm2, cruthaichidh e cuideachd clàran catalog SymmetricDS ann an stòr-dàta PostgreSQL. Ma ruitheas tu am pròiseas frithealaiche sym air an dà nod, bidh iad a’ co-òrdanachadh le chèile gus dàta ath-riochdachadh bho corp-000 gu stòr-001. Ma chuireas sinn ceist air na 4 bùird air gach taobh an dèidh beagan dhiog, chì sinn gun robh ath-riochdachadh soirbheachail. No faodaidh tu an bootstrap a chuir gu nód store-001 bho corp-000 leis an òrdugh a leanas.

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

Aig an ìre seo, tha clàr ùr air a chuir a-steach don chlàr nì ann an stòr-dàta MySQL air nód corp-000 (aoigheachd: vm1), agus faodaidh tu sgrùdadh a dhèanamh air ath-riochdachadh gu stòr-dàta PostgreSQL air nód store-001 (host: vm2). Chì sinn gnìomhachd Pull gus dàta a ghluasad bho chorp-000 gu stòr-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)

Gus gnìomhachd Push a dhèanamh gus dàta a ghluasad bho stòr-001 gu corp-000, bidh sinn a’ cuir a-steach clàr a-steach don chlàr sale_transaction agus a’ dearbhadh gu bheil ath-riochdachadh soirbheachail.

Toradh.

Chì sinn suidheachadh soirbheachail ath-riochdachadh dà-shligheach de na clàran eisimpleir eadar stòran-dàta MySQL agus PostgreSQL. Gus mac-samhail a stèidheachadh airson clàran cleachdaiche ùra, lean na ceumannan seo: Bidh sinn a’ cruthachadh clàr t1 mar eisimpleir agus a’ rèiteachadh a riaghailtean mac-samhail mar a leanas. San dòigh seo cha bhith sinn a’ rèiteachadh ach ath-riochdachadh bho chorp-000 gu stòr-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)

Thèid innse don rèiteachadh an uairsin mun atharrachadh sgeama, is e sin, clàr ùr a chur ris, a’ cleachdadh an àithne symadmin leis an argamaid sync-triggers, a bhios ag ath-chruthachadh na brosnachaidhean gus mìneachaidhean a’ bhùird a mhapadh. tha send-schema air a chuir gu bàs gus atharrachaidhean sgeama a chuir gu nód store-001, agus tha ath-riochdachadh clàr t1 air a rèiteachadh.

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

Buannachdan SymmetricDS

Stàladh agus rèiteachadh furasta, a’ toirt a-steach seata de fhaidhlichean deiseil le crìochan airson cuairteachadh trì-nòd no dà-nòd a chruthachadh.
Stòran-dàta tar-àrd-ùrlar agus neo-eisimeileachd àrd-ùrlair, a’ toirt a-steach frithealaichean, coimpiutairean-uchd agus innealan gluasadach.
Dèan lethbhreac de stòr-dàta sam bith gu stòr-dàta sam bith eile gu h-ionadail, air an WAN no san sgòth.
Comasach air obair as fheàrr le stòr-dàta no dhà no grunn mhìltean airson ath-riochdachadh goireasach.
Tionndadh pàighte le GUI agus taic sàr-mhath.

Eas-bhuannachdan SymmetricDS

Feumaidh tu na riaghailtean agus stiùireadh ath-riochdachadh air an loidhne-àithne a mhìneachadh le làimh tro aithrisean SQL gus clàran catalog a luchdachadh, rud a dh’ fhaodadh a bhith mì-ghoireasach.
Faodaidh e bhith duilich a bhith a’ stèidheachadh mòran chlàran airson ath-riochdachadh mura cleachd thu sgriobtaichean gus aithrisean SQL a chruthachadh a mhìnicheas riaghailtean agus stiùireadh ath-riochdachadh.
Tha cus fiosrachaidh ga chlàradh anns na logaichean, agus uaireannan feumaidh tu am faidhle log a sgioblachadh gus nach gabh e cus àite.

Toraidhean airson: SymmetricDS

Leigidh SymmetricDS leat ath-riochdachadh dà-shligheach a stèidheachadh eadar dhà, trì, no eadhon grunn mhìltean nodan gus faidhlichean ath-riochdachadh agus sioncronadh. Is e inneal sònraichte a tha seo a bhios a’ coileanadh mòran ghnìomhan gu neo-eisimeileach, leithid faighinn air ais dàta fèin-ghluasadach às deidh ùine fhada de dh ’ùine downt air nód, iomlaid dàta tèarainte is èifeachdach eadar nodan tro HTTPS, riaghladh còmhstri fèin-ghluasadach stèidhichte air seata de riaghailtean, msaa. Bidh SymmetricDS a’ coileanadh ath-riochdachadh eadar stòran-dàta sam bith, mar sin, faodar a chleachdadh airson measgachadh farsaing de shuidheachaidhean, a’ gabhail a-steach imrich, imrich, cuairteachadh, sìoladh, agus cruth-atharrachadh dàta thar àrd-ùrlaran.

Tha an eisimpleir stèidhichte air an oifigear stiùireadh luath le SymmetricDS. ANNS leabhar-làimhe neach-cleachdaidh A’ toirt cunntas mionaideach air na diofar bhun-bheachdan a tha an lùib a bhith a’ stèidheachadh mac-samhail le SymmetricDS.

Source: www.habr.com

Cuir beachd ann