Cross replication tali sa PostgreSQL ug MySQL

Cross replication tali sa PostgreSQL ug MySQL

Sa makadiyot ako maghisgot bahin sa cross-replication tali sa PostgreSQL ug MySQL, ingon man mga pamaagi sa pag-set up sa cross-replication tali niining duha ka database server. Ang cross-replicated nga mga database kasagarang gitawag nga homogenous nga mga database, ug kini usa ka sayon ​​​​nga paagi sa paglalin gikan sa usa ka RDBMS server ngadto sa lain.

Ang mga database sa PostgreSQL ug MySQL tradisyonal nga giisip nga relational, apan adunay dugang nga mga extension nga ilang gitanyag ang mga kapabilidad sa NoSQL. Dinhi atong hisgutan ang replikasyon tali sa PostgreSQL ug MySQL gikan sa usa ka relational database management perspective.

Dili namon ihulagway ang tibuuk nga mga internal, ang sukaranan nga mga prinsipyo lamang, aron makakuha ka usa ka ideya sa pag-set up sa replikasyon tali sa mga server sa database, mga bentaha, mga limitasyon, ug mga kaso sa paggamit.

Kasagaran, ang pagkopya tali sa duha ka managsama nga mga server sa database gihimo sa binary mode o pinaagi sa mga pangutana tali sa usa ka agalon (aka publisher, master, o aktibo) ug usa ka ulipon (subscriber, standby, o passive). Ang katuyoan sa pagkopya mao ang paghatag usa ka tinuud nga oras nga kopya sa master database sa standby nga bahin. Sa kini nga kaso, ang data gibalhin gikan sa agalon ngadto sa ulipon, nga mao, gikan sa aktibo ngadto sa passive, tungod kay ang pagkopya gihimo lamang sa usa ka direksyon. Apan mahimo nimong i-set up ang replikasyon tali sa duha nga mga database sa duha nga direksyon, aron ang data mabalhin gikan sa ulipon ngadto sa agalon sa usa ka aktibo nga aktibo nga pagsumpo. Kining tanan, lakip na ang cascading replication, posible tali sa duha o labaw pa nga managsama nga database server.Active-active o active-passive configuration nagdepende sa panginahanglan, ang pagkaanaa sa maong mga kapabilidad sa orihinal nga configuration o ang paggamit sa external tuning solutions ug kasamtangan nga trade - mga off.

Ang gihulagway nga pag-configure posible tali sa lainlaing mga server sa database. Ang server mahimong ma-configure aron makadawat sa gisubli nga datos gikan sa laing database server ug sa gihapon magpabilin sa tinuod nga panahon nga mga snapshot sa gisubli nga datos. Ang MySQL ug PostgreSQL nagtanyag sa kadaghanan niini nga mga kumpigurasyon nga lumad o pinaagi sa mga extension sa ikatulo nga partido, lakip ang binary log nga mga pamaagi, mga disk lock, ug mga pamaagi nga gibase sa pahayag ug linya.

Ang cross-replication tali sa MySQL ug PostgreSQL gikinahanglan alang sa usa ka higayon nga paglalin gikan sa usa ka database server ngadto sa lain. Kini nga mga database naggamit ug lain-laing mga protocol, mao nga dili nimo kini ma-link direkta. Aron mapadali ang pagbayloay sa datos, mahimo nimong gamiton ang eksternal nga open source tool, sama sa pg_chameleon.

Unsa ang pg_chameleon

Ang pg_chameleon kay usa ka replication system gikan sa MySQL ngadto sa PostgreSQL sa Python 3. Gigamit niini ang mysql-replication open source library, sa Python usab. Ang mga hulagway sa laray gikuha gikan sa mga lamesa sa MySQL ug gitipigan isip JSONB nga mga butang sa database sa PostgreSQL, ug dayon gi-decode sa pl/pgsql function ug gidula balik sa PostgreSQL database.

Mga bahin sa pg_chameleon

Daghang MySQL schemas gikan sa parehas nga cluster mahimong makopya ngadto sa usa ka PostgreSQL target database nga adunay usa-sa-daghang configuration
Ang gigikanan ug target nga mga ngalan sa schema dili mahimong pareho.
Ang datos sa replikasyon mahimong makuha gikan sa MySQL cascading replica.
Ang mga lamesa nga dili maka-replika o makamugna og mga sayup wala iapil.
Ang matag function sa pagkopya gikontrol sa mga daemon.
Pagkontrol gamit ang mga parameter ug mga file sa pag-configure base sa YAML.

