Fa'asologa fa'alava i le va o PostgreSQL ma MySQL

Fa'asologa fa'alava i le va o PostgreSQL ma MySQL

O le a ou faʻamatalaina le faʻasologa o fesoʻotaʻiga i le va o PostgreSQL ma MySQL, faʻapea foʻi ma metotia mo le faʻatulagaina o faʻasalalauga i le va o sapalai faʻamaumauga e lua. E masani lava, o fa'amaumauga tu'ufa'atasi e ta'ua o le homogeneous, ma o se auala faigofie e fealua'i ai mai le tasi server RDBMS i le isi.

PostgreSQL ma MySQL databases e masani ona manatu e fesoʻotaʻi, ae faʻatasi ai ma faʻaopoopoga faʻaopoopo latou te ofoina atu gafatia NoSQL. O iinei o le a tatou talanoaina ai le toe faia i le va o PostgreSQL ma MySQL mai se vaʻaiga DBMS vaʻaiga.

Matou te le faʻamatalaina le galuega atoa i totonu, naʻo mataupu faavae ina ia e maua ai se manatu o le faʻatulagaina o faʻasologa i le va o faʻamaumauga tuʻufaʻatasiga, tulaga lelei, tapulaʻa ma faʻaoga mataupu.

E masani lava, o le toe faia i le va o sapalai fa'amaumauga tutusa e lua e faia i le faiga binary po'o le fa'aogaina o fesili i le va o se matai (a. O le faʻamoemoega o le toe faia o le tuʻuina atu lea o se kopi taimi moni o le master database i le itu pologa. I lenei tulaga, o faʻamatalaga e faʻafeiloaʻi mai le matai i le pologa, o lona uiga, mai le gaioiga i le passive, ona o le toe faia e naʻo le tasi le itu. Ae e mafai ona e setiina le faʻasologa i le va o faʻamaumauga e lua i itu uma e lua, ina ia faʻafeiloaʻi faʻamaumauga mai le pologa i le matai i se faʻatulagaga malosi. O nei mea uma, e aofia ai le fa'asologa fa'asolosolo, e mafai i le va o le lua po'o le sili atu o fa'amaumauga tu'ufa'atasiga tutusa.. Active-active or active-passive configuration e faalagolago i le mana'omia, maua o ia gafatia i le uluai faatulagaga poʻo le faʻaogaina o fofo faʻapipiʻi fafo ma fefaʻatauaʻiga o loʻo iai.

O le fa'amatalaga fa'amatala e mafai i le va o 'au'aunaga fa'amaumauga eseese. E mafai ona faʻatulagaina le 'auʻaunaga e talia faʻamatalaga faʻapipiʻi mai se isi faʻamaumauga tuʻufaʻatasiga ma faʻaauau pea ona faʻatumauina faʻamatalaga taimi moni o faʻamatalaga toe fai. O MySQL ma PostgreSQL e ofoina atu le tele o nei faʻasalalauga i totonu o le fale poʻo le faʻaopoopoga o isi vaega, e aofia ai metotia faʻamaufaʻailoga, loka tisiki, ma faʻamatalaga-ma metotia faʻavae.

E manaʻomia le faʻasologa o fesoʻotaʻiga i le va o MySQL ma PostgreSQL mo se femalagaiga tasi-taimi mai le tasi server database i le isi. O lo'o fa'aogaina e nei fa'amaumauga fa'amaumauga eseese, o lea e le mafai ai ona feso'ota'i sa'o. Ina ia fa'atūina fa'amatalaga fa'amatalaga, e mafai ona e fa'aogaina se mea faigaluega fa'apitoa e tatala ai fafo, mo se fa'ata'ita'iga pg_chameleon.

O le a le pg_chameleon

pg_chameleon o se faiga toe faia mai MySQL i le PostgreSQL i le Python 3. E faʻaogaina le faʻaogaina o le mysql-replication library, faʻapea foʻi i le Python. O ata o laina e maua mai i laulau MySQL ma teuina e pei o JSONB mea faitino i le PostgreSQL database, ona faʻaumatia lea e le pl / pgsql galuega ma toe gaosia i le PostgreSQL database.

Vaega o pg_chameleon

