Whakawhitiwhiti i waenga i te PostgreSQL me te MySQL

Whakawhitiwhiti i waenga i te PostgreSQL me te MySQL

Ka whakaraupapahia e ahau te tukurua whakawhiti i waenga i te PostgreSQL me te MySQL, me nga tikanga mo te whakarite tukurua-whakawhitinga i waenga i nga tūmau papaunga raraunga e rua. Ko te tikanga, ka kiia ko nga paataka whakawhiti-whakaritea he homogeneous, a he huarahi ngawari ki te neke mai i tetahi tūmau RDBMS ki tetahi atu.

PostgreSQL me MySQL e kiia ana he hononga, engari me etahi atu taapiri ka tukuna e ratou nga kaha NoSQL. I konei ka matapakihia te tukuruatanga i waenga i te PostgreSQL me MySQL mai i te tirohanga DBMS hononga.

E kore matou e whakaahua i nga mahi o roto katoa, ko nga maataapono noa kia whai whakaaro koe ki te whirihora i te tukuruatanga i waenga i nga kaitoro putunga, nga painga, nga here me nga keehi whakamahi.

Ko te tikanga, ka mahia te tukuruatanga i waenga i nga tūmau papaa raraunga e rua ma te aratau-rua, ma te whakamahi patai ranei i waenga i te rangatira (a.k.a. kaiwhakaputa, rangatira, hohe ranei) me tetahi taurekareka (kaiohauru, tutaataata, wahangu ranei). Ko te kaupapa o te tukurua ko te whakarato i te kape o te putunga matua i te taha taurekareka. I roto i tenei take, ka whakawhitihia nga raraunga mai i te rangatira ki te taurekareka, ara, mai i te kaha ki te kaha, na te mea ka mahia te tukurua i te huarahi kotahi. Engari ka taea e koe te whakarite tukuruatanga i waenga i nga papaa raraunga e rua i nga taha e rua, kia whakawhitia ai nga raraunga mai i te pononga ki te rangatira i roto i te whirihoranga hohe-hohe. Ka taea enei mea katoa, tae atu ki te tukurua ruuruku, i waenga i te rua, neke atu ranei o nga tūmau papaunga raraunga rite.

Ko te whirihoranga kua whakaahuatia ka taea i waenga i nga momo tūmau pātengi raraunga. Ka taea te whirihora i te tūmau ki te whakaae i ngā raraunga tāruarua mai i tētahi atu tūmau pātengi raraunga me te pupuri tonu i ngā whakaahua wā-tūturu o ngā raraunga kua tāruatia. Ka tukuna e MySQL me PostgreSQL te nuinga o enei whirihoranga i roto i te whare, na roto ranei i nga toronga tuatoru-tuatoru, tae atu ki nga tikanga rangitaki-rua, raka kōpae, me nga tikanga korero-me te rarangi.

Ko te tukurua whakawhiti i waenga i MySQL me PostgreSQL e hiahiatia ana mo te hekenga kotahi-wa mai i tetahi tūmau papaunga raraunga ki tetahi atu. He rereke nga kawa e whakamahia ana e enei papaunga raraunga, na reira kaore e taea te hono tika. Hei whakarite whakawhiti raraunga, ka taea e koe te whakamahi i tetahi taputapu puna tuwhera o waho, hei tauira pg_chameleon.

He aha te pg_chameleon

Ko te pg_chameleon he punaha tukurua mai i MySQL ki PostgreSQL i te Python 3. Ka whakamahia e ia te puna tuwhera puna mysql-tauruatanga, ano hoki i te Python. Ko nga whakaahua rarangi ka tangohia mai i nga ripanga MySQL ka rongoa hei taonga JSONB i roto i te papanga PostgreSQL, katahi ka wetewetehia e te mahi pl/pgsql me te whakaputa ano ki te papaaarangi PostgreSQL.

Nga ahuatanga o pg_chameleon

He maha nga aronuinga MySQL mai i te kahui kotahi ka taea te tukurua ki te papaunga raraunga PostgreSQL whainga kotahi i roto i te whirihoranga kotahi ki te maha.
Ko te pūtake me te ingoa aronuinga ūnga e kore e rite.
Ka taea te tango i nga raraunga tukurua mai i te tauira MySQL.
Ka whakakorehia nga ripanga kaore e taea te tukurua, te whakaputa hapa ranei.
Ko ia mahi tukurua e whakahaerehia ana e nga daemons.
Whakahaerehia ma nga tawhā-a-YAML me nga konae whirihoranga.