Pananglitan:

Pag-host
vm1
vm2

OS nga bersyon
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

Bersyon sa database server
MySQL 5.7.26
PostgreSQL 10.5

DB pantalan
3306
5433

IP address
192.168.56.102
192.168.56.106

Una, andama ang tanan nga gikinahanglan nga mga sangkap alang sa pag-instalar sa pg_chameleon. Kini nga pananglitan adunay Python 3.6.8 nga gi-install, nga nagmugna sa usa ka virtual nga palibot ug gipalihok kini.

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

Kung malampuson nga ma-install ang Python3.6, ang nahabilin nga mga kinahanglanon kinahanglan makompleto, sama sa paghimo ug pagpaaktibo sa usa ka virtual nga palibot. Usab, ang pip module gi-update sa pinakabag-o nga bersyon ug gigamit sa pag-instalar sa pg_chameleon. Ang mga sugo sa ubos tinuyo nga mag-instalar sa pg_chameleon 2.0.9, bisan pa nga ang pinakabag-o nga bersyon kay 2.0.10. Kinahanglan kini aron malikayan ang mga bag-ong bug sa na-update nga bersyon.

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

Gitawag dayon namo ang pg_chameleon (ang chameleon usa ka sugo) nga adunay set_configuration_files nga argumento aron mahimo ang pg_chameleon ug paghimo sa default nga mga direktoryo sa configuration ug mga file.