Ole tele ole MySQL schemas mai le fuifui lava e tasi e mafai ona toe fa'atusa i se fa'amaumauga e tasi PostgreSQL database i se fa'atulagaga tasi-i-tele.
O igoa fa'apogai ma igoa fa'atatau e le mafai ona tutusa.
E mafai ona toe maua mai faʻamatalaga faʻamatalaga mai se faʻataʻitaʻiga MySQL.
O laulau e le mafai ona toe fa'afoliga pe fa'atupu ni mea sese e le aofia.
O galuega fa'atusa ta'itasi e pulea e daemons.
Pulea e ala ile YAML-faʻavae faʻamaufaʻailoga ma faila faila.

Faataitaiga:

Talimalo
vm1
vm2

OS version
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

DB server version
MySQL 5.7.26
PostgreSQL 10.5

DB taulaga
3306
5433

Tuatusi IP
192.168.56.102
192.168.56.106

Ina ia amata, saunia uma vaega talafeagai e faʻapipiʻi ai pg_chameleon. O lenei faʻataʻitaʻiga faʻapipiʻi le Python 3.6.8, lea e fatuina ma faʻagaoioia le siosiomaga faʻapitoa.

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

A maeʻa ona faʻapipiʻi lelei le Python3.6, e tatau ona e faʻamaeʻaina mea o loʻo totoe, e pei o le fatuina ma le faʻagaoioia o se siosiomaga virtual. E le gata i lea, o le pip module ua faʻafouina i le lomiga lata mai ma faʻaaoga e faʻapipiʻi ai pg_chameleon. O tulafono o loʻo i lalo e faʻapipiʻi ma le loto i ai le pg_chameleon 2.0.9, e ui o le lomiga lata mai o le 2.0.10. E mana'omia lenei mea e aloese ai mai mea fou fou i le fa'afouga fou.

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

Ona matou taʻua lea o le pg_chameleon (chameleon o se faʻatonuga) faʻatasi ai ma le seti_configuration_files finauga ina ia mafai ai pg_chameleon ma fatuina faʻatonuga faʻatonu ma faila faila.

