
Ech skizzéieren KrÀizreplikatioun tëscht PostgreSQL a MySQL, souwéi Methoden fir KrÀizreplikatioun tëscht den zwee Datebankserveren opzestellen. Typesch ginn cross-replizéiert Datenbanken homogen genannt, an et ass eng praktesch Method fir vun engem RDBMS Server op en aneren ze plënneren.
PostgreSQL a MySQL Datenbanken ginn allgemeng als relational ugesinn, awer mat zousÀtzlech Extensiounen bidden se NoSQL FÀegkeeten. Hei diskutéiere mir Replikatioun tëscht PostgreSQL a MySQL aus enger relationeller DBMS Perspektiv.
Mir beschreiwen net déi ganz bannenzeg Aarbecht, just d'Basisprinzipien, sou datt Dir eng Iddi kritt fir d'Replikatioun tëscht Datebankserveren, Virdeeler, AschrÀnkungen a BenotzungsfÀll ze konfiguréieren.
Typesch gëtt Replikatioun tëscht zwee identesche Datebankserver entweder am binÀre Modus gemaach oder mat Ufroen tëscht engem Master (alias Verlag, Master oder aktiv) an engem Sklave (Abonnent, Standby oder passiv). Den Zweck vun der Replikatioun ass eng EchtzÀit Kopie vun der Master Datebank op der Sklave SÀit ze bidden. An dësem Fall ginn d'Donnéeë vu Meeschter op Sklave transferéiert, dat heescht vun aktiv op passiv, well d'Replikatioun nëmmen an enger Richtung gemaach gëtt. Awer Dir kënnt Replikatioun tëscht zwou Datenbanken a béid Richtungen astellen, sou datt Daten vum Sklave op de Master an enger aktiv-aktiver Konfiguratioun transferéiert ginn. All dëst, dorënner KaskadespÀr Replikatioun, ass méiglech tëscht zwee oder méi identesch Datebank Serveren.Aktiv-aktiv oder aktiv-passiv Konfiguratioun hÀnkt op Besoin, Disponibilitéit vun esou FÀegkeeten an der initialer Konfiguratioun oder Notzung vun externen Konfiguratioun Léisungen an bestehend Ofsaz.
Déi beschriwwe Konfiguratioun ass méiglech tëscht verschiddene Datebankserveren. De Server kann konfiguréiert ginn fir replizéiert Daten vun engem aneren Datebankserver z'akzeptéieren an ëmmer nach EchtzÀit Snapshots vun de replizéierten Donnéeën z'erhalen. MySQL a PostgreSQL bidden déi meescht vun dëse Konfiguratiounen intern oder duerch Drëtt-Partei-Extensiounen, dorënner binÀre Logmethoden, Disk Locking, a Statement- a Rei-baséiert Methoden.
KrÀizreplikatioun tëscht MySQL a PostgreSQL ass néideg fir eng eemoleg Migratioun vun engem Datebankserver an en aneren. Dës Datenbanken benotzen verschidde Protokoller, sou datt et net méiglech ass se direkt ze verbannen. Fir Datenaustausch z'etabléieren, kënnt Dir en externen Open Source Tool benotzen, zum Beispill pg_chameleon.
Wat ass pg_chameleon
pg_chameleon ass e Replikatiounssystem vu MySQL op PostgreSQL am Python 3. Et benotzt d'Open Source mysql-Replikatiounsbibliothéik, och am Python. Zeile Biller ginn aus MySQL Dëscher extrahéiert an als JSONB Objekter an der PostgreSQL Datebank gespÀichert, an dann vun der pl/pgsql Funktioun entschlësselt an an der PostgreSQL Datebank reproduzéiert.
Fonctiounen vun pg_chameleon
Multiple MySQL Schemaen aus dem selwechte Cluster kënnen op eng eenzeg Zil PostgreSQL Datebank replizéiert ginn an enger een-zu-vill Konfiguratioun
D'Quell- an Zilschemaname kënnen net d'selwecht sinn.
Replikatiounsdaten kënnen aus enger kaskadéierter MySQL Replica zréckgewonne ginn.
Dëscher déi net replizéiere kënnen oder Feeler produzéieren sinn ausgeschloss.
All Replikatiounsfunktioun gëtt vun Daemone kontrolléiert.
Kontroll iwwer YAML-baséiert Parameteren a Konfiguratiounsdateien.
Beispill:
Host
vm1
vm2
OS Versioun
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64
DB Server Versioun
MySQL 5.7.26
10.5. PostgreSQL XNUMX
DB port
3306
5433
IP Adress
192.168.56.102
192.168.56.106
Fir unzefĂ€nken, preparĂ©iert all dĂ©i nĂ©ideg Komponenten fir pg_chameleon z'installĂ©ieren. DĂ«st Beispill installĂ©iert Python 3.6.8, deen d'virtuell Ămfeld erstellt an aktivĂ©iert.
$> 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 altinstallNodeems Dir Python3.6 erfollegrĂ€ich installĂ©iert hutt, musst Dir dĂ©i verbleiwen Ufuerderunge fĂ€erdeg maachen, wĂ©i zum Beispill e virtuellt Ămfeld erstellen an aktivĂ©ieren. ZousĂ€tzlech gĂ«tt de Pip Modul op dĂ©i lescht Versioun aktualisĂ©iert a benotzt fir pg_chameleon z'installĂ©ieren. D'Befehle hei drĂ«nner installĂ©iere bewosst pg_chameleon 2.0.9, obwuel dĂ©i lescht Versioun 2.0.10 ass. DĂ«st ass nĂ©ideg fir nei Bugs an der aktualisĂ©ierter Versioun ze vermeiden.
$> python3.6 -m venv venv
$> source venv/bin/activate
(venv) $> pip install pip --upgrade
(venv) $> pip install pg_chameleon==2.0.9Mir ruffen dann pg_chameleon (ChamÀleon ass e Kommando) mam Argument set_configuration_files fir pg_chameleon z'aktivéieren an Standardverzeechnes a Konfiguratiounsdateien ze kreéieren.
(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.ymlElo kreéiere mir eng Kopie vu config-example.yml als default.yml sou datt et d'Standardkonfiguratiounsdatei gëtt. Eng Prouf Konfiguratiounsdatei fir dëst Beispill gëtt hei ënnendrënner.
$> 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:D'Konfiguratiounsdatei an dĂ«sem Beispill ass eng Probe pg_chameleon Datei mat klengen Ănnerungen fir d'Quell an d'ZilĂ«mfeld ze passen, an hei drĂ«nner ass en IwwerblĂ©ck iwwer dĂ©i verschidde Sektiounen vun der Konfiguratiounsdatei.
An der default.yml Konfiguratiounsdatei gëtt et eng Sektioun vu globalen Astellungen, wou Dir Astellunge wéi d'Plaz vun der SpÀrdatei verwalten, de Standort vun de Logbicher, d'SpÀicherzÀit fir d'Logbicher, asw. eng Rei vu Reegele fir d'Typen wÀhrend der Replikatioun ze iwwerschreiden. D'Beispill ass Standard op eng Typ iwwerschreidend Regel déi tinyint (1) an e boolesche WÀert konvertéiert. An der nÀchster Sektioun spezifizéiere mir d'Verbindungsdetailer op d'Zildatenbank. An eisem Fall ass dëst eng PostgreSQL Datebank, bezeechent pg_conn. An der leschter Sektioun weisen mir d'Quelldaten un, dat heescht d'Verbindungsparameter vun der Quelldatenbank, d'Mappingschema tëscht der Quell- an Zildatenbanken, Dëscher déi iwwersprangen musse ginn, WaardezÀit, Erënnerung, Packagegréisst. Bedenkt datt "Quellen" Plural ass, dat heescht datt mir verschidde Quelldatenbanken an eng eenzeg Zildatenbank kënne addéieren fir eng vill-zu-een Konfiguratioun opzestellen.
D'Beispill Datebank world_x enthÀlt 4 Dëscher mat Reihen déi d'MySQL Gemeinschaft als Beispiller bitt. Et kann erofgeluede ginn . D'Probe-Datebank kënnt als Tar a kompriméiert Archiv mat Instruktioune fir Zeilen ze kreéieren an z'importéieren.
An MySQL a PostgreSQL Datenbanken gëtt e spezielle Benotzer mam selwechten Numm usr_replica erstallt. Am MySQL gëtt et zousÀtzlech Liesrechter op all replizéiert Dëscher.
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;Op der PostgreSQL SĂ€it gĂ«tt eng db_replica Datebank erstallt dĂ©i Ănnerungen vun der MySQL Datebank akzeptĂ©iert. De Benotzer usr_replica an PostgreSQL gĂ«tt automatesch als BesĂ«tzer vun zwee Schemaen konfigurĂ©iert, pgworld_x a sch_chameleon, dĂ©i dĂ©i aktuell replizĂ©iert Tabellen respektiv d'Replikatiounsverzeechnestabellen enthalen. D'Argument create_replica_schema ass verantwortlech fir automatesch Konfiguratioun, wĂ©i Dir hei Ă«nnen gesitt.
postgres=# CREATE USER usr_replica WITH PASSWORD 'pass123';
CREATE ROLE
postgres=# CREATE DATABASE db_replica WITH OWNER usr_replica;
CREATE DATABASED'MySQL Datebank ass mat e puer Parameter Ănnerungen konfigurĂ©iert fir se op Replikatioun virzebereeden wĂ©i hei Ă«nnendrĂ«nner. Dir musst den Datebankserver nei starten fir datt d'Ănnerungen a Kraaft trieden.
$> vi /etc/my.cnf
binlog_format= ROW
binlog_row_image=FULL
log-bin = mysql-bin
server-id = 1Elo ass et wichteg d'Verbindung mat béiden Datebankserver ze kontrolléieren sou datt et keng Probleemer gëtt wann Dir d'pg_chameleon Kommandoen ausféiert.
Am PostgreSQL Node:
$> mysql -u usr_replica -Ap'admin123' -h 192.168.56.102 -D world_xAm MySQL Node:
$> psql -p 5433 -U usr_replica -h 192.168.56.106 db_replicaDĂ©i nĂ€chst drĂ€i pg_chameleon (ChamĂ€leon) Kommandoen preparĂ©ieren d'Ămwelt, fĂŒgen d'Quell un an initialisĂ©ieren d'Replika. D'Argument create_replica_schema zu pg_chameleon erstellt e Standardschema (sch_chameleon) an e Replikatiounsschema (pgworld_x) an der PostgreSQL Datebank, wĂ©i mir scho diskutĂ©iert hunn. D'add_source Argument fĂŒĂŒgt eng Quelldatebank un d'Konfiguratioun un andeems d'Konfiguratiounsdatei (default.yml) gelies gĂ«tt, an an eisem Fall ass et mysql, an init_replica initialisĂ©iert d'Konfiguratioun basĂ©iert op de Parameteren an der Konfiguratiounsdatei.
$> chameleon create_replica_schema --debug
$> chameleon add_source --config default --source mysql --debug
$> chameleon init_replica --config default --source mysql --debugD'Ausgab vun dësen drÀi Kommandoen weist kloer datt se erfollegrÀich ausgefouert goufen. All Crashen oder Syntaxfehler ginn an einfachen, klore Messagen gemellt mat Hiweiser wéi een de Problem fixéiert.
Endlech fÀnken mir d'Replikatioun mat start_replica un a kréien e SuccÚs Message.
$> chameleon start_replica --config default --source mysql
output: Starting the replica process for source mysqlDe Replikatiounsstatus kann mat dem show_status Argument gefrot ginn, a Feeler kënne gekuckt ginn mat dem show_errors Argument.
Wéi mir scho gesot hunn, gëtt all Replikatiounsfunktioun vun Daemone kontrolléiert. Fir se ze gesinn, froe mir d'Prozesstabelle mam Linux ps Kommando, wéi hei ënnendrënner.
Replikatioun gëtt net als konfiguréiert ugesinn bis mir et an EchtzÀit testen, wéi hei ënnendrënner. Mir kreéieren en Dësch, setzen e puer records an d'MySQL Datebank, a ruffen d'sync_tables Argument am pg_chameleon fir d'DÀmonen ze aktualiséieren an d'Tabell mat den Opzeechnungen an d'PostgreSQL Datebank ze replizéieren.
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.Fir d'Testresultater ze bestÀtegen, froe mir d'Tabell aus der PostgreSQL-Datebank an erausginn d'Reihen.
$> psql -p 5433 -U usr_replica -d db_replica -c "select * from pgworld_x.t1";
n1 | n2
----+-------
1 | one
2 | twoWa mir eng Migratioun maachen, sinn déi folgend pg_chameleon Kommandoen d'Enn dovun. D'Befehle mussen ausgefouert ginn nodeems mir sécher sinn datt d'Reihen vun all Ziltabellen replizéiert goufen, an d'Resultat wÀert eng ordentlech migréiert PostgreSQL Datebank sinn ouni Referenzen op d'Quelldatenbank oder Replikatiounsschema (sch_chameleon).
$> chameleon stop_replica --config default --source mysql
$> chameleon detach_replica --config default --source mysql --debugWann Dir wëllt, kënnt Dir déi folgend Kommandoen benotzen fir d'Original Konfiguratioun a Replikatiounsschema ze lÀschen.
$> chameleon drop_source --config default --source mysql --debug
$> chameleon drop_replica_schema --config default --source mysql --debugVirdeeler vun pg_chameleon
Einfach Setup a Konfiguratioun.
Einfach Troubleshooting an Anomalien identifizéieren mat klore Feelermeldungen.
ZousĂ€tzlech speziell DĂ«scher kĂ«nnen op d'Replikatioun no der InitialisĂ©ierung bĂ€igefĂŒĂŒgt ginn ouni de Rescht vun der Konfiguratioun z'Ă€nneren.
Et ass méiglech verschidde Quelldatebanken fir eng eenzeg Zil-Datebank ze konfiguréieren, an dëst ass ganz nëtzlech wann Dir Daten aus enger oder méi MySQL-Datenbanken an eng eenzeg PostgreSQL-Datebank kombinéiert.
Dir musst déi gewielten Dëscher net replizéieren.
Nodeeler vun pg_chameleon
Nëmme ënnerstëtzt mat MySQL 5.5 a méi héich als Quell an PostgreSQL 9.5 a méi héich als Zildatabase.
All Dësch muss e primÀren oder eenzegaartege Schlëssel hunn, soss ginn d'Tabelle wÀhrend dem init_replica Prozess initialiséiert awer net replizéiert.
One-Way Replikatioun - nëmme vu MySQL op PostgreSQL. Dofir ass et nëmme fir den "aktiv-passive" Circuit gëeegent.
D'Quell kann nĂ«mmen eng MySQL Datebank sinn, an ĂnnerstĂ«tzung fir eng PostgreSQL Datebank als Quell ass nĂ«mmen experimentell a mat AschrĂ€nkungen (lĂ©iert mĂ©i )
Resultater fir pg_chameleon
D'Replikatiounsmethod am pg_chameleon ass super fir eng Datebank vu MySQL op PostgreSQL ze migréieren. De bedeitende Nodeel ass datt d'Replikatioun nëmmen ee-Wee ass, sou datt d'Datebankfachleit et onwahrscheinlech fir eppes anescht wéi Migratioun benotze wëllen. Awer de Problem vun der One-Way Replikatioun kann mat engem aneren Open Source Tool geléist ginn - SymmetricDS.
Liest méi an der offizieller Dokumentatioun . Kommando Linn Hëllef kann fonnt ginn .
Iwwersiicht vun SymmetricDS
SymmetricDS ass en Open Source Tool dat all Datebank op all aner gemeinsam Datebank replizĂ©iert: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird an aner Cloud Datebank Instanzen, zB Redshift, an Azure, etc.. VerfĂŒgbar Fonctiounen: Datebank an Datei SynchronisĂ©ierung, Multi-Master Datebank Replikatioun, Filter SynchronisĂ©ierung, Transformatioun an anerer. DĂ«st ass e Java-Tool a erfuerdert eng StandardverĂ«ffentlechung vum JRE oder JDK (Versioun 8.0 oder mĂ©i hĂ©ich). Hei kĂ«nnen d'DatenĂ€nnerungen un AuslĂ©iser an der Quelldatenbank opgeholl ginn an an dĂ©i entspriechend Zil-Datebank a Form vu Chargen geschĂ©ckt ginn.
SymmetricDS Fonctiounen
D'Tool ass plattformonofhÀngeg, dat heescht datt zwou oder méi verschidden Datenbanken Daten austauschen kënnen.
Relational Datenbanken ginn synchroniséiert mat DatenÀnnerungsrecords, wÀhrend Dateisystem-baséiert Datenbanken Dateisynchroniséierung benotzen.
Zwee-Wee Replikatioun mat Push a Pull Methoden baséiert op enger Rei vu Reegelen.
DatenĂŒbertragung ass mĂ©iglech iwwer sĂ©cher an niddereg Bandbreed Netzwierker.
Automatesch Erhuelung wann Noden Operatioun no engem Feeler an automatesch Konfliktléisung erëmfannen.
Cloud kompatibel a mÀchteg Extensioun APIen.
Beispill:
SymmetricDS kann an enger vun zwou Optiounen konfiguréiert ginn:
E Meeschter (Elteren) Node deen daten Replikatioun tëscht zwee Sklave (Kand) Noden zentral koordinéiert, a Kommunikatioun tëscht KannerknÀppchen geschitt nëmmen duerch den Elterendeel.
En aktiven Node (Node 1) ka fir Replikatioun mat engem aneren aktive Node (Node 2) ouni Tëschestatioun kommunizéieren.
A bĂ©id Optiounen geschitt Datenaustausch mat Push a Pull. An dĂ«sem Beispill wĂ€erte mir eng aktiv-aktiv Konfiguratioun betruechten. Et gĂ©if ze laang daueren fir dĂ©i ganz Architektur ze beschreiwen, also maacht Ăr Fuerschung. fir mĂ©i iwwer de SymmetricDS Apparat ze lĂ©ieren.
SymmetricDS installéieren ass ganz einfach: Luet d'Open Source Versioun vun der Zip Datei erof an huelt et eraus wou Dir wëllt. D'Tabell hei ënnen liwwert Informatiounen iwwer d'Installatiounsplaz an d'Versioun vum SymmetricDS an dësem Beispill, souwéi d'Datebankversioune, Linux Versiounen, IP Adressen a Ports fir béid Noden.
Host
vm1
vm2
OS Versioun
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64
DB Server Versioun
MySQL 5.7.26
10.5. PostgreSQL XNUMX
DB port
3306
5832
IP Adress
192.168.1.107
192.168.1.112
SymmetricDS Versioun
SymmetricDS 3.9
SymmetricDS 3.9
SymmetricDS Installatioun Wee
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20
SymmetricDS Node Numm
Corp-000
Buttek-001
Hei installĂ©iere mir SymmetricDS an /usr/local/symmetric-server-3.9.20, a verschidde Ănnerverzeechnungen an Dateie ginn do gespĂ€ichert. Mir sinn interessĂ©iert an de Proben a Motoren Ănnerverzeechnungen. D'Probe Verzeechnes enthĂ€lt Beispill Konfiguratiounsdateien mat Node Eegeschaften, souwĂ©i Beispill SQL Scripte fir Iech sĂ©ier unzefĂ€nken.
Am Probenverzeichnis gesi mir drÀi Konfiguratiounsdateien mat Node Properties - den Numm weist d'Natur vum Node an engem bestëmmte Schema.
corp-000.properties
store-001.properties
store-002.propertiesSymmetricDS huet all néideg Configuratioun Fichieren fir eng Basis 3-Node Design (Optioun 1), an déi selwecht Fichieren kann fir eng 2-Node Design benotzt ginn (Optioun 2). Kopéiert déi erfuerderlech Konfiguratiounsdatei aus dem Probenverzeichnis op Motoren um vm1 Host. Et stellt sech esou eraus:
$> 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=000Dëse Node an der SymmetricDS Konfiguratioun gëtt corp-000 genannt, an d'Datebankverbindung gëtt vum mysql jdbc Chauffer gehandhabt, deen d'Verbindungsstring uewen an d'Login-Umeldungsinformatioun benotzt. Mir verbannen mat der replica_db Datebank an Dëscher ginn wÀhrend Schema Kreatioun erstallt. sync.url weist wou de Node fir Synchroniséierung ze kontaktéieren.
Node 2 op Host vm2 ass als store-001 konfiguréiert an de Rescht gëtt an der node.properties Datei hei ënnen spezifizéiert. Node store-001 leeft d'PostgreSQL Datebank an pgdb_replica ass d'Replikatiounsdatebank. registration.url erlaabt den Host vm2 de Host vm1 ze kontaktéieren an d'Konfiguratiounsdetailer dovunner ze kréien.
$> 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=001De fÀerdege SymmetricDS Beispill enthÀlt Parameteren fir zwee-Wee Replikatioun tëscht zwee Datebankserver (zwee Noden) opzestellen. D'Schrëtt hei drënner ginn um Host vm1 (corp-000) ausgefouert, wat e Beispillschema mat 4 Dëscher erstellt. Dann laafen create-sym-Tables mam Symadmin Kommando erstellt Verzeechnestabellen wou d'Regelen an d'Richtung vun der Replikatioun tëscht Noden gespÀichert ginn. Schlussendlech ginn Probedaten an d'Tabellen gelueden.
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.sqlAm Beispill sinn d'Element an item_selling_price Dëscher automatesch konfiguréiert fir vu corp-000 op store-001 ze replizéieren, an d'Verkafstabellen (sale_transaction an sale_return_line_item) sinn automatesch konfiguréiert fir vun store-001 op corp-000 ze replizéieren. Elo kreéiere mir e Schema an der PostgreSQL Datebank op Host vm2 (store-001) fir et virzebereeden fir Daten vum corp-000 ze kréien.
vm2$> cd /usr/local/symmetric-server-3.9.20/bin
vm2$> ./dbimport --engine store-001 --format XML create_sample.xmlVergewĂ«ssert Iech datt d'MySQL Datebank op vm1 Beispilltabellen a SymmetricDS Katalogtabellen huet. Bedenkt datt d'SymmetricDS System DĂ«scher (virgeschriwwe mat sym_) am Moment nĂ«mmen op Node corp-000 verfĂŒgbar sinn well dat ass wou mir de create-sym-tables Kommando lafen a Replikatioune verwalten. An an der Datebank op Node Store-001 ginn et nĂ«mmen 4 Beispill DĂ«scher ouni Daten.
All. D'Ămfeld ass prett fir Sym Server Prozesser op bĂ©ide Wirbelen ze lafen wĂ©i hei Ă«nnendrĂ«nner.
vm1$> cd /usr/local/symmetric-server-3.9.20/bin
vm1$> sym 2>&1 &Log Entréen ginn op eng Background Log Datei geschéckt (symmetric.log) am Logbuch Dossier am Verzeechnes wou SymmetricDS installéiert ass, souwéi Standard Output. De Sym Server kann elo am Node Store-001 initiéiert ginn.
vm2$> cd /usr/local/symmetric-server-3.9.20/bin
vm2$> sym 2>&1 &Wann Dir de Sym-Serverprozess um vm2-Host leeft, erstellt et och SymmetricDS Katalogtabellen an der PostgreSQL Datebank. Wann Dir de Sym Server Prozess op béide Wirbelen leeft, koordinéieren se matenee fir Daten vu Corp-000 op Store-001 ze replizéieren. Wa mir no e puer Sekonnen all 4 Dëscher op béide SÀiten ufroen, wÀerte mir gesinn datt d'Replikatioun erfollegrÀich war. Oder Dir kënnt de Bootstrap an den Node Store-001 vum corp-000 mat dem folgenden Kommando schécken.
vm1$> ./symadmin --engine corp-000 reload-node 001Zu dësem ZÀitpunkt gëtt en neie Rekord an d'Elementtabell an der MySQL Datebank op Node corp-000 (Host: vm1) agebaut, an Dir kënnt seng Replikatioun op d'PostgreSQL Datebank op Node Store-001 (Host: vm2) iwwerpréiwen. Mir gesinn eng Pull Operatioun fir Daten vu Corp-000 op Store-001 ze réckelen.
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)Fir eng Push-Operatioun auszeféieren fir Daten vum Store-001 op Corp-000 ze verschécken, setzen mir e Rekord an de Sale_Transaction Tabelle a verifizéieren datt d'Replikatioun erfollegrÀich ass.
Mir gesinn den erfollegrÀiche Setup vun zwee-Wee Replikatioun vun de Beispilltabellen tëscht MySQL a PostgreSQL Datenbanken. Fir Replikatioun fir nei Benotzertabellen opzestellen, befollegt dës Schrëtt: Mir erstellen den Dësch t1 zum Beispill a konfiguréieren seng Replikatiounsregele wéi follegt. Op dës Manéier konfiguréiere mir nëmmen Replikatioun vu corp-000 op 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)D'Konfiguratioun gĂ«tt dann iwwer d'SchemaĂ€nnerung informĂ©iert, dat heescht d'Zousatz vun enger neier Tabell, mat dem Symadmin Kommando mat dem Sync-Triggers Argument, deen d'AuslĂ©iser nei erstellt fir d'Tabelldefinitioune ze mapen. send-Schema gĂ«tt ausgefouert fir Schema Ănnerungen un Node Store-001 ze schĂ©cken, a Replikatioun vun der Tabell t1 ass konfigurĂ©iert.
vm1$> ./symadmin -e corp-000 --node=001 sync-triggers
vm1$> ./symadmin send-schema -e corp-000 --node=001 t1Virdeeler vun SymmetricDS
Einfach Installatioun a Konfiguratioun, dorënner e fÀerdege Set vu Dateien mat Parameteren fir en DrÀi-Node oder Zwee-Node Circuit ze kreéieren.
Cross-Plattform Datenbanken a Plattform OnofhÀngegkeet, dorënner Serveren, Laptops a mobilen Apparater.
Replizéiert all Datebank op all aner Datebank lokal, op der WAN oder an der Wollek.
Méiglechkeet vun enger optimaler Aarbecht mat e puer Datenbanken oder e puer dausend fir bequem Replikatioun.
Bezuelte Versioun mat GUI an excellent ĂnnerstĂ«tzung.
Nodeeler vun SymmetricDS
Dir musst manuell d'Regelen an d'Richtung vun der Replikatioun op der Kommandozeil duerch SQL Aussoen definéieren fir Katalogtabellen ze lueden, wat onbequem ka sinn.
Vill Tabelle fir Replikatioun opzestellen kann langweileg sinn, ausser Dir benotzt Skripte fir SQL Aussoen ze kreéieren déi d'Regelen an d'Richtung vun der Replikatioun definéieren.
Et gëtt ze vill Informatioun an de Logbicher opgeholl, an heiansdo musst Dir d'Logbuchdatei raumen fir datt se net ze vill Plaz ophëlt.
Resultater fir SymmetricDS
SymmetricDS erlaabt Iech zwee-Wee Replikatioun tëscht zwee, drÀi oder souguer e puer dausend Noden opzestellen fir Dateien ze replizéieren an ze synchroniséieren. Dëst ass en eenzegaartegt Tool dat onofhÀngeg vill Aufgaben ausféiert, sou wéi automatesch Datenerhuelung no enger laanger ZÀit vun Ausdauer op engem Node, sécheren an effizienten Datenaustausch tëscht Noden iwwer HTTPS, automatesch Konfliktmanagement baséiert op enger Rei vu Reegelen, etc. SymmetricDS fiert Replikatioun tëscht all Datenbanken, dofir kann et fir eng grouss Varietéit vun Szenarie benotzt ginn, dorënner Migratioun, Migratioun, Verdeelung, Filteren an Transformatioun vun Daten iwwer Plattformen.
D'Beispill baséiert op den offiziellen vum SymmetricDS. IN Beschreift am Detail déi verschidde Konzepter, déi bei der Opstellung vun der Replikatioun mat SymmetricDS involvéiert sinn.
Source: will.com
