Trasmhacasamhlú idir PostgreSQL agus MySQL

Trasmhacasamhlú idir PostgreSQL agus MySQL

Imlíneoidh mé tras-mhacasamhlú idir PostgreSQL agus MySQL, chomh maith le modhanna chun tras-mhacasamhlú a bhunú idir an dá fhreastalaí bunachar sonraí. Go hiondúil, tugtar aonchineálach ar bhunachair shonraí tras-athdhéanta, agus is modh áisiúil é chun bogadh ó fhreastalaí RDBMS amháin go ceann eile.

Go ginearálta meastar bunachair shonraí PostgreSQL agus MySQL a bheith gaolmhar, ach le síntí breise cuireann siad cumais NoSQL ar fáil. Anseo déanfaimid plé ar mhacasamhlú idir PostgreSQL agus MySQL ó thaobh DBMS de.

Ní chuirfimid síos ar na hoibreacha inmheánacha ar fad, ach na bunphrionsabail ionas go bhfaighidh tú smaoineamh ar mhacasamhlú a chumrú idir freastalaithe bunachar sonraí, buntáistí, teorainneacha agus cásanna úsáide.

De ghnáth, déantar macasamhlú idir dhá fhreastalaithe bunachar sonraí comhionann i mód dénártha nó trí úsáid a bhaint as fiosrúcháin idir máistir (aka foilsitheoir, máistir, nó gníomhach) agus sclábhaí (síntiúsóir, fuireachas, nó éighníomhach). Is é cuspóir an mhacasamhlú ná cóip fíor-ama den mháistirbhunachar sonraí ar thaobh na sclábhaithe a sholáthar. Sa chás seo, aistrítear sonraí ó mháistir go sclábhaí, is é sin, ó ghníomhach go héighníomhach, toisc nach ndéantar macasamhlú ach i dtreo amháin. Ach is féidir leat macasamhlú a bhunú idir dhá bhunachar sonraí sa dá threo, ionas go n-aistrítear sonraí ó sclábhaí go máistreacht i gcumraíocht ghníomhach-ghníomhach. Is féidir é seo go léir, lena n-áirítear macasamhlú cascáideach, idir dhá fhreastalaithe bunachar sonraí comhionann nó níos mó. Braitheann cumraíocht ghníomhach-ghníomhach nó gníomhach-éighníomhach ar riachtanas, infhaighteacht cumais den sórt sin sa chumraíocht tosaigh nó úsáid réitigh chumraíochta seachtracha agus comhbhabhtáil reatha .

Is féidir an chumraíocht a thuairiscítear idir freastalaithe bunachar sonraí éagsúla. Is féidir an freastalaí a chumrú chun glacadh le sonraí macasamhlaithe ó fhreastalaí bunachar sonraí eile agus fós pictiúir fíor-ama de na sonraí a mhacasamhlú a choinneáil. Tairgeann MySQL agus PostgreSQL an chuid is mó de na cumraíochtaí seo intí nó trí shínte tríú páirtí, lena n-áirítear modhanna logála dénártha, glasáil dioscaí, agus modhanna ráitis agus sraitheanna.

Tá gá le tras-mhacasamhlú idir MySQL agus PostgreSQL le haghaidh aistriú aonuaire ó fhreastalaí bunachar sonraí amháin go freastalaí eile. Úsáideann na bunachair shonraí seo prótacail éagsúla, mar sin ní féidir iad a nascadh go díreach. Chun malartú sonraí a bhunú, is féidir leat uirlis foinse oscailte sheachtrach a úsáid, mar shampla pg_chameleon.

Cad é pg_chameleon

pg_chameleon is córas macasamhlaithe ó MySQL go PostgreSQL i Python 3. Úsáideann sé an leabharlann foinse oscailte mysql-macasamhlú, freisin i Python. Baintear íomhánna ró as táblaí MySQL agus stóráiltear iad mar réada JSONB i mbunachar sonraí PostgreSQL, ansin díchriptítear iad ag an bhfeidhm pl/pgsql agus a atáirgeadh i mbunachar sonraí PostgreSQL.

