PostgreSQL un MySQL savstarpēja replikācija

PostgreSQL un MySQL savstarpēja replikācija

Es izklāstīšu PostgreSQL un MySQL savstarpējo replikāciju, kā arī metodes savstarpējās replikācijas iestatīšanai starp diviem datu bāzes serveriem. Parasti krusteniski replicētas datu bāzes tiek sauktas par viendabīgām, un tā ir ērta pārvietošanās metode no viena RDBMS servera uz citu.

PostgreSQL un MySQL datu bāzes parasti tiek uzskatītas par relāciju, taču ar papildu paplašinājumiem tās piedāvā NoSQL iespējas. Šeit mēs apspriedīsim PostgreSQL un MySQL replikāciju no relāciju DBVS viedokļa.

Mēs neaprakstīsim visu iekšējo darbību, tikai pamatprincipus, lai jūs iegūtu priekšstatu par replikācijas konfigurēšanu starp datu bāzes serveriem, priekšrocībām, ierobežojumiem un lietošanas gadījumiem.

Parasti replikācija starp diviem identiskiem datu bāzes serveriem tiek veikta vai nu binārajā režīmā, vai izmantojot vaicājumus starp galveno (pazīstams arī kā izdevēju, galveno vai aktīvo) un vergu (abonentu, gaidīšanas vai pasīvo). Replikācijas mērķis ir nodrošināt galvenās datu bāzes reāllaika kopiju vergu pusē. Šajā gadījumā dati tiek pārsūtīti no galvenā uz vergu, tas ir, no aktīvā uz pasīvo, jo replikācija tiek veikta tikai vienā virzienā. Bet jūs varat iestatīt replikāciju starp divām datu bāzēm abos virzienos, lai dati tiktu pārsūtīti no pakārtotā uz galveno aktīvā-aktīvā konfigurācijā. Tas viss, ieskaitot kaskādes replikāciju, ir iespējams starp diviem vai vairākiem identiskiem datu bāzes serveriem.Aktīvā-aktīvā vai aktīvā-pasīvā konfigurācija ir atkarīga no nepieciešamības, šādu iespēju pieejamības sākotnējā konfigurācijā vai ārējo konfigurācijas risinājumu izmantošanas un esošajiem kompromisiem.

Aprakstītā konfigurācija ir iespējama starp dažādiem datu bāzes serveriem. Serveri var konfigurēt, lai pieņemtu replicētus datus no cita datu bāzes servera un joprojām uzturētu replicēto datu momentuzņēmumus. MySQL un PostgreSQL piedāvā lielāko daļu šo konfigurāciju iekšēji vai izmantojot trešo pušu paplašinājumus, tostarp bināro žurnālu metodes, diska bloķēšanu un uz priekšrakstiem un rindiņām balstītas metodes.

MySQL un PostgreSQL savstarpēja replikācija ir nepieciešama vienreizējai migrācijai no viena datu bāzes servera uz citu. Šīs datu bāzes izmanto dažādus protokolus, tāpēc nav iespējams tās tieši saistīt. Lai izveidotu datu apmaiņu, varat izmantot ārēju atvērtā koda rīku, piemēram, pg_chameleon.

Kas ir pg_chameleon

pg_chameleon ir replicēšanas sistēma no MySQL uz PostgreSQL Python 3. Tā izmanto atvērtā pirmkoda mysql replikācijas bibliotēku, arī Python. Rindu attēli tiek iegūti no MySQL tabulām un saglabāti kā JSONB objekti PostgreSQL datu bāzē, pēc tam atšifrēti ar funkciju pl/pgsql un reproducēti PostgreSQL datu bāzē.

pg_chameleon iezīmes

Vairākas MySQL shēmas no viena klastera var replicēt vienā mērķa PostgreSQL datu bāzē konfigurācijā viens pret daudziem
Avota un mērķa shēmas nosaukumi nevar būt vienādi.
Replikācijas datus var izgūt no kaskādes MySQL replikas.
Tabulas, kuras nevar replicēt vai radīt kļūdas, ir izslēgtas.
Katru replikācijas funkciju kontrolē dēmoni.
Kontrole, izmantojot YAML balstītus parametrus un konfigurācijas failus.