(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

O lea la, matou te faia se kopi o le config-example.yml e pei o default.yml ina ia avea ma faila seti faaletonu. O se faʻataʻitaʻiga faila faila mo lenei faʻataʻitaʻiga o loʻo tuʻuina atu i lalo.

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

O le faila fa'atulagaina i lenei fa'ata'ita'iga o se fa'ata'ita'iga faila pg_chameleon fa'atasi ai ma suiga laiti e fetaui ma le puna ma si'osi'omaga fa'atatau, ma o lo'o i lalo se fa'amatalaga lautele o vaega eseese o le faila fa'atulagaina.

I le default.yml configuration file o loʻo i ai se vaega o faʻalapotopotoga faʻavaomalo, lea e mafai ai ona e faʻatautaia tulaga e pei o le nofoaga o le loka faila, le nofoaga o ogalaau, le taimi e teu ai ogalaau, ma isi. se seti o tulafono mo le fa'aogaina o ituaiga i le taimi o le toe faia. Ole fa'ata'ita'iga e fa'aletonu ile tulafono fa'asili e fa'aliliu ai le tinyint(1) ile tau ole boolean. I le isi vaega, matou te faʻamaonia faʻamatalaga fesoʻotaʻiga i le faʻamaumauga autu. I la matou tulaga, o le PostgreSQL database, ua filifilia pg_conn. I le vaega mulimuli, matou te faʻaalia le faʻamatalaga faʻamatalaga, o lona uiga, o fesoʻotaʻiga fesoʻotaʻiga o le faʻamaumauga faʻamaumauga, o le faʻasologa o faʻafanua i le va o faʻamaumauga autu ma faʻamaumauga, laulau e manaʻomia ona faaseʻe, taimi faʻatali, manatua, lapoa afifi. Manatua o "punaoa" e tele, o lona uiga e mafai ona tatou faʻaopoopo le tele o faʻamaumauga faʻamaumauga i se faʻamaumauga autu e tasi e faʻatutu ai se faʻatulagaga tele-i-tasi.

O le faʻataʻitaʻiga database world_x o loʻo i ai 4 laulau ma laina o loʻo ofoina mai e le MySQL community e fai ma faʻataʻitaʻiga. E mafai ona sii mai iinei. O le fa'amaumauga fa'ata'ita'i e sau e pei o se ta ma fa'apipi'i fa'amaumauga ma fa'atonuga mo le fa'atūina ma le fa'aulufale mai o laina.

I MySQL ma PostgreSQL databases, o se tagata faʻapitoa e faia ma le igoa tutusa usr_replica. I MySQL, ua tu'uina atu ai aia tatau faitau fa'aopoopo i laulau fa'atusa uma.

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 le itu PostgreSQL, ua faia se db_replica database e talia suiga mai le MySQL database. O le tagata faʻaoga usr_replica i PostgreSQL e otometi lava ona faʻapipiʻiina e avea ma pule o ni fuafuaga se lua, pgworld_x ma sch_chameleon, o loʻo i ai laulau faʻataʻitaʻi moni ma laulau faʻasologa, faʻasologa. Ole finauga create_replica_schema e nafa ma le fa'atulagaina otometi, e pei ona e va'ai i lalo.

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

O le MySQL database o loʻo faʻapipiʻiina ma nisi o suiga faʻapipiʻi e saunia ai mo le toe faia e pei ona faʻaalia i lalo. E te mana'omia le toe fa'afouina o le 'upega tafa'ilagi mo suiga e fa'amanaia.

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

Ole taimi nei e taua le siakiina o le fesoʻotaʻiga i faʻamaumauga uma e lua ina ia leai ni faʻafitauli pe a faʻatautaia le pg_chameleon poloaiga.

I luga o le PostgreSQL node:

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

I luga o le node MySQL:

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

O le isi tolu pg_chameleon (chameleon) poloaiga e saunia le siosiomaga, faʻaopoopo le puna, ma amata le faʻatusa. O le finauga create_replica_schema i le pg_chameleon e fatuina ai se fuafuaga le lelei (sch_chameleon) ma se faʻasologa faʻasologa (pgworld_x) i le PostgreSQL database, e pei ona uma ona tatou talanoaina. O le add_source argument e faʻaopoopoina ai se faʻamaumauga autu i le faʻatulagaina e ala i le faitauina o le faila faʻatulagaina (default.yml), ma i la matou tulaga o le mysql, ma init_replica amataina le faʻatulagaga e faʻavae i luga o faʻamau i le faila faʻatulagaina.

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

O le faatinoga o nei poloaiga e tolu o loo faailoa manino mai ai na faataunuuina ma le manuia. So'o se fa'alavelave po'o fa'asologa o mea sese e lipotia i ni fe'au faigofie ma manino ma fa'ailoga ile auala e fo'ia ai le fa'afitauli.

Ma le mea mulimuli, matou te amata toe faʻaaoga le start_replica ma maua se feʻau manuia.

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

E mafai ona fesiligia le tulaga o le toe faia e ala i le show_status argument, ma e mafai ona vaʻaia mea sese e faʻaaoga ai le show_errors argument.

Taunuuga.

E pei ona uma ona matou fai atu, o galuega faʻasologa taʻitasi e pulea e daemons. Ina ia vaʻaia i latou, matou te fesiligia le laulau faʻasologa ma le Linux ps command, e pei ona faʻaalia i lalo.

Taunuuga.

E le'o fa'atulagaina le toe fa'afoliga se'ia o'o ina matou su'eina i le taimi moni, e pei ona fa'aalia i lalo. Matou te fatuina se laulau, faʻapipiʻi ni faʻamaumauga i totonu o le MySQL database, ma valaʻau le sync_tables argument i pg_chameleon e faʻafou ai daemons ma faʻapipiʻi le laulau ma faʻamaumauga i le PostgreSQL database.

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.

Ina ia faʻamaonia iuga o suʻega, matou te fesiligia le laulau mai le PostgreSQL database ma tuʻuina atu laina.

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

Afai o loʻo matou faia se femalagaiga, o le pg_chameleon poloaiga o le a maeʻa. E manaʻomia le faʻatinoina o faʻatonuga pe a maeʻa ona matou mautinoa o laina o laulau faʻatulagaina uma ua toe faʻataʻitaʻiina, ma o le iʻuga o le a avea ma se PostgreSQL database e aunoa ma ni faʻamatalaga i le puna faʻamaumauga poʻo le faʻasologa (sch_chameleon).

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

Afai e manaʻo ai, e mafai ona e faʻaogaina tulafono nei e tape ai le faʻatulagaina muamua ma le faʻasologa o faiga.

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

Tulaga lelei o pg_chameleon

Faigofie le seti ma le faʻatulagaina.
Fa'afaigofie ona fo'ia ma fa'ailoa fa'aletonu ma fa'amatalaga manino fa'aletonu.
E mafai ona fa'aopoopo ni laulau fa'apitoa fa'aopoopo i le toe faia pe a uma ona fa'aulufaleina e aunoa ma le suia o le vaega o totoe o le fa'atulagaga.
E mafai ona fa'atulaga le tele o fa'amaumauga fa'amaumauga mo se fa'amaumauga autu e tasi, ma e aoga tele pe afai o lo'o e tu'ufa'atasia fa'amaumauga mai le tasi po'o le sili atu fo'i fa'amaumauga MySQL i totonu o le PostgreSQL database e tasi.
E te le tau toe fa'atusaina laulau ua filifilia.

Le lelei ole pg_chameleon

Na'o le lagolagoina e MySQL 5.5 ma luga atu e fai ma puna ma PostgreSQL 9.5 ma luga a'e o fa'amaumauga autu.
E tatau ona i ai i laulau taʻitasi se ki faʻamuamua pe tulaga ese, a leai o laulau e amata i le faagasologa o le init_replica ae e le toe faia.
Fa'asologa e tasi le auala - na'o MySQL ile PostgreSQL. O le mea lea, e naʻo le talafeagai mo le "active-passive" circuit.
O le puna e mafai ona naʻo se MySQL database, ma le lagolago mo se PostgreSQL database o se punaʻoa e naʻo le faʻataʻitaʻiga ma faʻatapulaʻa (aʻoaʻo atili iinei)

I'uga mo pg_chameleon

Ole auala toe faia ile pg_chameleon e lelei tele mo le femalagaiga o se database mai MySQL ile PostgreSQL. O le itu taua tele o le toe faia e na o le tasi le auala, o lea e le manaʻo ai le au faʻapolofesa faʻamaumauga e faʻaaogaina mo se isi lava mea nai lo le femalagaiga. Ae o le faʻafitauli o le tasi-auala toe faʻaleleia e mafai ona foia i se isi meafaigaluega faʻapitoa - SymmetricDS.

Faitau atili ile pepa aloaia iinei. E mafai ona maua fesoasoani laina poloaiga iinei.

Va'aiga lautele ole SymmetricDS

O le SymmetricDS o se meafaigaluega faʻapipiʻi matala e faʻapipiʻi soʻo se faʻamaumauga i soʻo se isi faʻamaumauga masani: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird ma isi faʻamaumauga faʻamaumauga o ao, eg Redshift, ma Azure, ma isi. Fa'amatalaga avanoa: fa'amaumauga tu'ufa'atasiga ma faila faila, fa'asologa o fa'amaumauga tu'ufa'atasi tele-matai, fa'amaopoopo fa'amama, suiga ma isi. O se meafaigaluega Java lea ma e manaʻomia se faʻasalalauga masani o le JRE poʻo le JDK (version 8.0 poʻo le maualuga). O iinei, o suiga o faʻamatalaga i faʻaoso i totonu o faʻamaumauga faʻamaumauga e mafai ona faʻamaumauina ma auina atu i le faʻamaumauga faʻamautu talafeagai i le tulaga o vaega.

Fa'ailoga SymmetricDS

O le meafaigaluega e tuto'atasi tulaga, o lona uiga e lua pe sili atu fa'amaumauga tu'ufa'atasi e mafai ona fesuia'i fa'amaumauga.
O fa'amaumauga feso'ota'iga o lo'o tu'ufa'atasia e fa'aaoga ai fa'amaumauga o suiga o fa'amaumauga, a'o fa'amaumauga e fa'atatau i faila faila e fa'aogaina ai le tu'ufa'atasiga o faila.
Toe fa'aoga lua auala e fa'aaoga ai metotia Push ma Toso e fa'atatau i se seti o tulafono.
E mafai ona fa'aliliuina fa'amatalaga i luga o feso'ota'iga malupuipuia ma maualalo-bandwidth.
Toe fa'aleleia otometi pe a toe fa'agaoioi nodes pe a mae'a fa'aletonu ma otometi fo'i fete'ena'iga.
API fa'aopoopo e fetaui ma le ao.

Faataitaiga:

SymmetricDS e mafai ona faʻatulagaina i se tasi o filifiliga e lua:
Ose matai (matua) node e fa'amaopoopo fa'atotonugalemu fa'asologa o fa'amaumauga i le va o pona pologa (tamaiti) se lua, ma o feso'ota'iga i le va o pona tamaiti e na'o le matua e tupu.
O se node malosi (Node 1) e mafai ona fesoʻotaʻi mo le toe faia ma se isi node malosi (Node 2) e aunoa ma se faufautua.

I filifiliga uma e lua, o fefaʻatauaʻiga faʻamatalaga e faʻaaoga i le Push ma Pull. I lenei faʻataʻitaʻiga o le a tatou mafaufau i se faʻatulagaina o loʻo galue malosi. E umi tele e fa'amatala ai le fausaga atoa, fa'apea fo'i lau su'esu'ega. taʻitaʻie aoao atili e uiga i le masini SymmetricDS.

O le faʻapipiʻiina o le SymmetricDS e matua faigofie lava: download le faʻamatalaga tatala o le faila zip mai iinei ma ave i fafo i soo se mea e te manaʻo ai. O le laulau o loʻo i lalo o loʻo tuʻuina atu ai faʻamatalaga e uiga i le nofoaga faʻapipiʻi ma le faʻasologa o SymmetricDS i lenei faʻataʻitaʻiga, faʻapea foʻi ma faʻamaumauga faʻamaumauga, Linux versions, IP address, ma ports mo nodes uma e lua.

Talimalo
vm1
vm2

OS version
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

DB server version
MySQL 5.7.26
PostgreSQL 10.5

DB taulaga
3306
5832

Tuatusi IP
192.168.1.107
192.168.1.112

SymmetricDS version
SymmetricDS 3.9
SymmetricDS 3.9

Ala fa'apipi'i SymmetricDS
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

SymmetricDS igoa node
tino-000
faleoloa-001

O iinei matou te faʻapipiʻi ai le SymmetricDS i /usr/local/symmetric-server-3.9.20, ma o le a teuina iina iina subdirectories ma faila eseese. Matou te fiafia i faʻataʻitaʻiga ma afi subdirectories. O le fa'ata'ita'iga fa'ata'ita'iga o lo'o i ai fa'ata'ita'iga faila fa'atulagaina o lo'o iai meatotino node, fa'apea fo'i fa'ata'ita'iga fa'amaumauga SQL e vave amata ai oe.

I totonu o faʻataʻitaʻiga faʻataʻitaʻiga matou te vaʻaia ai faila faʻatulagaina e tolu ma mea faʻapitoa - o le igoa e faʻaalia ai le natura o le node i se polokalame patino.

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

O le SymmetricDS o loʻo i ai faila faʻatulagaina uma e manaʻomia mo se mamanu autu 3-node (filifiliga 1), ma o faila tutusa e mafai ona faʻaoga mo se mamanu 2-node (filifiliga 2). Kopi le faila faʻatulagaina manaʻomia mai le faʻataʻitaʻiga faʻataʻitaʻiga i afi i luga o le vm1 host. E foliga mai e faapea:

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

O lenei node i le SymmetricDS configuration e taʻua o le corp-000, ma o le fesoʻotaʻiga faʻamaumauga o loʻo faʻatautaia e le mysql jdbc avetaʻavale, lea e faʻaogaina ai le manoa fesoʻotaʻiga i luga ma faʻamatalaga saini. Matou te faʻafesoʻotaʻi i le replica_db database ma laulau o le a faia i le taimi o le faʻatulagaina o fuafuaga. sync.url o loʻo faʻaalia ai le mea e faʻafesoʻotaʻi ai le node mo le faʻamaopoopoina.

Node 2 i luga o le host vm2 ua faʻapipiʻiina e pei o le faleoloa-001 ma o le isi vaega o loʻo faʻamaonia i le faila node.properties i lalo. Node store-001 o loʻo faʻatautaia le PostgreSQL database ma pgdb_replica o le kopi faʻamaumauga. registration.url fa'atagaina le host vm2 e fa'afeso'ota'i le host vm1 ma maua fa'amatalaga fa'atulagaina mai ai.

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

O le fa'ata'ita'iga a le SymmetricDS ua mae'a o lo'o i ai fa'amaufa'ailoga mo le fa'atulagaina o fa'asologa e lua i le va o 'au'aunaga fa'amaumauga e lua (lua nodes). O laasaga o loʻo i lalo o loʻo faia ile host vm1 (corp-000), lea o le a faia ai se faʻataʻitaʻiga faʻataʻitaʻiga ma 4 laulau. Ona fa'asolo lea o le create-sym-tables ma le symadmin command e fatuina ai laulau fa'atonu e teu ai tulafono ma le fa'atonuga o le toe faia i le va o nodes. Mulimuli ane, o faʻamatalaga faʻataʻitaʻiga e utaina i luga o laulau.

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 le faʻataʻitaʻiga, o mea ma mea_selling_price laulau e otometi lava ona faʻapipiʻiina e toe faʻapipiʻi mai le corp-000 i le faleoloa-001, ma o le faʻatau atu laulau (sale_transaction and sale_return_line_item) e otometi lava ona faʻapipiʻiina e toe faʻafoʻi mai le faleoloa-001 i le corp-000. Lenei matou te faia se faʻataʻitaʻiga i le PostgreSQL database i luga o le host vm2 (faleoloa-001) e saunia ai e maua faʻamatalaga mai corp-000.

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

Ia mautinoa e siaki o le MySQL database i luga o vm1 o loʻo i ai faʻataʻitaʻiga laulau ma SymmetricDS faʻamaumauga laulau. Manatua o laulau SymmetricDS system (prefixed with sym_) o loʻo avanoa nei i le node corp-000 aua o iina na matou faʻatautaia ai le faʻatonuga-sym-tables ma o le a faʻatautaia le toe faia. Ma i totonu o le faʻamaumauga i luga o le node store-001 o le a naʻo le 4 faʻataʻitaʻiga laulau e aunoa ma faʻamatalaga.

O mea uma. Ua sauni le si'osi'omaga e fa'atino faiga fa'aumau sym i pona uma e lua e pei ona fa'aalia i lalo.

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

O fa'amaumauga o fa'amaumauga e lafo i se faila ogalaau i tua (symmetric.log) i totonu o le pusa ogalaau i totonu o le lisi o lo'o fa'apipi'iina ai le SymmetricDS, fa'apea fo'i ma galuega masani. Ole sym server e mafai nei ona amataina ile faleoloa-001.

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

Afai e te fa'atautaia le faiga o le sym server i luga o le vm2 host, o le a fausia ai fo'i laulau fa'amaumauga SymmetricDS i le PostgreSQL database. Afai e te faʻatautaia le faiga o le sym server i luga o nodes uma e lua, latou te faʻamaopoopoina le tasi ma le isi e toe faʻapipiʻi faʻamatalaga mai le corp-000 i le faleoloa-001. Afai a maeʻa ni nai sekone matou te fesiligia uma laulau e 4 i itu uma e lua, o le a matou vaʻaia na manuia le toe faia. Pe mafai foi ona e lafoina le bootstrap i le node store-001 mai corp-000 ma le poloaiga lenei.

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

I le taimi nei, o loʻo tuʻuina atu se faʻamaumauga fou i totonu o le laulau aitema i le MySQL database i luga o le node corp-000 (host: vm1), ma e mafai ona e siakiina lona faʻasologa i le PostgreSQL database i luga o le node store-001 (host: vm2). Matou te vaʻai i se faʻagaioiga Toso e aveese faʻamaumauga mai le corp-000 i le faleoloa-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)