Gnéithe de pg_chameleon

Is féidir scéimeanna iomadúla MySQL ón mbraisle chéanna a mhacasamhlú go bunachar sonraí PostgreSQL sprice amháin i gcumraíocht duine le go leor
Ní féidir le hainmneacha na scéime foinse agus sprice a bheith mar an gcéanna.
Is féidir sonraí macasamhlaithe a aisghabháil ó mhacasamhail MySQL atá cascáidithe.
Eisiatar táblaí nach bhfuil in ann earráidí a mhacasamhlú nó a tháirgeadh.
Tá gach feidhm mhacasamhlú á rialú ag deamhan.
Rialú trí pharaiméadair bunaithe ar YAML agus comhaid cumraíochta.

Sampla

Óstach
vm1
vm2

Leagan OS
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

Leagan freastalaí DB
MySQL 5.7.26
PostgreSQL 10.5

port DB
3306
5433

Seoladh IP
192.168.56.102
192.168.56.106

Chun tús a chur, ullmhaigh na comhpháirteanna go léir is gá chun pg_chameleon a shuiteáil. Insealbhaíonn an sampla seo Python 3.6.8, a chruthaíonn agus a ghníomhaíonn an timpeallacht fhíorúil.

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

Tar éis duit Python3.6 a shuiteáil go rathúil, ní mór duit na ceanglais atá fágtha a chomhlánú, mar shampla timpeallacht fhíorúil a chruthú agus a ghníomhachtú. Ina theannta sin, déantar an modúl pip a nuashonrú go dtí an leagan is déanaí agus úsáidtear é chun pg_chameleon a shuiteáil. Suiteáil na horduithe thíos pg_chameleon 2.0.9 go hintinneach, cé go bhfuil an leagan is déanaí 2.0.10. Tá sé seo riachtanach chun fabhtanna nua a sheachaint sa leagan nuashonraithe.

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

Glaoimid ansin ar pg_chameleon (is ordú é chameleon) leis an argóint set_configuration_files chun pg_chameleon a chumasú agus eolairí réamhshocraithe agus comhaid cumraíochta a chruthú.