(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

Naghimo na kami ug kopya sa config-example.yml isip default.yml aron kini mahimong default configuration file. Usa ka sample nga configuration file alang niini nga pananglitan gihatag sa ubos.

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

Ang configuration file niini nga pananglitan usa ka sample nga pg_chameleon file nga adunay ginagmay nga mga pag-usab aron mohaum sa tinubdan ug target nga mga palibot, ug sa ubos mao ang usa ka kinatibuk-ang panglantaw sa nagkalain-laing mga seksyon sa configuration file.

Ang default.yml configuration file adunay seksyon sa global settings (global settings) diin makontrol nimo ang mga setting sama sa lokasyon sa lock file, ang lokasyon sa mga log, ang storage period para sa mga log, ug uban pa. Sunod mao ang type override seksyon, diin ang gitakda nga mga lagda alang sa pag-override sa mga tipo sa panahon sa pagkopya. Ang default nga pananglitan naggamit ug tipo nga override nga lagda nga nag-convert sa tinyint(1) ngadto sa boolean. Sa sunod nga seksyon, among gitino ang mga detalye sa pagkonektar sa target nga database. Sa among kaso, kini usa ka database sa PostgreSQL, gipunting nga pg_conn. Sa katapusan nga seksyon, among gitino ang tinubdan nga datos, nga mao, ang mga parameter sa koneksyon sa tinubdan nga database, ang mapping scheme sa tinubdan ug target nga mga database, mga lamesa nga laktawan, timeout, memorya, gidak-on sa pakete. Timan-i nga ang "mga tinubdan" kay plural, nagpasabot nga makadugang mi og daghang tinubdan nga mga database ngadto sa samang target aron mag-set up og daghan-sa-usa nga configuration.

Ang world_x database sa panig-ingnan adunay 4 nga mga lamesa nga adunay mga laray nga gisugyot sa komunidad sa MySQL alang sa pananglitan. Mahimo kini ma-download dinhi. Ang sampol nga database moabut ingon usa ka alkitran ug gi-compress nga archive nga adunay mga panudlo alang sa paghimo ug pag-import sa mga string.

Usa ka espesyal nga tiggamit nga adunay parehas nga ngalan usr_replica gihimo sa MySQL ug PostgreSQL database. Gihatagan kini sa MySQL og dugang nga pag-access sa pagbasa sa tanan nga gikopya nga mga lamesa.

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;

Sa bahin sa PostgreSQL, usa ka db_replica database ang gihimo nga modawat sa mga pagbag-o gikan sa MySQL database. Ang usr_replica user sa PostgreSQL awtomatik nga gi-configure isip tag-iya sa duha ka schemas pgworld_x ug sch_chameleon, nga adunay sulod sa aktuwal nga mga replicated nga mga lamesa ug replication catalog tables, matag usa. Ang create_replica_schema nga argumento maoy responsable sa awtomatikong pag-configure, sama sa imong makita sa ubos.

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

Ang database sa MySQL gi-configure nga adunay pipila nga mga pagbag-o aron mahimo kini nga andam alang sa pagkopya sama sa gipakita sa ubos. Kinahanglan nimo nga i-restart ang database server aron ma-epekto ang mga pagbag-o.

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

Karon hinungdanon nga susihon ang koneksyon sa duha nga mga server sa database aron wala’y mga problema kung ipatuman ang mga mando sa pg_chameleon.

Sa PostgreSQL node:

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

Sa MySQL node:

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

Ang sunod nga tulo ka pg_chameleon (chameleon) nga mga sugo mag-andam sa palibot, idugang ang tinubdan, ug magsugod sa replica. Ang create_replica_schema nga argumento sa pg_chameleon nagmugna og default schema (sch_chameleon) ug usa ka replication schema (pgworld_x) sa PostgreSQL database, sama sa among giingon. Ang add_source nga argumento nagdugang ug source database sa configuration pinaagi sa pagbasa sa configuration file (default.yml), nga sa among kaso mao ang mysql, ug init_replica ang nag-initialize sa configuration base sa mga setting sa configuration file.

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

Ang output niining tulo ka mga sugo tin-aw nga nagpakita sa ilang kalampusan. Ang tanan nga mga kapakyasan o mga sayup sa syntax gipakita sa yano ug masabtan nga mga mensahe nga adunay mga pahiwatig kung giunsa ang pag-ayo sa mga problema.

Sa katapusan, magsugod kami sa pagkopya gamit ang start_replica ug makakuha usa ka mensahe sa kalampusan.

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

Mahimong pangutan-on ang kahimtang sa pagkopya gamit ang argumento nga show_status, ug ang mga sayup mahimong makita gamit ang argumento nga show_errors.

Resulta.

Sama sa giingon na namon, ang mga daemon nagdumala sa matag function sa pagkopya. Aron tan-awon sila, pangutana sa proseso nga lamesa gamit ang Linux ps command, sama sa gipakita sa ubos.

Resulta.

Ang pagkopya wala gikonsiderar nga gi-configure hangtod nga gisulayan namon kini sa tinuud nga oras, sama sa gipakita sa ubos. Naghimo kami og usa ka lamesa, nagsal-ot og usa ka magtiayon nga mga rekord sa MySQL database, ug nagtawag sa argumento sa sync_tables sa pg_chameleon aron i-update ang mga daemon ug kopyahon ang lamesa nga adunay mga rekord sa database sa 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.

Aron ma-validate ang mga resulta sa pagsulay, among gipangutana ang lamesa gikan sa database sa PostgreSQL ug gi-output ang mga linya.

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

Kung kami molalin, ang mosunod nga pg_chameleon nga mga sugo mao ang katapusan sa paglalin. Ang mga sugo kinahanglang ipadagan human nato mapamatud-an nga ang mga laray sa tanang target nga mga lamesa gikopya, nga miresulta sa usa ka hapsay nga migrate nga PostgreSQL database nga walay mga pakisayran sa tinubdan nga database o replication schema (sch_chameleon).

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

Mahimo nimong i-delete ang orihinal nga configuration ug replication schema gamit ang mosunod nga mga command.

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

Mga kaayohan sa pg_chameleon

Sayon nga setup ug configuration.
Sayon nga pag-troubleshoot ug pagtuki sa anomaliya nga adunay tin-aw nga mga mensahe sa sayup.
Ang dugang nga espesyal nga mga lamesa mahimong idugang sa replikasyon pagkahuman sa pagsugod nga wala’y pagbag-o sa nahabilin nga pag-configure.
Posible nga mag-set up og daghang tinubdan nga mga database alang sa usa ka target nga database, ug kini magamit kaayo kung imong gihiusa ang datos gikan sa usa o daghan pa nga MySQL database ngadto sa usa ka PostgreSQL database.
Mahimo nimong pilion nga dili kopyahon ang gipili nga mga lamesa.

Mga disbentaha sa pg_chameleon

Gisuportahan lamang sa MySQL 5.5 ug pataas isip tinubdan ug PostgreSQL 9.5 ug pataas isip target database.
Ang matag lamesa kinahanglan adunay panguna o talagsaon nga yawe, kung dili ang mga lamesa gisugdan sa proseso sa init_replica apan dili gisundog.
Usa ka paagi nga replikasyon - gikan lamang sa MySQL hangtod sa PostgreSQL. Busa, kini angay lamang alang sa aktibo-passive nga pamaagi.
Ang tinubdan mahimo lamang nga MySQL database, ug suporta alang sa usa ka PostgreSQL database isip tinubdan kay eksperimento lamang ug limitado (pagkat-on pa dinhi)

Total para sa pg_chameleon

Ang pamaagi sa pagkopya sa pg_chameleon maayo alang sa pagbalhin sa usa ka database gikan sa MySQL ngadto sa PostgreSQL. Ang dako nga downside mao nga ang replikasyon usa ra ka paagi, mao nga ang mga propesyonal sa database dili tingali gusto nga gamiton kini alang sa bisan unsang butang gawas sa paglalin. Apan ang problema sa one-way replication mahimong masulbad sa laing open source tool - SymmetricDS.

Basaha ang dugang sa opisyal nga dokumentasyon dinhi. Makit-an ang tabang sa command line dinhi.

Overview sa SymmetricDS

Ang SymmetricDS usa ka open source tool nga nag-replika sa bisan unsang database sa bisan unsang ubang komon nga database: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird ug uban pang mga cloud database instances, pananglitan Redshift, ug Azure, ug uban pa. Anaa nga mga bahin: database ug file synchronization, multi-master database replication, filtered synchronization, transformation, ug uban pa. Kini usa ka himan sa Java ug nagkinahanglan sa standard release JRE o JDK (bersyon 8.0 o mas taas pa). Dinhi mahimo nimong irekord ang mga pagbag-o sa datos sa mga nag-trigger sa gigikanan nga database ug ipadala kini sa katugbang nga target nga database ingon mga batch.

Mga Kapabilidad sa SymmetricDS

Ang himan independente sa plataporma, nagpasabut nga duha o daghan pa nga lainlaing mga database ang mahimong magbayloay og datos.
Ang mga database sa relasyon gi-synchronize pinaagi sa pagrekord sa mga pagbag-o sa datos, ug ang mga database nga gibase sa mga sistema sa file naggamit sa pag-synchronize sa file.
Duha ka paagi nga replikasyon gamit ang mga pamaagi sa pagduso ug pagbitad base sa usa ka hugpong sa mga lagda.
Posible ang pagpadala sa datos sa luwas nga mga network ug mga network nga adunay gamay nga bandwidth.
Awtomatikong pagbawi kung ipadayon ang operasyon sa mga node pagkahuman sa kapakyasan ug awtomatikong resolusyon sa panagbangi.
Cloud compatible ug episyente nga extension API.

Pananglitan:

Ang SymmetricDS mahimong ma-configure sa usa sa duha ka paagi:
Ang usa ka master (ginikanan) nga node nga sentral nga nag-coordinate sa data replication tali sa duha ka ulipon (bata) node, ug ang data exchange tali sa mga bata node gihimo lamang pinaagi sa ginikanan.
Ang aktibong node (node ​​1) mahimong makigkomunikar alang sa pagkopya sa laing aktibong node (node ​​2) nga walay tigpataliwala.

Sa duha ka mga kapilian, ang data exchange mahitabo gamit ang Push ug Pull. Niini nga pananglitan, atong hisgotan ang aktibong-aktibo nga configuration. Taas kaayo ang paghulagway sa tibuok arkitektura, busa pagtuon giyapara makat-on pa bahin sa SymmetricDS appliance.

Ang pag-instalar sa SymmetricDS sayon: i-download ang open source zip file gikan dinhi ug kuhaa kini bisan asa nimo gusto. Ang mosunod nga talaan naglista sa lokasyon sa pag-instalar ug bersyon sa SymmetricDS niini nga pananglitan, ingon man ang mga bersyon sa database, mga bersyon sa Linux, mga IP address, ug mga pantalan alang sa duha ka mga node.

Pag-host
vm1
vm2

OS nga bersyon
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

Bersyon sa database server
MySQL 5.7.26
PostgreSQL 10.5

DB pantalan
3306
5832

IP address
192.168.1.107
192.168.1.112

SymmetricDS nga Bersyon
SymmetricDS 3.9
SymmetricDS 3.9

Ang agianan sa pag-install sa SymmetricDS
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

SymmetricDS host name
corp-000
tindahan-001

Dinhi among gi-install ang SymmetricDS sa /usr/local/symmetric-server-3.9.20 ug ang lainlaing mga subdirectory ug mga file itago didto. Interesado kami sa mga sampol ug makina sa mga subdirektoryo. Ang direktoryo sa mga sample adunay sulud nga mga file sa pag-configure sa sample nga adunay mga kabtangan sa node, ingon man mga sample nga script sa SQL aron dali nga masugdan ang demo.

Sa direktoryo sa mga sample, nakita namon ang tulo nga mga file sa pag-configure nga adunay mga kabtangan sa node - ang ngalan nagpakita sa kinaiya sa node sa usa ka partikular nga laraw.

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

Ang SymmetricDS adunay tanan nga gikinahanglan nga mga file sa pag-configure alang sa usa ka sukaranan nga 3 node schema (opsyon 1) ug ang parehas nga mga file mahimong magamit alang sa usa ka 2 node schema (opsyon 2). Kopyaha ang gikinahanglan nga configuration file gikan sa samples directory ngadto sa mga makina sa vm1 host. Kini nahimong sama niini:

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

Kini nga node gitawag nga corp-000 sa SymmetricDS configuration ug ang database connection gidumala sa mysql jdbc driver nga naggamit sa connection string sa ibabaw ug login credentials. Nagkonektar kami sa replica_db database ug ang mga lamesa pagahimoon sa panahon sa paghimo sa schema. Gipakita sa sync.url ang link sa node aron i-synchronize.

Ang Node 2 sa host vm2 gi-configure isip store-001 ug ang uban gipiho sa node.properties file sa ubos. Ang store-001 node nagpadagan sa database sa PostgreSQL, ug ang pgdb_replica mao ang database nga kopyahon. registration.url nagtugot sa vm2 host sa pagkontak sa vm1 host ug pagkuha sa mga detalye sa configuration gikan niini.

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

Ang nahuman nga panig-ingnan sa SymmetricDS adunay mga kapilian alang sa pag-set up sa duha ka paagi nga replikasyon tali sa duha nga mga server sa database (duha ka node). Ang mga lakang sa ubos gihimo sa host vm1 (corp-000) nga maghimo usa ka sample schema nga adunay 4 nga mga lamesa. Dayon ang pag-execute sa create-sym-tables gamit ang symadmin command magmugna og directory tables diin ang mga lagda ug direksyon sa replication tali sa mga node itago. Sa katapusan, ang sampol nga datos gikarga sa mga lamesa.

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

Sa pananglitan, ang item ug item_selling_price nga mga lamesa awtomatik nga gi-configure aron makopya gikan sa corp-000 ngadto sa store-001, ug ang mga lamesa sa pagbaligya (sale_transaction ug sale_return_line_item) awtomatik nga gi-configure aron makopya gikan sa store-001 ngadto sa corp-000. Naghimo na kami karon og schema sa PostgreSQL database sa host vm2 (store-001) aron maandam kini nga makadawat og data gikan sa corp-000.

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

Siguruha nga susihon nga ang database sa MySQL sa vm1 adunay mga sample nga lamesa ug usa ka lamesa sa katalogo sa SymmetricDS. Timan-i nga ang SymmetricDS system tables (uban ang sym_ prefix) sa pagkakaron anaa lamang sa corp-000 node, tungod kay didto namo gipadagan ang create-sym-tables nga command ug magdumala sa replikasyon. Ug sa database sa store-001 node adunay 4 ra ka pananglitan nga mga lamesa nga walay datos.

Tanan. Andam na ang palibot sa pagpadagan sa mga proseso sa sym server sa duha ka node sama sa gipakita sa ubos.

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

Ang mga entry sa log gipadala ngadto sa background log file (symmetric.log) sa log folder sa direktoryo diin gi-install ang SymmetricDS, ingon man sa standard nga output. Ang sym server mahimo nang masugdan sa store-001 node.

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

Kung gipadagan nimo ang proseso sa sym server sa vm2 host, maghimo usab kini nga mga lamesa sa katalogo sa SymmetricDS sa database sa PostgreSQL. Kung gipadagan nimo ang proseso sa sym server sa duha nga mga node, sila mag-coordinate sa usag usa aron makopya ang datos gikan sa corp-000 hangtod sa store-001. Kung pagkahuman sa pila ka segundo gipangutana namon ang tanan nga 4 nga mga lamesa sa duha ka kilid, makita namon nga malampuson ang pagkopya. O mahimo nimo ipadala ang bootstrap sa store-001 gikan sa corp-000 gamit ang mosunod nga sugo.

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

Niini nga punto, usa ka bag-ong rekord ang gisal-ot sa lamesa sa aytem sa MySQL database sa node corp-000 (host: vm1) ug mahimong susihon alang sa replikasyon sa database sa PostgreSQL sa node store-001 (host: vm2). Nakita namon ang usa ka Pull nga operasyon aron ibalhin ang data gikan sa corp-000 ngadto sa 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)