Ina ia faia se fa'agaioiga Push e fa'anofo ai fa'amaumauga mai le faleoloa-001 i le corp-000, matou te tu'uina se fa'amaumauga i totonu o le laulau fa'atau_transaction ma fa'amaonia o le toe faia ua manuia.

Taunuuga.

Matou te vaʻai i le faʻatulagaina manuia o le toe faʻaogaina o faʻataʻitaʻiga laulau i le va o MySQL ma PostgreSQL database. Ina ia setiina le kopi mo laulau a tagata fou, mulimuli i laasaga nei: Matou te fatuina le laulau t1 mo se faʻataʻitaʻiga ma faʻapipiʻi ana tulafono faʻasologa e pei ona taua i lalo. O le auala lea matou te faʻatulagaina ai naʻo le kopi mai le corp-000 i le faleoloa-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)

Ona logoina lea o le faʻatulagaga e uiga i le suiga o le schema, o lona uiga, o le faʻaopoopoina o se laulau fou, faʻaaoga le symadmin poloaiga ma le sync-triggers finauga, lea e toe faʻatupu ai le faʻatupuina o faʻamatalaga o le laulau. send-schema e fa'atino e lafo suiga schema i le node store-001, ma fa'apipi'i le laulau t1.

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

Fa'amanuiaga ole SymmetricDS

