Replication cross eo anelanelan'ny PostgreSQL sy MySQL

Replication cross eo anelanelan'ny PostgreSQL sy MySQL

Hosoratako ny replication mifamadika eo amin'ny PostgreSQL sy MySQL, ary koa ny fomba fametrahana replication eo amin'ireo mpizara database roa. Amin'ny ankapobeny, antsoina hoe homogeneous ny angon-drakitra miorim-paka, ary fomba iray ahafahana miala amin'ny mpizara RDBMS iray mankany amin'ny iray hafa.

Ny angon-drakitra PostgreSQL sy MySQL dia heverina ho mifandray amin'ny ankapobeny, saingy miaraka amin'ny fanitarana fanampiny dia manolotra fahaiza-manao NoSQL izy ireo. Eto isika dia hiresaka momba ny replication eo amin'ny PostgreSQL sy MySQL amin'ny fomba fijery DBMS mifandraika.

Tsy hamariparitra ny fiasan'ny atiny manontolo izahay, fa ny fitsipika fototra fotsiny mba hahazoanao hevitra amin'ny fanamboarana replication eo amin'ireo mpizara database, tombony, fetra ary tranga fampiasana.

Amin'ny ankapobeny, ny famerenana eo amin'ny mpizara angon-drakitra roa mitovy dia atao amin'ny fomba binary na amin'ny fampiasana fanontaniana eo amin'ny master (a. Ny tanjon'ny replication dia ny hanomezana kopia tena izy amin'ny angon-drakitra master amin'ny lafiny andevo. Amin'ity tranga ity, ny angon-drakitra dia nafindra avy amin'ny tompony mankany amin'ny andevo, izany hoe, avy amin'ny mavitrika mankany amin'ny passive, satria ny replication dia atao amin'ny lalana iray ihany. Saingy azonao atao ny mametraka replication eo anelanelan'ny angon-drakitra roa amin'ny lafiny roa, mba hafindra avy amin'ny andevo mankany amin'ny master amin'ny fanamafisana mavitrika. Izany rehetra izany, anisan'izany ny replication cascading, dia azo atao eo anelanelan'ny mpizara database roa na maromaro mitovy.Ny configuration active-active na active-passive dia miankina amin'ny filana, ny fisian'ny fahaiza-manao toy izany amin'ny fanamafisana voalohany na ny fampiasana vahaolana amin'ny fanamafisana ivelany sy ny varotra efa misy.

Ny fanamafisam-peo voalaza dia azo atao eo amin'ireo mpizara database samihafa. Ny mpizara dia azo amboarina mba hanaiky ny angon-drakitra averina avy amin'ny mpizara database hafa ary mbola mitazona sary amin'ny fotoana tena izy amin'ny angona naverina. Ny MySQL sy ny PostgreSQL dia manolotra ny ankamaroan'ireo fanamafisana ireo ao an-trano na amin'ny alΓ lan'ny fanitarana avy amin'ny antoko fahatelo, ao anatin'izany ny fomba fiasan'ny log binary, ny fanakatonana kapila ary ny fomba mifototra amin'ny fanambarana sy ny laharana.

Ilaina ny replication cross eo anelanelan'ny MySQL sy PostgreSQL amin'ny fifindra-monina indray mandeha avy amin'ny mpizara database iray mankany amin'ny iray hafa. Mampiasa protocols samihafa ireo angon-drakitra ireo, ka tsy azo atao ny mampifandray azy ireo mivantana. Mba hametrahana fifanakalozana angona dia azonao atao ny mampiasa fitaovana loharano misokatra ivelany, ohatra pg_chameleon.

Inona no atao hoe pg_chameleon

pg_chameleon dia rafitra replication avy amin'ny MySQL mankany amin'ny PostgreSQL amin'ny Python 3. Mampiasa ny tranokala mysql-replication loharano misokatra izy io, amin'ny Python ihany koa. Ny sary andalana dia nalaina avy amin'ny latabatra MySQL ary voatahiry ho zavatra JSONB ao amin'ny angon-drakitra PostgreSQL, ary avy eo decrypted amin'ny pl/pgsql function ary averina ao amin'ny tahiry PostgreSQL.