Piemērs

Saimnieks
vm1
vm2

OS versija
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

DB servera versija
MySQL 5.7.26
PostgreSQL 10.5

DB ports
3306
5433

IP adrese
192.168.56.102
192.168.56.106

Lai sāktu, sagatavojiet visus nepieciešamos komponentus, lai instalētu pg_chameleon. Šajā piemērā tiek instalēta Python 3.6.8, kas izveido un aktivizē virtuālo vidi.

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

Pēc sekmīgas Python3.6 instalēšanas ir jāizpilda atlikušās prasības, piemēram, jāizveido un jāaktivizē virtuālā vide. Turklāt pip modulis tiek atjaunināts uz jaunāko versiju un tiek izmantots pg_chameleon instalēšanai. Tālāk norādītās komandas apzināti instalē pg_chameleon 2.0.9, lai gan jaunākā versija ir 2.0.10. Tas ir nepieciešams, lai novērstu jaunas kļūdas atjauninātajā versijā.

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

Pēc tam mēs izsaucam pg_chameleon (chameleon ir komanda) ar argumentu set_configuration_files, lai iespējotu pg_chameleon un izveidotu noklusējuma direktorijus un konfigurācijas failus.

(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

Tagad mēs izveidojam faila config-example.yml kopiju kā default.yml, lai tā kļūtu par noklusējuma konfigurācijas failu. Tālāk ir sniegts šī piemēra konfigurācijas faila paraugs.

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

Konfigurācijas fails šajā piemērā ir pg_chameleon faila paraugs ar nelielām modifikācijām, lai tas atbilstu avota un mērķa videi, un tālāk ir sniegts pārskats par dažādām konfigurācijas faila sadaļām.

Konfigurācijas failā default.yml ir globālo iestatījumu sadaļa, kurā varat pārvaldīt tādus iestatījumus kā bloķēšanas faila atrašanās vieta, žurnālu atrašanās vieta, žurnālu glabāšanas periods utt. Tālāk seko tipa ignorēšanas sadaļa, kur noteikumu kopums tipu ignorēšanai replikācijas laikā. Piemērā pēc noklusējuma tiek izmantots tipa ignorēšanas kārtula, kas pārvērš tinyint(1) par Būla vērtību. Nākamajā sadaļā mēs norādām savienojuma informāciju ar mērķa datu bāzi. Mūsu gadījumā šī ir PostgreSQL datu bāze ar nosaukumu pg_conn. Pēdējā sadaļā mēs norādām avota datus, tas ir, avota datu bāzes savienojuma parametrus, kartēšanas shēmu starp avota un mērķa datu bāzēm, tabulas, kuras jāizlaiž, gaidīšanas laiku, atmiņu, pakotnes lielumu. Ņemiet vērā, ka "avoti" ir daudzskaitlī, kas nozīmē, ka mēs varam pievienot vairākas avotu datu bāzes vienai mērķa datubāzei, lai iestatītu konfigurāciju "daudzi pret vienu".

Piemēru datubāzē world_x ir 4 tabulas ar rindām, kuras MySQL kopiena piedāvā kā piemērus. To var lejupielādēt šeit. Datu bāzes paraugs ir darvas un saspiests arhīvs ar instrukcijām rindu izveidei un importēšanai.

MySQL un PostgreSQL datubāzēs tiek izveidots īpašs lietotājs ar tādu pašu nosaukumu usr_replica. Programmā MySQL tai tiek piešķirtas papildu lasīšanas tiesības visām replicētajām tabulām.

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;

PostgreSQL pusē tiek izveidota db_replica datu bāze, kas pieņems izmaiņas no MySQL datu bāzes. Lietotājs usr_replica programmā PostgreSQL tiek automātiski konfigurēts kā īpašnieks divām shēmām pgworld_x un sch_chameleon, kas satur attiecīgi faktiskās replicētās tabulas un replikācijas direktoriju tabulas. Arguments create_replica_schema ir atbildīgs par automātisko konfigurāciju, kā redzēsit tālāk.

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

MySQL datu bāze ir konfigurēta ar dažām parametru izmaiņām, lai sagatavotu to replikācijai, kā parādīts tālāk. Lai izmaiņas stātos spēkā, jums būs jārestartē datu bāzes serveris.

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

Tagad ir svarīgi pārbaudīt savienojumu ar abiem datu bāzes serveriem, lai, izpildot komandas pg_chameleon, nerastos problēmas.

PostgreSQL mezglā:

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

MySQL mezglā:

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

Nākamās trīs pg_chameleon (chameleon) komandas sagatavo vidi, pievieno avotu un inicializē repliku. Arguments create_replica_schema pg_chameleon izveido noklusējuma shēmu (sch_chameleon) un replikācijas shēmu (pgworld_x) PostgreSQL datu bāzē, kā mēs jau apspriedām. Arguments add_source konfigurācijai pievieno avota datu bāzi, nolasot konfigurācijas failu (default.yml), un mūsu gadījumā tas ir mysql, un init_replica inicializē konfigurāciju, pamatojoties uz konfigurācijas faila parametriem.

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

Šo trīs komandu izvade skaidri norāda, ka tās tika veiksmīgi izpildītas. Par visām avārijām vai sintakses kļūdām tiek ziņots vienkāršos, skaidros ziņojumos ar padomiem, kā novērst problēmu.

Visbeidzot, mēs sākam replikāciju, izmantojot start_replica, un saņemam veiksmes ziņojumu.

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

Replikācijas statusu var jautāt, izmantojot argumentu show_status, un kļūdas var skatīt, izmantojot argumentu show_errors.

Rezultāts.

Kā jau teicām, katru replikācijas funkciju kontrolē dēmoni. Lai tos skatītu, mēs vaicājam procesu tabulu ar Linux ps komandu, kā parādīts zemāk.

Rezultāts.

Replikācija netiek uzskatīta par konfigurētu, kamēr mēs to nepārbaudām reāllaikā, kā parādīts tālāk. Mēs izveidojam tabulu, ievietojam pāris ierakstus MySQL datu bāzē un izsaucam sync_tables argumentu pg_chameleon, lai atjauninātu dēmonus un replicētu tabulu ar ierakstiem PostgreSQL datu bāzē.

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.

Lai apstiprinātu testa rezultātus, mēs vaicājam tabulu no PostgreSQL datu bāzes un izvadām rindas.

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

Ja mēs veicam migrāciju, šādas komandas pg_chameleon beigsies. Komandas ir jāizpilda pēc tam, kad esam pārliecināti, ka visu mērķa tabulu rindas ir replicētas, un rezultāts būs kārtīgi migrēta PostgreSQL datu bāze bez atsaucēm uz avota datu bāzi vai replikācijas shēmu (sch_chameleon).

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

Ja vēlaties, varat izmantot šādas komandas, lai dzēstu sākotnējo konfigurāciju un replikācijas shēmu.

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

pg_chameleon priekšrocības

Vienkārša iestatīšana un konfigurēšana.
Ērti novērsiet problēmas un identificējiet anomālijas ar skaidriem kļūdu ziņojumiem.
Pēc inicializācijas replikācijai var pievienot papildu īpašas tabulas, nemainot pārējo konfigurāciju.
Vienai mērķa datubāzei ir iespējams konfigurēt vairākas avota datu bāzes, un tas ir ļoti noderīgi, ja datus no vienas vai vairākām MySQL datu bāzēm apvienojat vienā PostgreSQL datu bāzē.
Atlasītās tabulas nav jāreplicē.

pg_chameleon trūkumi

Atbalstīta tikai ar MySQL 5.5 un jaunāku versiju kā avotu un PostgreSQL 9.5 un jaunāku versiju kā mērķa datu bāzi.
Katrai tabulai ir jābūt primārajai vai unikālajai atslēgai, pretējā gadījumā tabulas tiek inicializētas procesa init_replica laikā, bet netiek replicētas.
Vienvirziena replikācija — tikai no MySQL uz PostgreSQL. Tāpēc tas ir piemērots tikai “aktīvā-pasīvā” ķēdei.
Avots var būt tikai MySQL datu bāze, un PostgreSQL datu bāzes kā avota atbalsts ir tikai eksperimentāls un ar ierobežojumiem (uzziniet vairāk šeit)

Rezultāti vaicājumam pg_chameleon

Replikācijas metode pg_chameleon ir lieliska datu bāzes migrēšanai no MySQL uz PostgreSQL. Būtisks mīnuss ir tas, ka replikācija ir tikai vienvirziena, tāpēc datu bāzes speciālisti, visticamāk, nevēlēsies to izmantot citam nolūkam, izņemot migrāciju. Bet vienvirziena replikācijas problēmu var atrisināt ar citu atvērtā koda rīku - SymmetricDS.

Vairāk lasiet oficiālajā dokumentācijā šeit. Komandrindas palīdzību var atrast šeit.

SymmetricDS pārskats

SymmetricDS ir atvērtā pirmkoda rīks, kas replicē jebkuru datu bāzi ar jebkuru citu izplatītu datu bāzi: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird un citas mākoņdatu bāzes instances, piemēram, Redshift un Azure uc Pieejamās iespējas: datu bāzes un failu sinhronizācija, vairāku galveno datu bāzes replikācija, filtrētā sinhronizācija, transformācija un citi. Šis ir Java rīks, un tam ir nepieciešams standarta JRE vai JDK laidiens (8.0 vai jaunāka versija). Šeit datu izmaiņas avota datubāzē esošajos trigeros var reģistrēt un nosūtīt uz atbilstošo mērķa datu bāzi pakešu veidā.

SymmetricDS funkcijas

Šis rīks ir neatkarīgs no platformas, kas nozīmē, ka divas vai vairākas dažādas datu bāzes var apmainīties ar datiem.
Relāciju datu bāzes tiek sinhronizētas, izmantojot datu izmaiņu ierakstus, savukārt uz failu sistēmu balstītas datu bāzes izmanto failu sinhronizāciju.
Divvirzienu replikācija, izmantojot Push un Pull metodes, kuru pamatā ir noteikumu kopums.
Datu pārsūtīšana ir iespējama, izmantojot drošus un zema joslas platuma tīklus.
Automātiska atkopšana, kad mezgli atsāk darbību pēc kļūmes un automātiska konfliktu atrisināšana.
Ar mākoņiem saderīgas un jaudīgas paplašinājuma API.

Piemērs

SymmetricDS var konfigurēt vienā no diviem veidiem:
Galvenais (vecāks) mezgls, kas centralizēti koordinē datu replikāciju starp diviem pakārtotajiem (bērnu) mezgliem, un saziņa starp pakārtotajiem mezgliem notiek tikai caur vecāku mezgliem.
Aktīvais mezgls (Node 1) var sazināties replikācijai ar citu aktīvo mezglu (Node 2) bez starpnieka.

Abās opcijās datu apmaiņa notiek, izmantojot Push and Pull. Šajā piemērā mēs aplūkosim aktīvo-aktīvo konfigurāciju. Lai aprakstītu visu arhitektūru, būtu nepieciešams pārāk ilgs laiks, tāpēc veiciet izpēti. vadībalai uzzinātu vairāk par SymmetricDS ierīci.

SymmetricDS instalēšana ir ļoti vienkārša: lejupielādējiet zip faila atvērtā pirmkoda versiju tātad un izvelciet to, kur vien vēlaties. Tālāk esošajā tabulā ir sniegta informācija par SymmetricDS instalēšanas vietu un versiju šajā piemērā, kā arī abu mezglu datu bāzes versijām, Linux versijām, IP adresēm un portiem.

Saimnieks
vm1
vm2

OS versija
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

DB servera versija
MySQL 5.7.26
PostgreSQL 10.5

DB ports
3306
5832

IP adrese
192.168.1.107
192.168.1.112

SymmetricDS versija
SymmetricDS 3.9
SymmetricDS 3.9

SymmetricDS instalācijas ceļš
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

SymmetricDS mezgla nosaukums
corp-000
veikals-001

Šeit mēs instalējam SymmetricDS mapē /usr/local/symmetric-server-3.9.20, un tur tiks glabāti dažādi apakšdirektoriji un faili. Mūs interesē paraugi un dzinēju apakšdirektoriji. Paraugu direktorijā ir ietverti konfigurācijas failu piemēri ar mezgla rekvizītiem, kā arī SQL skriptu piemēri, lai ātri sāktu darbu.

Paraugu direktorijā mēs redzam trīs konfigurācijas failus ar mezgla īpašībām - nosaukums parāda mezgla būtību noteiktā shēmā.

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

SymmetricDS ir visi nepieciešamie konfigurācijas faili pamata 3 mezglu dizainam (1. opcija), un tos pašus failus var izmantot 2 mezglu dizainam (2. iespēja). Kopējiet nepieciešamo konfigurācijas failu no paraugu direktorija uz dzinējiem vm1 resursdatorā. Tas izrādās šādi:

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

Šis SymmetricDS konfigurācijas mezgls tiek saukts par corp-000, un datu bāzes savienojumu apstrādā mysql jdbc draiveris, kas izmanto iepriekš minēto savienojuma virkni un pieteikšanās akreditācijas datus. Mēs izveidojam savienojumu ar datubāzi replica_db, un shēmas izveides laikā tiks izveidotas tabulas. sync.url parāda savienojuma vietu ar sinhronizācijas mezglu.

2. mezgls resursdatorā vm2 ir konfigurēts kā veikals-001, un pārējais ir norādīts tālāk esošajā failā node.properties. Node store-001 palaiž PostgreSQL datu bāzi, un pgdb_replica ir replikācijas datu bāze. Register.url ļauj saimniekdatoram vm2 sazināties ar resursdatoru vm1 un saņemt no tā konfigurācijas informāciju.

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

Pabeigtais SymmetricDS piemērs satur parametrus divvirzienu replikācijas iestatīšanai starp diviem datu bāzes serveriem (diviem mezgliem). Tālāk norādītās darbības tiek veiktas resursdatorā vm1 (corp-000), kas izveidos shēmas piemēru ar 4 tabulām. Pēc tam palaižot create-sym-tables ar komandu symadmin, tiek izveidotas direktoriju tabulas, kurās tiks saglabāti noteikumi un replikācijas virziens starp mezgliem. Visbeidzot tabulās tiek ielādēti datu paraugi.

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

Piemērā tabulas prece un item_selling_price ir automātiski konfigurētas, lai replicētu no corp-000 uz veikalu-001, un pārdošanas tabulas (sale_transaction un sale_return_line_item) ir automātiski konfigurētas, lai replicētu no veikala-001 uz corp-000. Tagad mēs izveidojam shēmu PostgreSQL datu bāzē resursdatorā vm2 (store-001), lai sagatavotu to datu saņemšanai no corp-000.

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

Noteikti pārbaudiet, vai MySQL datu bāzē vm1 ir tabulas un SymmetricDS katalogu tabulas. Ņemiet vērā, ka SymmetricDS sistēmas tabulas (ar prefiksu sym_) pašlaik ir pieejamas tikai mezglā corp-000, jo tur mēs izpildām komandu create-sym-tables un pārvaldīsim replikāciju. Un datu bāzē node store-001 būs tikai 4 piemēru tabulas bez datiem.

Visi. Vide ir gatava palaist sim servera procesus abos mezglos, kā parādīts tālāk.

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

Žurnāla ieraksti tiek nosūtīti uz fona žurnālfailu (symmetric.log) žurnālu mapē direktorijā, kurā ir instalēta SymmetricDS, kā arī uz standarta izvadi. Sym serveri tagad var iniciēt node store-001.

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

Ja palaižat sym servera procesu vm2 resursdatorā, tas arī izveidos SymmetricDS kataloga tabulas PostgreSQL datu bāzē. Ja palaižat sim servera procesu abos mezglos, tie savstarpēji koordinējas, lai replicētu datus no corp-000 uz store-001. Ja pēc dažām sekundēm vaicāsim visas 4 tabulas abās pusēs, mēs redzēsim, ka replikācija bija veiksmīga. Vai arī varat nosūtīt bootstrap uz node store-001 no corp-000, izmantojot šādu komandu.

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

Šajā brīdī MySQL datu bāzes vienumu tabulā uz mezgla corp-000 (resursdators: vm1) tiek ievietots jauns ieraksts, un jūs varat pārbaudīt tā replikāciju PostgreSQL datu bāzē node store-001 (resursdators: vm2). Mēs redzam Pull darbību, lai pārvietotu datus no corp-000 uz veikalu-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)