Aron makahimo og push operation aron mabalhin ang data gikan sa store-001 ngadto sa corp-000, among isulod ang record sa sale_transaction table ug pamatud-an nga nahuman na ang replikasyon.

Resulta.

Nakita namon ang malampuson nga pag-setup sa duha ka paagi nga pagkopya sa mga panig-ingnan nga mga lamesa tali sa MySQL ug PostgreSQL database. Aron ma-set up ang replikasyon alang sa bag-ong mga lamesa sa user, buhata ang mosunod nga mga lakang. Naghimo kami ug lamesa t1 pananglitan ug gipahimutang ang mga lagda sa pagkopya sama sa mosunod. Mao nga nagbutang kami og kopya lamang gikan sa corp-000 hangtod sa tindahan-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)

Gipahibalo dayon ang pag-configure sa pagbag-o sa schema, i.e. ang pagdugang sa usa ka bag-ong lamesa, pinaagi sa paggamit sa command sa symadmin nga adunay argumento sa pag-sync-trigger, nga nagmugna pag-usab sa mga nag-trigger aron magkatugma sa mga kahulugan sa lamesa. Ang Send-schema gipadagan aron ipadala ang mga kausaban sa schema sa store-001, ug ang table t1 gisundog.

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

Mga Kaayohan sa SymmetricDS