Toetran'ny pg_chameleon

Ny schema MySQL marobe avy amin'ny cluster iray ihany dia azo averina amin'ny tahiry PostgreSQL kendrena tokana amin'ny fanamafisana tokana.
Tsy mety hitovy ny anaran'ny tetika loharano sy kendrena.
Ny angon-drakitra replication dia azo alaina avy amin'ny replika MySQL cascaded.
Ny tabilao tsy afaka mamerina na mamoaka lesoka dia tsy tafiditra ao.
Ny asa replication tsirairay dia fehezin'ny daemons.
Fanaraha-maso amin'ny alΓ lan'ny masontsivana mifototra amin'ny YAML sy ny rakitra fikirakirana.

ohatra

miaramila
vm1
vm2

OS version
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

Version mpizara DB
MySQL 5.7.26
PostgreSQL 10.5

DB port
3306
5433

Adiresy IP
192.168.56.102
192.168.56.106

Hanombohana, manomana ny singa ilaina rehetra hametrahana pg_chameleon. Ity ohatra ity dia mametraka Python 3.6.8, izay mamorona sy manetsika ny tontolo virtoaly.

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

Rehefa vita ny fametrahana ny Python3.6 dia mila mameno ny fepetra sisa ianao, toy ny famoronana sy fampahavitrihana tontolo virtoaly. Fanampin'izany, ny maody pip dia nohavaozina amin'ny dikan-teny farany ary ampiasaina hametrahana pg_chameleon. Ny baiko etsy ambany dia minia mametraka pg_chameleon 2.0.9, na dia 2.0.10 aza ny dikan-teny farany. Ilaina izany mba hialana amin'ny bug vaovao amin'ny kinova nohavaozina.

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

Antsoinay avy eo ny pg_chameleon (ny chameleon dia baiko) miaraka amin'ny tohan-kevitra set_configuration_files mba ahafahan'ny pg_chameleon ary mamorona lahatahiry sy rakitra fikirakirana.