Faigofie le faʻapipiʻiina ma le faʻatulagaina, e aofia ai se seti ua saunia o faila ma faʻamaufaʻailoga mo le fatuina o se taʻaloga tolu-node poʻo lua-node.
Fa'amaumauga fa'akomepiuta ma tulaga tuto'atasi, e aofia ai 'au'aunaga, komepiuta feavea'i ma masini feavea'i.
Toe fai so'o se fa'amaumauga i so'o se isi fa'amaumauga i le lotoifale, i luga o le WAN po'o le ao.
Avanoa o galuega sili ona lelei ma ni nai faʻamaumauga poʻo ni nai afe mo le faʻaogaina faigofie.
Totogi fa'atasi ma le GUI ma le lagolago sili.

Le lelei ole SymmetricDS

E te manaʻomia le faʻamalamalamaina ma le lima o tulafono ma le faʻatonuga o le toe faia i luga o le laina faʻatonu e ala i faʻamatalaga SQL e faʻapipiʻi ai laulau faʻamaumauga, lea e mafai ona faʻalavelave.
O le fa'atulagaina o le tele o laulau mo le toe faia e mafai ona faigata se'i vagana ua e fa'aogaina tusitusiga e fai ai fa'amatalaga SQL e fa'amalamalama ai tulafono ma le fa'atonuga o le toe faia.
E tele naua fa'amatalaga o lo'o fa'amaumauina i totonu o ogalaau, ma o nisi taimi e te mana'omia le fa'amamaina o le faila faila ina ia aua ne'i tele naua avanoa.