Sayon nga pag-instalar ug pag-configure, lakip ang usa ka andam nga set sa mga file nga adunay mga parameter alang sa paghimo sa usa ka laraw nga adunay tulo o duha nga mga node.
Mga database sa cross-platform ug independensya sa platform, lakip ang mga server, laptop ug mobile device.
I-replika ang bisan unsang database sa bisan unsang ubang database sa lokal, sa WAN, o sa panganod.
Abilidad sa pagtrabaho nga labing maayo sa usa ka magtiayon nga mga database o pipila ka libo alang sa dali nga pagkopya.
Bayad nga bersyon nga adunay GUI ug maayo kaayo nga suporta.

Mga Disbentaha sa SymmetricDS

Kinahanglan nimo nga mano-mano nga ipasabut ang mga lagda ug direksyon sa pagkopya sa command line pinaagi sa mga pahayag sa SQL aron ma-load ang mga lamesa sa katalogo, nga mahimong dili kombenyente.
Ang pag-set up sa daghang mga lamesa alang sa pagkopya mahimong kapoy gawas kung mogamit ka og mga script sa paghimo sa mga pahayag sa SQL nga naghubit sa mga lagda ug direksyon sa pagkopya.
Adunay daghan kaayo nga impormasyon sa mga troso, ug usahay kinahanglan nimo nga limpyohan ang log file aron dili kini magkinahanglan og daghang luna.

Sumaryo sa SymmetricDS

Gitugotan ka sa SymmetricDS nga mag-set up sa duha ka paagi nga replikasyon tali sa duha, tulo, o bisan pila ka libo nga mga node aron makopya ug ma-synchronize ang mga file. Kini usa ka talagsaon nga himan nga naghimo sa daghang mga buluhaton sa iyang kaugalingon, sama sa awtomatik nga pagbawi sa datos pagkahuman sa taas nga oras sa paghunong sa usa ka node, luwas ug episyente nga komunikasyon tali sa mga node sa HTTPS, awtomatik nga pagdumala sa panagbangi base sa usa ka hugpong sa mga lagda, ug uban pa. tali sa bisan unsang mga database, busa, kini magamit alang sa usa ka halapad nga lainlaing mga senaryo, lakip ang paglalin, pag-upgrade, pag-apod-apod, pagsala, ug pagbag-o sa datos sa mga platform.

Ang pananglitan gibase sa opisyal dali nga giya pinaagi sa SymmetricDS. SA manwal sa paggamit Gihulagway sa detalye ang lain-laing mga konsepto nga nalangkit sa pag-set up sa replikasyon gamit ang SymmetricDS.

Source: www.habr.com

Idugang sa usa ka comment