(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

Anois cruthaímid cóip de config-example.yml mar default.yml ionas go mbeidh sé mar an comhad cumraíochta réamhshocraithe. Soláthraítear comhad cumraíochta samplach don sampla seo thíos.

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

Is comhad pg_chameleon samplach é an comhad cumraíochta sa sampla seo le mionathruithe a oireann do na timpeallachtaí foinse agus sprice, agus thíos tá forbhreathnú ar na hailt éagsúla den chomhad cumraíochta.

Sa chomhad cumraíochta default.yml tá rannóg de shocruithe domhanda, áit ar féidir leat socruithe a bhainistiú mar shuíomh an chomhaid ghlais, suíomh na logaí, an tréimhse stórála le haghaidh logs, etc. sraith rialacha maidir le cineálacha sáraitheacha le linn macasamhlaithe. Mainneachtainíonn an sampla riail sháraitheach cineáil a thiontaíonn tinyint(1) go luach Boole. Sa chéad chuid eile, sonraímid na sonraí ceangail leis an mbunachar sonraí sprice. Is é ár gcás, is bunachar sonraí PostgreSQL é seo, ainmnithe pg_conn. Sa chuid dheireanach, léirímid na sonraí foinse, is é sin, paraiméadair nasc an bhunachair shonraí foinse, an scéim mhapála idir an fhoinse agus na bunachair shonraí sprice, táblaí ar gá iad a scipeáil, am feithimh, cuimhne, méid an phacáiste. Tabhair faoi deara go bhfuil "foinsí" iolra, rud a chiallaíonn gur féidir linn bunachair shonraí foinse iolracha a chur le bunachar sonraí sprice amháin chun cumraíocht iomad-le-duine a chur ar bun.

Sa bhunachar sonraí sampla world_x tá 4 tábla le sraitheanna a thairgeann an pobal MySQL mar shamplaí. Is féidir é a íoslódáil anseo. Tagann an bunachar sonraí samplach mar chartlann tarra agus chomhbhrúite le treoracha chun sraitheanna a chruthú agus a allmhairiú.

I mbunachair shonraí MySQL agus PostgreSQL, cruthaítear úsáideoir speisialta leis an ainm céanna usr_replica. I MySQL, tugtar cearta breise léite do gach tábla macasamhlaithe.

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;

Ar thaobh PostgreSQL, cruthaítear bunachar sonraí db_replica a ghlacfaidh le hathruithe ó bhunachar sonraí MySQL. Tá an t-úsáideoir usr_replica i PostgreSQL cumraithe go huathoibríoch mar úinéir dhá scéimre, pgworld_x agus sch_chameleon, ina bhfuil na táblaí macasamhlaithe iarbhír agus na táblaí eolaire macasamhlaithe, faoi seach. Tá an argóint create_replica_schema freagrach as cumraíocht uathoibríoch, mar a fheicfidh tú thíos.

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

Tá an bunachar sonraí MySQL cumraithe le roinnt athruithe paraiméadar chun é a ullmhú le haghaidh macasamhlú mar a thaispeántar thíos. Beidh ort an freastalaí bunachar sonraí a atosú le go dtiocfaidh na hathruithe i bhfeidhm.

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

Anois tá sé tábhachtach an nasc leis an dá fhreastalaithe bunachar sonraí a sheiceáil ionas nach mbeidh aon fhadhbanna ann nuair a bhíonn na horduithe pg_chameleon á reáchtáil.

Ar an nód PostgreSQL:

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

Ar an nód MySQL:

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

Ullmhaíonn na chéad trí ordú pg_chameleon (chameleon) eile an timpeallacht, cuir an fhoinse leis, agus tosaigh ar an macasamhail. Cruthaíonn an argóint create_replica_schema go pg_chameleon scéimre réamhshocraithe (sch_chameleon) agus scéimre macasamhlaithe (pgworld_x) i mbunachar sonraí PostgreSQL, mar a phléamar cheana. Cuireann an argóint add_source bunachar sonraí foinse leis an gcumraíocht tríd an gcomhad cumraíochta a léamh (default.yml), agus inár gcás is mysql é, agus cuireann init_replica tús leis an gcumraíocht bunaithe ar na paraiméadair sa chomhad cumraíochta.

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

Léiríonn aschur na dtrí ordú seo go soiléir go ndearnadh iad a fhorghníomhú go rathúil. Tuairiscítear aon tuairteanna nó earráidí comhréire i dteachtaireachtaí simplí soiléire le leideanna maidir le conas an fhadhb a réiteach.

Ar deireadh, cuirimid tús le macasamhlú ag baint úsáide as start_replica agus faighimid teachtaireacht ratha.

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

Is féidir stádas macasamhlaithe a cheistiú ag baint úsáide as an argóint show_status, agus is féidir earráidí a fheiceáil ag baint úsáide as an argóint show_errors.

An toradh.

Mar a dúirt muid cheana, tá gach feidhm macasamhlaithe á rialú ag deamhan. Chun iad a fheiceáil, cuirimid ceist ar an tábla próisis leis an ordú Linux ps, mar a thaispeántar thíos.

An toradh.

Ní mheastar go bhfuil macasamhlú cumraithe go dtí go ndéanfaimid tástáil air i bhfíor-am, mar a thaispeántar thíos. Cruthaímid tábla, cuir cúpla taifead isteach sa bhunachar sonraí MySQL, agus glaoimid ar an argóint sync_tables i pg_chameleon chun na daemons a nuashonrú agus an tábla a mhacasamhlú leis na taifid chuig bunachar sonraí 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.

Chun na torthaí tástála a dhearbhú, ceistímid an tábla ó bhunachar sonraí PostgreSQL agus aschuirimid na sraitheanna.

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

Má táimid ag déanamh imirce, beidh na horduithe pg_chameleon seo a leanas ina deireadh. Ní mór na horduithe a fhorghníomhú tar éis dúinn a bheith cinnte go bhfuil na sraitheanna de na táblaí sprice go léir a mhacasamhlú, agus is é an toradh a bheidh ar bhunachar sonraí PostgreSQL aistrithe go néata gan tagairtí don bhunachar sonraí foinse nó don scéim macasamhlaithe (sch_chameleon).

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

Más mian leat, is féidir leat na horduithe seo a leanas a úsáid chun an bhunscéim cumraíochta agus macasamhlaithe a scriosadh.

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

Buntáistí pg_chameleon

Socrú agus cumraíocht éasca.
Fabhtcheartaigh go héasca agus sainaithin aimhrialtachtaí le teachtaireachtaí earráide soiléire.
Is féidir táblaí speisialta breise a chur leis an macasamhlú tar éis thúsaithe gan an chuid eile den chumraíocht a athrú.
Is féidir bunachair shonraí foinse iolracha a chumrú do bhunachar sonraí sprice amháin, agus tá sé seo an-úsáideach má tá tú ag comhcheangal sonraí ó bhunachair sonraí MySQL amháin nó níos mó isteach i mbunachar sonraí amháin PostgreSQL.
Ní gá duit na táblaí roghnaithe a mhacasamhlú.

Míbhuntáistí pg_chameleon

Ní thacaítear leis ach le MySQL 5.5 agus os a chionn mar fhoinse agus PostgreSQL 9.5 agus os a chionn mar spriocbhunachar sonraí.
Ní mór eochair phríomhúil nó eochair uathúil a bheith ag gach tábla, nó cuirfear tús leis na táblaí le linn an phróisis init_replica ach ní dhéantar iad a mhacasamhlú.
Macasamhlú aontreo - ó MySQL go PostgreSQL amháin. Mar sin, níl sé oiriúnach ach don chiorcad “gníomhach-éighníomhach”.
Ní féidir leis an bhfoinse ach bunachar sonraí MySQL a bheith ann, agus níl tacaíocht do bhunachar sonraí PostgreSQL mar fhoinse ach turgnamhach agus le teorainneacha (foghlaim tuilleadh anseo)

Torthaí le haghaidh pg_chameleon

Tá an modh macasamhlaithe i pg_chameleon iontach chun bunachar sonraí a aistriú ó MySQL go PostgreSQL. Is é an míbhuntáiste suntasach ná nach bhfuil ann ach macasamhlú, agus mar sin ní dócha go mbeidh gairmithe bunachar sonraí ag iarraidh é a úsáid le haghaidh rud ar bith seachas imirce. Ach is féidir an fhadhb a bhaineann le macasamhlú aontreo a réiteach le huirlis foinse oscailte eile - SymmetricDS.

Léigh tuilleadh sna doiciméid oifigiúla anseo. Is féidir cabhair líne ordaithe a fháil anseo.

Forbhreathnú ar SymmetricDS

Is uirlis foinse oscailte é SymmetricDS a dhéanann aon bhunachar sonraí a mhacasamhlú chuig aon bhunachar sonraí coitianta eile: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird agus cásanna bunachair sonraí scamall eile, m.sh. Redshift, agus Azure, etc. Gnéithe atá ar fáil: sioncrónú bunachar sonraí agus comhad, macasamhlú bunachar sonraí ilmháistir, sioncrónú scagtha, claochlú agus eile. Uirlis Java í seo agus teastaíonn scaoileadh caighdeánach an JRE nó JDK (leagan 8.0 nó níos airde). Anseo, is féidir athruithe sonraí ar thriogairí sa bhunachar sonraí foinseach a thaifeadadh agus a sheoladh chuig an spriocbhunachar sonraí cuí i bhfoirm baisceanna.

Gnéithe SymmetricDS

Tá an uirlis neamhspleách ar ardán, rud a chiallaíonn gur féidir le dhá bhunachair shonraí éagsúla nó níos mó sonraí a mhalartú.
Déantar bunachair shonraí choibhneasta a shioncronú ag baint úsáide as taifid athraithe sonraí, agus úsáideann bunachair shonraí bunaithe ar chóras comhaid sioncrónaithe comhad.
Macasamhlú déthreo ag baint úsáide as modhanna Brúigh agus Tarraingt bunaithe ar shraith rialacha.
Is féidir sonraí a aistriú thar líonraí slána agus íseal-bandaleithead.
Aisghabháil uathoibríoch nuair a thosaíonn nóid ag feidhmiú tar éis teip agus réiteach coinbhleachta uathoibríoch.
APIs síneadh cumhachtach agus comhoiriúnach le scamall.

Sampla

Is féidir SymmetricDS a chumrú ar cheann amháin de dhá bhealach:
Nód máistir (tuismitheoir) a chomhordaíonn go lárnach macasamhlú sonraí idir dhá nód sclábhaithe (leanbh), agus ní tharlaíonn cumarsáid idir nóid linbh ach tríd an tuismitheoir.
Is féidir le nód gníomhach (Nóid 1) cumarsáid a dhéanamh le haghaidh macasamhlú le nód gníomhach eile (Nóid 2) gan idirghabhálaí.

Sa dá rogha, tarlaíonn malartú sonraí ag baint úsáide as Brúigh agus Tarraingt. Sa sampla seo déanfaimid machnamh ar chumraíocht ghníomhach-ghníomhach. Thógfadh sé ró-fhada cur síos a dhéanamh ar an ailtireacht iomlán, mar sin déan do chuid taighde. treoirchun tuilleadh a fhoghlaim faoin ngléas SymmetricDS.

Tá sé an-simplí SymmetricDS a shuiteáil: íoslódáil an leagan foinse oscailte den chomhad zip dá bhrí sin agus tóg amach é pé áit is mian leat. Soláthraíonn an tábla thíos faisnéis maidir le suíomh suiteála agus leagan SymmetricDS sa sampla seo, chomh maith leis na leaganacha bunachar sonraí, leaganacha Linux, seoltaí IP, agus calafoirt don dá nód.

Óstach
vm1
vm2

Leagan OS
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

Leagan freastalaí DB
MySQL 5.7.26
PostgreSQL 10.5

port DB
3306
5832

Seoladh IP
192.168.1.107
192.168.1.112

Leagan SymmetricDS
Siméadracht DS 3.9
Siméadracht DS 3.9

Conair suiteála SymmetricDS
/usr/local/siméadrach-freastalaí-3.9.20
/usr/local/siméadrach-freastalaí-3.9.20

Ainm nód SymmetricDS
corp-000
siopa-001

Anseo cuirimid SymmetricDS in /usr/local/symmetric-server-3.9.20, agus stórálfar fochomhadlanna agus comhaid éagsúla ann. Tá suim againn sna samplaí agus sna fochomhadlanna innill. Tá comhaid chumraíochta shamplacha le hairíonna nód san eolaire samplaí, chomh maith le scripteanna SQL mar shampla chun tú a chur ar bun go tapa.

Sa eolaire samplaí feicimid trí chomhad cumraíochta le hairíonna nód - léiríonn an t-ainm nádúr an nód i scéim áirithe.

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

Tá na comhaid cumraíochta riachtanacha go léir ag SymmetricDS le haghaidh dearadh bunúsach 3-nód (rogha 1), agus is féidir na comhaid chéanna a úsáid le haghaidh dearadh 2-nód (rogha 2). Cóipeáil an comhad cumraíochta riachtanach ón eolaire samplaí chuig na hinnill ar an óstach vm1. Tarlaíonn sé mar seo:

$> cat engines/corp-000.properties
engine.name=corp-000
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://192.168.1.107:3306/replica_db?autoReconnect=true&useSSL=false
db.user=root
db.password=admin123
registration.url=
sync.url=http://192.168.1.107:31415/sync/corp-000
group.id=corp
external.id=000

Corp-000 a thugtar ar an nód seo i gcumraíocht SymmetricDS, agus láimhseálann an tiománaí mysql jdbc an nasc bunachar sonraí, a úsáideann an teaghrán nasc thuas agus na dintiúir logáil isteach. Nascaimid leis an mbunachar sonraí replica_db agus cruthófar táblaí le linn cruthú scéimre. Léiríonn sync.url cá háit le dul i dteagmháil leis an nód le haghaidh sioncrónaithe.

Tá nód 2 ar óstach vm2 cumraithe mar store-001 agus tá an chuid eile sonraithe sa chomhad nóde.properties thíos. Ritheann Node store-001 bunachar sonraí PostgreSQL agus is é pgdb_replica an bunachar sonraí macasamhlaithe. Ceadaíonn registration.url d’óstach vm2 dul i dteagmháil le hóstach vm1 agus sonraí cumraíochta a fháil uaidh.

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

Tá paraiméadair sa sampla comhlánaithe SymmetricDS chun macasamhlú déthreo a bhunú idir dhá fhreastalaí bunachar sonraí (dhá nód). Déantar na céimeanna thíos ar óstach vm1 (corp-000), a chruthóidh scéimre shampla le 4 tábla. Ansin nuair a rithtear create-sym-tables leis an ordú symadmin cruthaítear táblaí eolaire ina stórálfar na rialacha agus treo an mhacasamhlú idir nóid. Ar deireadh, tá sonraí samplacha luchtaithe isteach sna táblaí.

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 sampla, déantar na táblaí item agus item_selling_price a chumrú go huathoibríoch chun iad a mhacasamhlú ó corp-000 go store-001, agus déantar na táblaí díola (sale_transaction agus sale_return_line_item) a chumrú go huathoibríoch chun iad a mhacasamhlú ó store-001 go corp-000. Anois cruthaímid scéimre i mbunachar sonraí PostgreSQL ar óstach vm2 (store-001) chun é a ullmhú chun sonraí a fháil ó corp-000.

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

Bí cinnte a sheiceáil go bhfuil táblaí samplacha agus táblaí catalóg SymmetricDS i mbunachar sonraí MySQL ar vm1. Tabhair faoi deara nach bhfuil na táblaí córais SymmetricDS (réamhshocrú le sym_) ar fáil ach ar nód corp-000 faoi láthair toisc gur sin an áit a ritheamar an t-ordú create-sym-tables agus beidh muid ag bainistiú macasamhlú. Agus sa bhunachar sonraí ar nód store-001 ní bheidh ach 4 táblaí shampla gan sonraí.

Gach. Tá an timpeallacht réidh chun próisis freastalaí sim a reáchtáil ar an dá nód mar a thaispeántar thíos.

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

Seoltar iontrálacha loga chuig comhad logála cúlra (symmetric.log) san fhillteán logs san eolaire ina bhfuil SymmetricDS suiteáilte, chomh maith le haschur caighdeánach. Is féidir an freastalaí sim a thionscnamh anois ar nód store-001.

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

Má ritheann tú an próiseas freastalaí sym ar an óstach vm2, cruthóidh sé táblaí catalóg SymmetricDS i mbunachar sonraí PostgreSQL freisin. Má ritheann tú an próiseas freastalaí sim ar an dá nód, comhordaíonn siad lena chéile chun sonraí a mhacasamhlú ó corp-000 go store-001. Más rud é tar éis cúpla soicind go gcuirfimid gach ceist ar na 4 tábla ar an dá thaobh, feicfimid gur éirigh le macasamhlú. Nó is féidir leat an bootstrap a sheoladh chuig nód store-001 ó corp-000 leis an ordú seo a leanas.

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

Ag an bpointe seo, cuirtear taifead nua isteach sa tábla míreanna sa bhunachar sonraí MySQL ar nód corp-000 (óstach: vm1), agus is féidir leat a mhacasamhlú chuig bunachar sonraí PostgreSQL a sheiceáil ar nód store-001 (óstach: vm2). Feicimid oibríocht Tarraingt chun sonraí a aistriú ó chorp-000 go stór-001.

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

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

Chun oibríocht Brúigh a dhéanamh chun sonraí a aistriú ó store-001 go corp-000, cuirimid taifead isteach sa tábla sale_transaction agus deimhnímid go n-éiríonn leis an macasamhlú.

An toradh.

Feicimid go bhfuil macasamhlú dhá bhealach déanta ar na táblaí samplacha idir bunachair shonraí MySQL agus PostgreSQL. Chun macasamhlú le haghaidh táblaí úsáideora nua a shocrú, lean na céimeanna seo: Cruthaímid tábla t1 mar shampla agus déanaimid a rialacha macasamhlú a chumrú mar seo a leanas. Ar an mbealach seo ní dhéanaimid ach macasamhlú ó chorp-000 go store-001 a chumrú.

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)