(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

Amin'izao fotoana izao dia mamorona dika mitovy amin'ny config-example.yml ho default.yml izahay mba hahatonga azy ho rakitra fikirakirana default. Misy fisie santionany ho an'ity ohatra ity dia omena eto ambany.

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

Ny fichier configuration amin'ity ohatra ity dia fisie pg_chameleon santionany miaraka amin'ny fanovana madinidinika hifanaraka amin'ny tontolo loharano sy kendrena, ary eto ambany ny topimaso momba ny fizarana samihafa amin'ny rakitra fikirakirana.

Ao amin'ny rakitra konfigurasi default.yml dia misy fizarana amin'ny sehatra manerantany, izay ahafahanao mitantana ny toe-javatra toy ny toerana misy ny rakitra hidin-trano, ny toerana misy ny logs, ny fotoana fitehirizana ny logs, sns. andiana fitsipika ho an'ny karazana override mandritra ny famerenana. Ny ohatra dia mandeha amin'ny fitsipika manapaka karazana izay mamadika ny tinyint(1) ho sanda boolean. Ao amin'ny fizarana manaraka dia mamaritra ny antsipirian'ny fifandraisana amin'ny angon-drakitra kendrena. Amin'ity tranga ity, ity dia angon-drakitra PostgreSQL, voatondro pg_conn. Ao amin'ny fizarana farany, dia manondro ny loharanon-kevitra, izany hoe, ny masontsivana fifandraisana amin'ny loharanon-karena, ny sarintany eo amin'ny loharano sy ny angon-drakitra kendrena, tabilao mila atsipy, miandry ny fotoana, fahatsiarovana, ny haben'ny fonosana. Mariho fa ny "loharano" dia maro, midika izany fa afaka manampy angon-drakitra loharano maro amin'ny angona kendrena tokana isika mba hananganana fikirakirana maro-to-iray.

Ny ohatra database world_x dia misy tabilao 4 misy andalana izay atolotry ny vondrom-piarahamonina MySQL ho ohatra. Azo alaina izany eto. Ny angon-drakitra santionany dia tonga toy ny tara sy arisiva voaporitra miaraka amin'ny toromarika momba ny famoronana sy fanafarana andalana.

Ao amin'ny angon-drakitra MySQL sy PostgreSQL, misy mpampiasa manokana noforonina miaraka amin'ny anarana mitovy usr_replica. Ao amin'ny MySQL, dia omena zo mamaky fanampiny amin'ny latabatra rehetra averina.

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;

Amin'ny lafiny PostgreSQL, misy angona db_replica noforonina izay hanaiky ny fanovana avy amin'ny angona MySQL. Ny mpampiasa usr_replica ao amin'ny PostgreSQL dia amboarina ho tompon'ny skema roa, pgworld_x ary sch_chameleon, izay misy ny latabatra replicated sy ny tabilao lahatahiry replication. Ny argument create_replica_schema dia tompon'andraikitra amin'ny fanamafisana mandeha ho azy, araka ny hitanao eto ambany.

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

Ny angon-drakitra MySQL dia namboarina miaraka amin'ny fiovan'ny mari-pamantarana sasany hanomanana azy amin'ny replication araka ny aseho etsy ambany. Mila averinao indray ny lohamilina angona mba hampiharana ny fanovana.

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

Ankehitriny dia zava-dehibe ny manamarina ny fifandraisana amin'ny mpizara database roa mba tsy hisy olana amin'ny fampandehanana ny baiko pg_chameleon.

Ao amin'ny node PostgreSQL:

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

Ao amin'ny node MySQL:

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

Ny baiko pg_chameleon (chameleon) telo manaraka dia manomana ny tontolo iainana, ampio ny loharano ary atombohy ny kopia. Ny argument create_replica_schema amin'ny pg_chameleon dia mamorona schema default (sch_chameleon) sy schema replication (pgworld_x) ao amin'ny tahiry PostgreSQL, araka ny efa noresahinay. Ny tohan-kevitra add_source dia manampy angon-drakitra loharano amin'ny fikirakirana amin'ny famakiana ny rakitra fikirakirana (default.yml), ary amin'ny tranga misy antsika dia ny mysql, ary ny init_replica dia manomboka ny fanamafisana mifototra amin'ny mari-pamantarana ao amin'ny rakitra fikirakirana.

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

Ny fivoahan'ireo baiko telo ireo dia manondro mazava tsara fa vita soa aman-tsara izy ireo. Izay fianjerana na hadisoana syntax dia taterina amin'ny hafatra tsotra sy mazava miaraka amin'ny toro-hevitra momba ny fomba hamahana ilay olana.

Farany, manomboka mamerina mampiasa start_replica isika ary mahazo hafatra mahomby.

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

Ny satan'ny replication dia azo anontaniana amin'ny alΓ lan'ny argument show_status, ary azo jerena ny lesoka amin'ny alΓ lan'ny argument show_errors.

Ny vokany.

Araka ny efa voalazantsika, ny asa replication tsirairay dia fehezin'ny daemons. Mba hijerena azy ireo dia manontany ny latabatra fizotry izahay miaraka amin'ny baiko Linux ps, araka ny aseho eto ambany.

Ny vokany.

Ny famerenana dia tsy heverina ho voarindra mandra-pitsapantsika azy amin'ny fotoana tena izy, araka ny aseho etsy ambany. Mamorona latabatra izahay, ampidiro rakitra roa ao amin'ny database MySQL, ary antsoy ny tohan-kevitra sync_tables ao amin'ny pg_chameleon mba hanavaozana ny daemons ary hamerina ny latabatra miaraka amin'ny rakitra ao amin'ny tahiry 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.

Mba hanamafisana ny valin'ny fitsapana dia manontany ny latabatra avy amin'ny tahiry PostgreSQL izahay ary mamoaka ny laharana.

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

Raha manao fifindra-monina isika dia ireto baiko pg_chameleon manaraka ireto no hifarana. Mila tanterahina ny baiko rehefa azo antoka fa naverina indray ny andalana amin'ny latabatra kendrena rehetra, ary ny vokatr'izany dia angon-drakitra PostgreSQL mifindrafindra tsy misy references amin'ny tahiry loharano na rafitra replication (sch_chameleon).

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

Raha tianao, azonao atao ny mampiasa ireto baiko manaraka ireto mba hamafa ny rafitra sy ny fametahana voalohany.

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

Ny tombony amin'ny pg_chameleon

Mora setup sy configuration.
Famahana olana mora sy fantaro ny anomalia misy hafatra diso mazava.
Ny latabatra manokana fanampiny dia azo ampiana amin'ny replication aorian'ny fanombohana nefa tsy manova ny sisa amin'ny fandrindrana.
Azo atao ny manamboatra angon-drakitra loharano maro ho an'ny angon-drakitra kendrena tokana, ary tena ilaina izany raha manambatra ny angona avy amin'ny angona MySQL iray na maromaro ao anaty tahiry PostgreSQL tokana.
Tsy mila mamerina ireo tabilao voafantina ianao.

Ny tsy fahampian'ny pg_chameleon

Ny MySQL 5.5 sy ambony ihany no tohanana ho loharano ary PostgreSQL 9.5 sy ambony ho angon-drakitra kendrena.
Ny latabatra tsirairay dia tsy maintsy manana fanalahidy fototra na tokana, raha tsy izany dia atomboka mandritra ny dingana init_replica ny latabatra fa tsy averina.
Famerenana lalana tokana - avy amin'ny MySQL mankany PostgreSQL ihany. Noho izany dia mety ho an'ny circuit "active-passive" ihany.
Ny loharano dia mety ho angon-drakitra MySQL ihany, ary ny fanohanana ny angona PostgreSQL ho loharano dia fanandramana fotsiny ary misy fetra (mianara bebe kokoa eto)

Valiny momba ny pg_chameleon

Ny fomba famerenana amin'ny pg_chameleon dia tsara amin'ny fifindrana angona avy amin'ny MySQL mankany PostgreSQL. Ny lafy ratsiny dia ny famerenana dia fomba tokana ihany, noho izany dia tsy te hampiasa azy io amin'ny zavatra hafa ankoatra ny fifindra-monina ny matihanina amin'ny database. Saingy ny olan'ny replication amin'ny lalana iray dia azo vahana amin'ny fitaovana loharano misokatra hafa - SymmetricDS.

Vakio bebe kokoa ao amin'ny antontan-taratasy ofisialy eto. Afaka hita ny fanampiana andalana baiko eto.

Overview ny SymmetricDS

SymmetricDS dia fitaovana loharano misokatra izay mamerina ny angon-drakitra rehetra amin'ny angon-drakitra mahazatra hafa: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird ary ohatra hafa momba ny angon-drakitra rahona, ohatra Redshift, ary Azure, sns. Ny endri-javatra misy: ny angon-drakitra sy ny fichier synchronization, ny replication database multi-master, ny synchronization voasivana, ny fanovana ary ny hafa. Fitaovana Java ity ary mitaky famoahana manara-penitra ny JRE na JDK (version 8.0 na ambony). Eto, ny fiovan'ny angon-drakitra amin'ny trigger ao amin'ny tahiry loharano dia azo raketina ary alefa any amin'ny angon-drakitra kendrena mety amin'ny endrika andiany.

SymmetricDS endri-javatra

Ny fitaovana dia tsy miankina amin'ny sehatra, midika izany fa misy angona roa na maromaro samihafa afaka mifanakalo angona.
Ny angon-drakitra mifandraika dia atambatra amin'ny alΓ lan'ny firaketana fanovana data, raha ny angon-drakitra mifototra amin'ny rafitra rakitra dia mampiasa ny fampifanarahana ny rakitra.
Famerenana amin'ny fomba roa mampiasa fomba Push sy Pull mifototra amin'ny fitsipika maromaro.
Ny famindrana angon-drakitra dia azo atao amin'ny tambajotra azo antoka sy ambany bandwidth.
Famerenana mandeha ho azy rehefa miverina miasa ny nodes taorian'ny tsy fahombiazana sy famahana fifandirana mandeha ho azy.
API fanitarana mifanaraka amin'ny rahona sy mahery.

ohatra

SymmetricDS dia azo amboarina amin'ny iray amin'ireo fomba roa:
Node master (ray aman-dreny) izay mandrindra afovoany ny famerenan'ny angona eo amin'ny node andevo (zaza) roa, ary amin'ny alalan'ny ray aman-dreny ihany no misy ny fifandraisana eo amin'ny zaza.
Ny node mavitrika (Node 1) dia afaka mifandray amin'ny replication amin'ny node mavitrika hafa (Node 2) tsy misy mpanelanelana.

Amin'ireo safidy roa ireo, ny fifanakalozana data dia mitranga amin'ny fampiasana Push sy Pull. Amin'ity ohatra ity dia handinika ny configuration active-active isika. Mety ho ela loatra ny hamaritana ny maritrano manontolo, ka ataovy ny fikarohanao. mpitarikaraha te hianatra bebe kokoa momba ny fitaovana SymmetricDS.

Ny fametrahana SymmetricDS dia tena tsotra: alaivo ny dikan-teny misokatra amin'ny rakitra zip avy eto ary ento any amin'izay tianao. Ny tabilao etsy ambany dia manome fampahalalana momba ny toerana fametrahana sy ny dikan'ny SymmetricDS amin'ity ohatra ity, ary koa ny dikan-drakitra, ny dikan-teny Linux, ny adiresy IP ary ny seranan-tsambo ho an'ny node roa.

miaramila
vm1
vm2

OS version
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

Version mpizara DB
MySQL 5.7.26
PostgreSQL 10.5

DB port
3306
5832

Adiresy IP
192.168.1.107
192.168.1.112

SymmetricDS version
SymmetricDS 3.9
SymmetricDS 3.9

Lalana fametrahana SymmetricDS
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

Anaran'ny node SymmetricDS
corp-000
fivarotana-001

Eto izahay dia mametraka SymmetricDS ao amin'ny /usr/local/symmetric-server-3.9.20, ary hotehirizina ao ny subdirectories sy rakitra isan-karazany. Liana amin'ny subdirectories santionany sy motera izahay. Ny lahatahiry santionany dia misy rakitra fanamafisana ohatra miaraka amin'ny fananana node, ary koa script SQL ohatra mba hanombohanao haingana.

Ao amin'ny lahatahiry santionany dia mahita fisie telo miaraka amin'ny fananana node isika - ny anarana dia mampiseho ny toetran'ny node amin'ny drafitra iray.

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

SymmetricDS dia manana ny rakitra rehetra ilaina amin'ny famolavolana fototra 3-node (safidy 1), ary ireo rakitra mitovy dia azo ampiasaina amin'ny famolavolana 2-node (safidy 2). Adikao avy amin'ny lahatahiry santionany mankany amin'ny motera ao amin'ny mpampiantrano vm1 ny rakitra fanamafisana ilaina. Toy izao no miseho:

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

Antsoina hoe corp-000 io node io ao amin'ny configuration SymmetricDS, ary ny fampifandraisana angon-drakitra dia karakarain'ny mpamily mysql jdbc, izay mampiasa ny tady fifandraisana etsy ambony sy ny fahazoan-dΓ lana fidirana. Mifandray amin'ny angon-drakitra replica_db izahay ary ny latabatra dia hoforonina mandritra ny famoronana schema. sync.url dia mampiseho ny toerana hifandraisana amin'ny node ho an'ny fampifanarahana.

Node 2 amin'ny mpampiantrano vm2 dia namboarina ho store-001 ary ny ambiny dia voafaritra ao amin'ny rakitra node.properties etsy ambany. Node store-001 dia mitantana ny angona PostgreSQL ary pgdb_replica no angon-drakitra replication. registration.url dia mamela ny mpampiantrano vm2 hifandray amin'ny mpampiantrano vm1 ary hahazo ny antsipirian'ny fandrindrana azy.

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

Ny ohatra SymmetricDS efa vita dia misy masontsivana amin'ny fametrahana replication roa tonta eo amin'ny mpizara database roa (nodes roa). Ny dingana etsy ambany dia atao amin'ny mpampiantrano vm1 (corp-000), izay hamorona schema ohatra misy tabilao 4. Avy eo, ny fampandehanana ny create-sym-tables miaraka amin'ny baiko symadmin dia mamorona tabilao lahatahiry izay hitehirizana ny fitsipika sy ny fitarihana ny replication eo anelanelan'ny nodes. Farany, ampidirina ao anaty tabilao ny angona santionany.

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

Amin'ny ohatra, ny latabatra entana sy item_selling_price dia namboarina ho azy mba hamerenana avy amin'ny corp-000 mankany amin'ny store-001, ary ny latabatra fivarotana (sale_transaction sy sale_return_line_item) dia namboarina ho azy mba hamerenana avy amin'ny store-001 mankany corp-000. Ankehitriny dia mamorona schema ao amin'ny angon-drakitra PostgreSQL amin'ny mpampiantrano vm2 (store-001) izahay hanomanana azy handray angona avy amin'ny corp-000.

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

Ataovy azo antoka fa ny angon-drakitra MySQL amin'ny vm1 dia manana tabilao ohatra sy tabilao katalaogy SymmetricDS. Mariho fa ny latabatra rafitra SymmetricDS (voatonona miaraka amin'ny sym_) dia tsy misy afa-tsy amin'ny node corp-000 amin'izao fotoana izao satria teo no nitondranay ny baiko famoronana-sym-tables ary hitantana ny replication. Ary ao amin'ny angon-drakitra ao amin'ny node store-001 dia tsy hisy afa-tsy tabilao ohatra 4 tsy misy data.