Lai veiktu Push darbību, lai pārvietotu datus no veikala-001 uz corp-000, mēs ievietojam ierakstu tabulā sale_transaction un pārbaudām, vai replikācija ir veiksmīga.

Rezultāts.

Mēs redzam veiksmīgu piemēru tabulu divvirzienu replikācijas iestatīšanu starp MySQL un PostgreSQL datu bāzēm. Lai iestatītu replikāciju jaunām lietotāju tabulām, veiciet šīs darbības: Mēs izveidojam, piemēram, tabulu t1 un konfigurējam tās replikācijas noteikumus šādi. Tādā veidā mēs konfigurējam tikai replikāciju no corp-000 uz store-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)

Pēc tam konfigurācija tiek informēta par shēmas izmaiņām, tas ir, jaunas tabulas pievienošanu, izmantojot komandu symadmin ar argumentu sync-triggers, kas atkārtoti izveido trigerus, lai kartētu tabulas definīcijas. Send-schema tiek izpildīta, lai nosūtītu shēmas izmaiņas uz mezglu veikals-001, un tiek konfigurēta tabulas t1 replikācija.

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

SymmetricDS priekšrocības

Vienkārša uzstādīšana un konfigurēšana, ieskaitot gatavu failu komplektu ar parametriem trīs mezglu vai divu mezglu shēmas izveidošanai.
Vairāku platformu datu bāzes un platformu neatkarība, tostarp serveri, klēpjdatori un mobilās ierīces.
Replicējiet jebkuru datu bāzi ar jebkuru citu datu bāzi lokāli, WAN tīklā vai mākonī.
Iespēja optimāli strādāt ar pāris datu bāzēm vai vairākiem tūkstošiem ērtai replikācijai.
Maksas versija ar GUI un lielisku atbalstu.