Hei tauira:

Kaihautū
vm1
vm2

Putanga OS
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

Putanga tūmau DB
MySQL 5.7.26
PostgreSQL 10.5

tauranga DB
3306
5433

Wāhitau IP
192.168.56.102
192.168.56.106

Hei timata, whakarite i nga waahanga katoa hei whakauru i te pg_chameleon. Ko tenei tauira ka whakauru i te Python 3.6.8, ka waihanga me te whakahohe i te taiao mariko.

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

I muri i te pai o te whakauru i te Python3.6, me whakaoti e koe nga whakaritenga e toe ana, penei i te hanga me te whakahohe i te taiao mariko. I tua atu, kua whakahoutia te waahanga pip ki te putanga hou ka whakamahia hei whakauru i te pg_chameleon. Ko nga whakahau i raro nei ka whakauruhia te pg_chameleon 2.0.9, ahakoa ko te putanga hou ko 2.0.10. He mea tika tenei ki te karo i nga pepeke hou i roto i te putanga whakahou.

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

Ka karangahia te pg_chameleon (he whakahau te chameleon) me te tautohenga set_configuration_files kia taea ai te pg_chameleon me te hanga i nga raarangi taunoa me nga konae whirihoranga.

(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

Inaianei ka hangaia he kape o config-example.yml hei default.yml kia noho hei konae whirihoranga taunoa. Kei raro nei he tauira konae whirihoranga mo tenei tauira.

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

Ko te kōnae whirihoranga i roto i tenei tauira he tauira pg_chameleon kōnae me nga whakarereketanga iti kia pai ki te puna me nga taiao whaainga, kei raro nei he tirohanga whanui mo nga waahanga rereke o te konae whirihoranga.

I roto i te kōnae whirihoranga default.yml he waahanga o nga tautuhinga o te ao, ka taea e koe te whakahaere i nga tautuhinga penei i te waahi o te kōnae raka, te waahi o nga rakau, te wa rokiroki mo nga rakau, me etahi atu. he huinga ture mo nga momo taapiri i te wa e tukurua ana. Ka taunoa te tauira ki tetahi momo ture e huri ana i te tinyint(1) ki te uara boolean. I roto i te waahanga e whai ake nei, ka tohua e matou nga taipitopito hononga ki te papaarangi kua tohua. I roto i ta maatau take, he putunga raraunga PostgreSQL tenei, kua tohua he pg_conn. I te waahanga whakamutunga, ka tohuhia e matou te raraunga puna, ara, nga tawhā hononga o te puna raraunga puna, te mahere mahere i waenga i te puna me nga papaaarangi whaainga, nga ripanga me pekehia, te wa tatari, te mahara, te rahi o te kete. Kia mahara ko "puna" he maha, te tikanga ka taea e tatou te taapiri i nga papaaarangi puna maha ki te papaaarangi whaainga kotahi hei whakarite i te whirihoranga maha-ki-tetahi.

Kei roto i te tauira raraunga world_x nga ripanga e 4 me nga rarangi ka tukuna e te hapori MySQL hei tauira. Ka taea te tango konei. Ko te tauira papaunga raraunga ka puta mai he tar me te puranga kōpeke me nga tohutohu mo te hanga me te kawe mai i nga rarangi.

I roto i nga papaunga raraunga MySQL me PostgreSQL, ka hangaia he kaiwhakamahi motuhake me te ingoa kotahi usr_replica. I roto i te MySQL, ka whakawhiwhia ki a ia etahi atu mana panui ki nga ripanga katoa.

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;

I te taha PostgreSQL, ka hangaia he db_replica pātengi raraunga ka whakaae ki ngā huringa mai i te pātengi raraunga MySQL. Ko te kaiwhakamahi usr_replica i roto i te PostgreSQL he mea whirihora aunoa hei rangatira mo nga kaupapa e rua, pgworld_x me sch_chameleon, kei roto ko nga ripanga tuuturu me nga ripanga whaiaronga tukurua. Ko te tohenga create_replica_schema te kawenga mo te whirihoranga aunoa, ka kite koe i raro nei.

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

Kua whirihorahia te papaunga raraunga MySQL me etahi huringa tawhā hei whakarite mo te tukuruatanga pera i raro nei. Me timata ano koe i te tūmau pātengi raraunga kia whai mana ai ngā huringa.

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

Inaianei he mea nui ki te tirotiro i te hononga ki nga kaitoro paparangi e rua kia kore ai he raruraru i te wa e whakahaere ana nga whakahau pg_chameleon.

I te node PostgreSQL:

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

I te kōpuku MySQL:

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

Ko nga whakahau pg_chameleon (chameleon) e toru e whai ake nei ka whakareri i te taiao, te taapiri i te puna, me te arawhiti i te tauira. Ko te tohenga create_replica_schema ki pg_chameleon ka hanga i te aronuinga taunoa (sch_chameleon) me te aronuinga tukurua (pgworld_x) i roto i te paataka raraunga PostgreSQL, kua korerohia e matou. Ko te tohenga add_source he taapiri i te puna raraunga ki te whirihoranga ma te panui i te konae whirihoranga (default.yml), a, i roto i ta maatau ko te mysql, a ko te init_replica ka arawhiti i te whirihoranga i runga i nga tawhā i te konae whirihoranga.

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

Ko te putanga o enei whakahau e toru e tino tohu ana i tutuki pai. Ko nga tukinga, nga hapa wetereo ranei ka panuitia i roto i nga karere maamaa, maamaa me nga tohu mo te whakatika i te raru.

Ka mutu, ka tiimata te tukurua ma te whakamahi start_replica ka whiwhi karere angitu.

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

Ka taea te patai te mana tukurua ma te whakamahi i te tohenga show_status, ka taea te tiro hapa ma te whakamahi i te tohenga show_errors.

Hua.

Ka rite ki ta maatau korero, ko ia mahi tukurua e whakahaerehia ana e nga daemons. Hei tiro ki a raatau, ka pataihia e matou te ripanga tukanga me te whakahau ps Linux, penei i raro nei.

Hua.

Ko te tukuruatanga karekau e kiia he whirihora tae noa ki te whakamatautau i te waa tuuturu, penei i raro nei. Ka hangaia e matou he ripanga, ka whakauru i nga rekoata e rua ki roto i te papaa raraunga MySQL, ka karangahia te tautohetohe sync_tables i pg_chameleon ki te whakahou i nga daemons me te tukurua i te ripanga me nga rekoata ki te papaarangi 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.

Hei whakaū i nga hua whakamatautau, ka pataihia e matou te ripanga mai i te paataka raraunga PostgreSQL me te whakaputa i nga rarangi.

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

Mena kei te heke taatau, ko nga whakahau pg_chameleon e whai ake nei ka mutu. Me mahi nga whakahau i muri i to maatau mohio kua tukuna nga rarangi o nga ripanga whainga katoa, a ko te hua ka waiho he putunga raraunga PostgreSQL kua nekehia me te kore tohutoro ki te puna raraunga, kaupapa tukurua ranei (sch_chameleon).

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

Ki te hiahia, ka taea e koe te whakamahi i nga whakahau e whai ake nei hei muku i te whirihoranga taketake me te kaupapa tukurua.

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

Nga painga o pg_chameleon

Te tatūnga ngawari me te whirihoranga.
He ngawari te rapu raruraru me te tautuhi i nga kohikohiko me nga karere hapa marama.
Ko etahi atu ripanga motuhake ka taea te taapiri ki te tukurua i muri i te arawhiti me te kore e whakarereke i te toenga o te whirihoranga.
Ka taea te whirihora i te maha o nga puna korero mo te papaaa raraunga kotahi, a he tino whai hua tenei mena kei te whakakotahi koe i nga raraunga mai i te kotahi, neke atu ranei nga papaaarangi MySQL ki roto i te papaaarangi PostgreSQL kotahi.
Kaore koe e whai ki te tukurua i nga ripanga kua tohua.

Nga kino o pg_chameleon

Ka tautokona anake me MySQL 5.5 me runga ake hei puna me te PostgreSQL 9.5 me runga ake hei papaa raraunga.
Me whai ki ia ripanga he taviri tuatahi, ahurei motuhake ranei, ki te kore ka arawhitihia nga ripanga i roto i te tukanga init_replica engari karekau i te tukurua.
Tukurua kotahi-ara - mai i MySQL ki PostgreSQL anake. Na reira, he pai noa mo te iahiko "kaha-kaha".
Ka taea anake te puna hei papaa raraunga MySQL, me te tautoko mo te paataka raraunga PostgreSQL i te mea ko te puna he whakamatautau noa me nga here (ako atu konei)

Nga hua mo pg_chameleon

He pai te tikanga tukurua i roto i te pg_chameleon mo te heke i te papaa raraunga mai i MySQL ki PostgreSQL. Ko te kino nui ko te tukurua he ara kotahi noa, no reira karekau pea e hiahia ana nga tohunga ki te whakamahi mo tetahi mea ke atu i te heke. Engari ko te raruraru o te tukurua kotahi-ara ka taea te whakatau me tetahi atu taputapu puna tuwhera - SymmetricDS.

Pānuihia i roto i nga tuhinga whaimana konei. Ka kitea te awhina raina whakahau konei.

Tirohanga o SymmetricDS

Ko te SymmetricDS he taputapu puna tuwhera e whakahoki ana i tetahi papaarangi ki tetahi atu papaa raraunga noa: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird me etahi atu waahi raraunga kapua, hei tauira, Redshift, me Azure, me etahi atu. Nga waahanga e waatea ana: te paataka raraunga me te tukutahi konae, te tukuruatanga papaaarangi maha-ariki, te tukutahi kua tātarihia, te hurihanga me etahi atu. He taputapu Java tenei me te hiahia he tuku paerewa o te JRE, JDK ranei (putanga 8.0 teitei ake ranei). I konei, ka taea te tuhi i nga huringa raraunga ki te keu i roto i te puna raraunga ka tukuna atu ki te papaaarangi e tika ana i runga i te ahua o nga puranga.

Nga waahanga SymmetricDS

He turanga motuhake te taputapu, ko te tikanga ka taea e rua, neke atu ranei nga papaa raraunga te whakawhiti raraunga.
Ka tukutahia nga paaunga hononga ma te whakamahi i nga rekoata huringa raraunga, engari ko nga papaaarangi-a-raupapa konae e whakamahi ana i te tukutahi konae.
Te tukurua-rua ma te whakamahi i nga tikanga Pana me te Kumea i runga i te huinga ture.
Ka taea te whakawhiti raraunga ma runga i nga whatunga haumaru me te arai-iti.
Whakaora aunoa ina mahi ano nga pona i muri i te rahunga me te whakatau papā aunoa.
Nga API toronga hototahi me te kaha o te kapua.

Hei tauira:

Ka taea te whirihora i te SymmetricDS i tetahi o nga whiringa e rua:
He kōpuku ariki (mātua) e ruruku ana i te tāruatanga raraunga i waenga i ngā kōpuku taurekareka (tamariki) e rua, ā, mā te matua anake te kōrero i waenga i ngā kōpuku tamariki.
Ka taea e te node hohe (Node 1) te whakawhitiwhiti mo te tukurua me tetahi atu node hohe (Node 2) kaore he takawaenga.

I nga whiringa rua, ka puta te whakawhiti raraunga ma te pana me te kume. I tenei tauira ka whakaarohia e matou he whirihoranga hohe-hohe. He roa rawa te whakaahua i te hoahoanga katoa, me mahi rangahau. rangatiraki te ako atu mo te taputapu SymmetricDS.

He tino ngawari te whakauru i te SymmetricDS: tango i te putanga puna tuwhera o te konae zip mai i konei me kawe atu ki hea e hiahia ana koe. Ko te ripanga i raro nei he korero mo te waahi whakaurunga me te putanga o SymmetricDS i roto i tenei tauira, tae atu ki nga putanga papaarangi, nga putanga Linux, nga wahitau IP, me nga tauranga mo nga pona e rua.

Kaihautū
vm1
vm2

Putanga OS
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

Putanga tūmau DB
MySQL 5.7.26
PostgreSQL 10.5

tauranga DB
3306
5832

Wāhitau IP
192.168.1.107
192.168.1.112

Putanga SymmetricDS
HangariteDS 3.9
HangariteDS 3.9

Ara whakaurunga SymmetricDS
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

Ingoa kōpuku SymmetricDS
corp-000
toa-001

I konei ka whakauruhia e matou te SymmetricDS ki /usr/local/symmetric-server-3.9.20, a ka penapenahia nga momo raarangiroto me nga konae ki reira. Kei te pirangi matou ki nga tauira me nga raarangi miihini miihini. Kei roto i te raarangi tauira nga konae whirihoranga tauira me nga ahuatanga node, me nga tauira tuhinga SQL hei timata wawe koe.

I roto i te raarangi tauira ka kite tatou i nga konae whirihoranga e toru me nga taonga node - ka whakaatu te ingoa i te ahua o te node i roto i tetahi kaupapa.

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

Kei a SymmetricDS nga konae whirihora e tika ana mo te hoahoa 3-node taketake (kowhiringa 1), a ka taea te whakamahi i nga konae ano mo te hoahoa 2-node (kwhiringa 2). Tāruahia te konae whirihoranga e hiahiatia ana mai i te raarangi tauira ki nga miihini i runga i te ope vm1. Ka puta penei:

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

Ko tenei node i roto i te whirihoranga SymmetricDS e kiia ana ko te corp-000, a ko te hononga raraunga e whakahaerea ana e te taraiwa mysql jdbc, e whakamahi ana i te aho hononga i runga ake nei me nga tohu whakaurunga. Ka hono atu matou ki te replica_db pātengi raraunga ka waihangahia nga ripanga i te wa o te hanga aronuinga. sync.url whakaatu te wahi ki te whakapā atu te node mo te tukutahi.

Ko te Node 2 i runga i te ope vm2 kua whirihorahia hei toa-001 me te toenga kua tohua ki te konae node.properties i raro nei. Ko te Node store-001 e whakahaere ana i te putunga raraunga PostgreSQL, a, ko te pgdb_replica te putunga raraunga tukurua. registration.url ka taea e te kaihautu vm2 te whakapā atu ki te kaihautu vm1 me te whiwhi taipitopito whirihoranga mai i a ia.

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

Kei roto i te tauira SymmetricDS kua oti nga tawhā mo te whakarite tukurua ara-rua i waenga i nga tūmau papaunga raraunga e rua (e rua nga pona). Ko nga hikoinga i raro nei ka mahia ki te kaihautu vm1 (corp-000), ka hangaia he tauira aronuinga me nga ripanga e 4. Na ko te whakahaere i nga ripanga waihanga-sym-me te whakahau symadmin ka waihanga ripanga whaiaronga ka penapena nga ture me te ahunga o te tukurua i waenga i nga pona. Ka mutu, ka utaina nga raraunga tauira ki nga ripanga.

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

I roto i te tauira, ka whirihora aunoatia te tepu taonga me te taonga_selling_price ki te tukurua mai i corp-000 ki te toa-001, a ko nga ripanga hoko (sale_transaction and sale_return_line_item) ka whirihora aunoa ki te tukurua mai i te toa-001 ki corp-000. Inaianei ka hangaia e matou he aronuinga i roto i te putunga raraunga PostgreSQL i runga i te ope vm2 (toa-001) hei whakarite kia whiwhi raraunga mai i corp-000.

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

Kia mahara ki te tirotiro kei te paparangi raraunga MySQL kei vm1 he tauira ripanga me nga ripanga putumōhio SymmetricDS. Kia mahara ko nga ripanga punaha SymmetricDS (kua tohua ki mua me te sym_) kei te waatea noa i te node corp-000 na te mea i reira i whakahaerehia e matou te whakahau waihanga-tohu-tepu me te whakahaere tukurua. A, i roto i te paataka korero i runga i te toa node-001 ka 4 noa nga tauira ripanga kaore he raraunga.

Katoa. Kua reri te taiao ki te whakahaere i nga tukanga tūmau sym i runga i nga pona e rua e whakaatuhia ana i raro nei.

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

Ka tukuna nga urunga rangitaki ki tetahi konae rangitaki papamuri (symmetric.log) i roto i te kōpaki rangitaki i te raarangi i whakauruhia ai a SymmetricDS, tae atu ki te putanga paerewa. Ka taea te timata te tūmau sym i runga i te toa node-001.

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

Mena ka whakahaere koe i te tukanga tūmau sym i runga i te kaihautu vm2, ka hangaia ano e ia nga ripanga putumōhio SymmetricDS i te papaarangi PostgreSQL. Mena ka whakahaere koe i te tukanga tūmau sym i runga i nga pona e rua, ka ruruku tetahi ki tetahi ki te whakahoki i nga raraunga mai i corp-000 ki te rokiroki-001. Mena i muri i etahi hēkona ka uiuia e matou nga ripanga e 4 i nga taha e rua, ka kite tatou i angitu te tukurua. Ka taea ranei e koe te tuku i te bootstrap ki te node store-001 mai i corp-000 me te whakahau e whai ake nei.

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

I tenei wa, ka whakauruhia he rekoata hou ki roto i te ripanga taonga i roto i te papaarangi MySQL i runga i te node corp-000 (kaihautu: vm1), a ka taea e koe te tirotiro i tana tukurua ki te papanga PostgreSQL i runga i te toa node-001 (kaihautu: vm2). Ka kite matou i te mahi Pull ki te neke raraunga mai i corp-000 ki store-001.

mysql> insert into item values ('22000002','Jelly Bean');
Query OK, 1 row affected (0.00 sec)

vm2$> psql -p 5832 -U postgres pgdb_replica -c "select * from item"
 item_id  |   name
----------+-----------
 11000001 | Yummy Gum
 22000002 | Jelly Bean
(2 rows)

Hei mahi i te mahi Pana hei nuku raraunga mai i te toa-001 ki te corp-000, ka whakauruhia he rekoata ki te ripanga hoko_transaction me te manatoko kua angitu te tukurua.

Hua.

Ka kite matou i te tatūnga angitu o te tukurua ara-rua o nga tauira ripanga i waenga i nga papaa raraunga MySQL me PostgreSQL. Hei whakarite tukuruatanga mo nga ripanga kaiwhakamahi hou, whai i enei mahi: Ka hangaia e matou te ripanga t1 hei tauira me te whirihora i ona ture tukurua penei. Ma tenei ka whirihorahia e matou te tukurua anake mai i corp-000 ki te toa-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)