Cuirtear an t-athrú scéimre in iúl don chumraíocht ansin, is é sin, tábla nua a chur leis, ag baint úsáide as an ordú symadmin leis an argóint sync-triggers, a athchruthaíonn na truicear chun na sainmhínithe tábla a mhapáil. déantar seol-scéim chun athruithe scéimre a sheoladh chuig nód store-001, agus tá macasamhlú tábla t1 cumraithe.

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

Buntáistí SymmetricDS

Suiteáil agus cumraíocht éasca, lena n-áirítear sraith réamhdhéanta de chomhaid le paraiméadair chun ciorcad trí nód nó dhá nód a chruthú.
Bunachair sonraí tras-ardáin agus neamhspleáchas ardáin, lena n-áirítear freastalaithe, ríomhairí glúine agus gléasanna soghluaiste.
Déan aon bhunachar sonraí a mhacasamhlú go dtí aon bhunachar sonraí eile go háitiúil, ar an WAN nó sa scamall.
Féidearthacht obair optamach le cúpla bunachar sonraí nó roinnt mílte le haghaidh macasamhlú áisiúil.
Leagan íoctha le GUI agus tacaíocht den scoth.

Míbhuntáistí SymmetricDS

Ní mór duit na rialacha agus an treo macasamhlaithe ar an líne ordaithe a shainiú de láimh trí ráitis SQL chun táblaí catalóige a luchtú, rud a d'fhéadfadh a bheith deacair.
Is féidir go leor táblaí a chur ar bun le haghaidh macasamhlú a bheith deacair mura n-úsáideann tú scripteanna chun ráitis SQL a chruthú a shainíonn na rialacha agus treo an mhacasamhlú.
Tá an iomarca faisnéise á thaifeadadh sna logaí, agus uaireanta ní mór duit an comhad logála a ghlanadh ionas nach dtógann sé an iomarca spáis.

Torthaí do SymmetricDS

Ligeann SymmetricDS duit macasamhlú dhá bhealach a bhunú idir dhá, trí, nó fiú roinnt mílte nóid chun comhaid a mhacasamhlú agus a shioncronú. Is uirlis uathúil é seo a chomhlíonann go leor tascanna go neamhspleách, mar shampla aisghabháil sonraí uathoibríoch tar éis tréimhse fada downtime ar nód, malartú sonraí slán agus éifeachtach idir nóid trí HTTPS, bainistíocht coinbhleachta uathoibríoch bunaithe ar shraith rialacha, etc. Feidhmíonn SymmetricDS macasamhlú idir bunachair shonraí ar bith, dá bhrí sin, is féidir é a úsáid le haghaidh raon leathan cásanna, lena n-áirítear aistriú, imirce, dáileadh, scagadh agus claochlú sonraí thar ardáin.

Tá an sampla bunaithe ar an oifigeach treoir thapa le SymmetricDS. IN lámhleabhar úsáideora Déantar cur síos go mion ar na coincheapa éagsúla a bhaineann le macasamhlú le SymmetricDS a bhunú.

Foinse: will.com

Add a comment