Rehetra. Ny tontolo iainana dia vonona ny hanatanteraka ny fizotran'ny server sym amin'ny nodes roa araka ny aseho etsy ambany.

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

Ny fidirana amin'ny log dia alefa any amin'ny rakitra log background (symmetric.log) ao amin'ny lahatahiry logs ao amin'ny lahatahiry misy ny SymmetricDS, ary koa amin'ny vokatra mahazatra. Ny mpizara sym dia azo atomboka amin'ny node store-001.

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

Raha mihazakazaka ny fizotran'ny server sym amin'ny mpampiantrano vm2 ianao, dia hamorona tabilao katalaogy SymmetricDS ao amin'ny angon-drakitra PostgreSQL ihany koa. Raha mihazakazaka ny fizotran'ny mpizara sym amin'ny node roa ianao, dia mifandrindra izy ireo mba hamerenana ny angona avy amin'ny corp-000 mankany amin'ny store-001. Raha afaka segondra vitsy dia manontany ny latabatra 4 amin'ny andaniny roa isika, dia ho hitantsika fa nahomby ny famerenana. Na azonao atao ny mandefa ny bootstrap amin'ny node store-001 avy amin'ny corp-000 miaraka amin'ity baiko manaraka ity.

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

Amin'izao fotoana izao, misy firaketana vaovao ampidirina ao amin'ny latabatra entana ao amin'ny database MySQL amin'ny node corp-000 (host: vm1), ary azonao atao ny manamarina ny replication amin'ny database PostgreSQL amin'ny node store-001 (host: vm2). Mahita hetsika Pull izahay hamindra angona avy amin'ny corp-000 mankany amin'ny 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)