I'uga mo SymmetricDS

O le SymmetricDS e mafai ai ona e setiina le faʻasologa e lua i le va o le lua, tolu, poʻo le tele o afe nodes e toe fai ma faʻamaopoopo faila. O se meafaigaluega tulaga ese lea e tutoʻatasi ai le tele o galuega, e pei o le toe faʻaleleia o faʻamaumauga otometi pe a maeʻa se taimi umi o le taimi e faʻavaivai ai i luga o se node, faʻamaonia ma lelei le fefaʻatauaʻiga o faʻamatalaga i le va o nodes e ala i le HTTPS, faʻatautaia feteʻenaʻiga otometi e faʻavae i luga o se seti o tulafono, ma isi. SymmetricDS performs toe faia i le va o soʻo se faʻamaumauga, o le mea lea, e mafai ona faʻaogaina mo le tele o faʻaaliga eseese, e aofia ai femalagaiga, femalagaiga, tufatufa, faʻamamaina, ma suiga o faʻamaumauga i luga o faʻavae.

O le faʻataʻitaʻiga e faʻavae i luga o le ofisa taiala vave e SymmetricDS. IN tusi fa'aoga Fa'amatala au'ili'ili manatu 'ese'ese o lo'o a'afia i le fa'atulagaina o fa'asologa ma le SymmetricDS.

puna: www.habr.com

Faaopoopo i ai se faamatalaga