SymmetricDS trūkumi

Lai ielādētu kataloga tabulas, komandrindā ir manuāli jādefinē noteikumi un replikācijas virziens, izmantojot SQL paziņojumus, kas var būt neērti.
Daudzu tabulu iestatīšana replikācijai var būt nogurdinoša, ja vien neizmantojat skriptus, lai izveidotu SQL paziņojumus, kas nosaka replikācijas noteikumus un virzienu.
Žurnālos tiek ierakstīts pārāk daudz informācijas, un dažreiz žurnāla fails ir jāsakārto, lai tas neaizņemtu pārāk daudz vietas.

Rezultāti vaicājumam SymmetricDS

SymmetricDS ļauj iestatīt divvirzienu replikāciju starp diviem, trim vai pat vairākiem tūkstošiem mezglu, lai replicētu un sinhronizētu failus. Šis ir unikāls rīks, kas neatkarīgi veic daudzus uzdevumus, piemēram, automātisku datu atkopšanu pēc ilgstošas ​​dīkstāves mezglā, drošu un efektīvu datu apmaiņu starp mezgliem, izmantojot HTTPS, automātisku konfliktu pārvaldību, pamatojoties uz noteikumu kopumu utt. SymmetricDS veic replikācija starp jebkurām datu bāzēm, tāpēc to var izmantot dažādiem scenārijiem, tostarp datu migrācijai, migrācijai, izplatīšanai, filtrēšanai un pārveidošanai dažādās platformās.

Piemēra pamatā ir amatpersona ātrs ceļvedis ar SymmetricDS. IN lietotāja rokasgrāmata Detalizēti apraksta dažādas koncepcijas, kas saistītas ar replikācijas iestatīšanu ar SymmetricDS.

Avots: www.habr.com

Pievieno komentāru