Ka whakamohiotia te whirihoranga mo te huringa aronuinga, ara, te taapiri o te ripanga hou, ma te whakamahi i te whakahau symadmin me te tohenga tukutahi-keu, ka hanga ano i nga keu ki te mapi i nga whakamaramatanga ripanga. ka mahia te tuku-aronga-aronga ki te tuku huringa aronuinga ki te pona store-001, ka whirihorahia te tukuruatanga o te ripanga t1.

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

Nga painga o SymmetricDS

He ngawari te whakaurunga me te whirihoranga, tae atu ki te huinga o nga konae kua rerihia me nga tawhā mo te hanga i te ara iahiko toru-kopuku, rua-rua ranei.
Nga papaa raraunga whakawhiti me te motuhake o te papaaho, tae atu ki nga kaitoro, rorohiko rorohiko me nga taputapu pūkoro.
Whakahokia tetahi papaaarangi ki tetahi atu papaarangi i te rohe, i te WAN, i te kapua ranei.
Ka taea te mahi tino pai me nga papaa raraunga e rua, e hia mano ranei mo te tukurua ngawari.
Putanga utu me te GUI me te tautoko pai.

Nga huakore o SymmetricDS

Me tautuhi a-ringa koe i nga ture me te ahunga o te tukuruatanga i runga i te rarangi whakahau ma roto i nga tauākī SQL hei uta i nga ripanga putumōhio, he raru pea.
Ko te whakarite i nga ripanga maha mo te tukurua ka tino hoha ki te kore koe e whakamahi i nga tuhinga hei hanga tauākī SQL e tautuhi ana i nga ture me te ahunga o te tukurua.
He nui rawa nga korero e mau ana ki roto i nga raarangi, a, i etahi wa ka hiahia koe ki te whakapai i te konae rangitaki kia kore ai e nui rawa te waahi.

Hua mo SymmetricDS

Ma te SymmetricDS ka taea e koe te whakarite tukurua ara-rua i waenga i te rua, te toru, me te maha mano nga pona hei tukurua me te tukutahi i nga konae. He taputapu ahurei tenei e mahi takitahi ana i nga mahi maha, penei i te whakaora raraunga aunoa i muri i te wa roa o te waahi i runga i te node, te whakawhiti raraunga haumaru me te pai i waenga i nga pona ma te HTTPS, te whakahaere pakanga aunoa i runga i te huinga o nga ture, me era atu mahi SymmetricDS te tukuruatanga i waenga i nga papaaarangi, na reira, ka taea te whakamahi mo te maha o nga ahuatanga, tae atu ki te heke, te heke, te tohatoha, te tātari, me te whakarereketanga o nga raraunga puta noa i nga papaaho.

Ko te tauira kei runga i te rangatira aratohu tere na SymmetricDS. IN pukapuka kaiwhakamahi He whakaahua taipitopito i nga momo ariā e whai waahi ana ki te whakatakoto tukurua me SymmetricDS.

Source: will.com

Tāpiri i te kōrero