Raha hanao hetsika Push hamindra angona avy amin'ny store-001 mankany corp-000, dia ampidiro ao amin'ny tabilao sale_transaction ny firaketana ary manamarina fa nahomby ny famerenana.

Ny vokany.

Hitantsika ny fametrahana fahombiazana amin'ny famerenan'ny roa tonta ny tabilao ohatra eo amin'ny angon-drakitra MySQL sy PostgreSQL. Raha hanangana replication ho an'ny latabatra mpampiasa vaovao dia araho ireto dingana ireto: Mamorona tabilao t1 ohatra izahay ary amboary ny fitsipika replication toy izao manaraka izao. Amin'izany fomba izany dia manamboatra replication avy amin'ny corp-000 mankany amin'ny store-001 izahay.

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)

Ampandrenesina avy eo ny fanovana ny schema, izany hoe ny fampidirana latabatra vaovao, amin'ny fampiasana ny baiko symadmin miaraka amin'ny tohan-kevitra sync-triggers, izay mamerina ny trigger mba hametahana ny famaritana latabatra. Send-schema dia tanterahana handefasana fanovana schema amin'ny node store-001, ary ny replication ny latabatra t1 dia namboarina.

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

Ny tombony amin'ny SymmetricDS

Fametrahana sy fanamboarana mora, anisan'izany ny rakitra efa vonona miaraka amin'ny mari-pamantarana ho an'ny famoronana faritra telo-node na roa-node.
Ny angon-drakitra cross-platform sy ny fahaleovan-tena amin'ny sehatra, ao anatin'izany ny lohamilina, ny solosaina finday ary ny fitaovana finday.
Avereno averina amin'ny angon-drakitra hafa rehetra eo an-toerana, amin'ny WAN na amin'ny rahona.
Ny mety hisian'ny asa tsara indrindra miaraka amin'ny angon-drakitra roa na an'arivony maro ho an'ny famerenana mora.
Dika karama miaraka amin'ny GUI sy fanohanana tsara.

Ny tsy fahampian'ny SymmetricDS

Mila mamaritra amin'ny tananao ny fitsipika sy ny fitarihana ny replication amin'ny andalana baiko amin'ny alΓ lan'ny fanambarana SQL mba hampidirana latabatra katalaogy, izay mety ho sarotra.
Ny fametrahana latabatra maro ho an'ny replication dia mety ho mandreraka raha tsy mampiasa script ianao mba hamoronana fanambarana SQL izay mamaritra ny fitsipika sy ny fitarihana ny replication.
Be loatra ny fampahalalana voarakitra ao amin'ny diary, ary indraindray mila manadio ny rakitra log ianao mba tsy haka toerana be loatra.

Vokatra momba ny SymmetricDS

Ny SymmetricDS dia ahafahanao manangana replication roa tonta eo anelanelan'ny node roa, telo, na an'arivony mihitsy aza mba hamerenana sy hampifanaraka ny rakitra. Ity dia fitaovana tsy manam-paharoa izay manao asa maro tsy miankina, toy ny famerenana ny angon-drakitra mandeha ho azy aorian'ny vanim-potoana maharitra amin'ny node, fifanakalozam-baovao azo antoka sy mahomby eo amin'ny nodes amin'ny alΓ lan'ny HTTPS, fitantanana fifanoherana mandeha ho azy mifototra amin'ny fitsipika maromaro, sns. SymmetricDS dia manao replication eo anelanelan'ny angon-drakitra rehetra, noho izany, dia azo ampiasaina amin'ny sehatra maro isan-karazany, ao anatin'izany ny fifindra-monina, ny fifindra-monina, ny fizarana, ny sivana ary ny fiovan'ny angona manerana ny sehatra.

Ny ohatra dia mifototra amin'ny ofisialy mpitari-dalana haingana avy amin'ny SymmetricDS. IN boky fampianarana Manoritsoritra amin'ny an-tsipiriany ireo hevitra isan-karazany tafiditra amin'ny fametrahana replication amin'ny SymmetricDS.

Source: www.habr.com

Add a comment