Krydsreplikation mellem PostgreSQL og MySQL

Krydsreplikation mellem PostgreSQL og MySQL

Jeg vil i grove træk fortælle om krydsgentagelse mellem PostgreSQL og MySQL, samt metoder til at konfigurere krydsgentagelse mellem disse to databaser. Database i krydsgentagelse kaldes normalt homogene, og det er en praktisk metode til at overføre fra en server af en relationel DBMS til en anden.

Databaserne PostgreSQL og MySQL betragtes som relationelle, men med ekstra udvidelser tilbyder de NoSQL-muligheder. Her vil vi diskutere gentagelse mellem PostgreSQL og MySQL set fra et relationelt DBMS-perspektiv.

Vi vil ikke beskrive hele den indre mekanisme, kun de grundlæggende principper, så du får en idé om konfigurationen af gentagelse mellem databaseservere, fordele, begrænsninger og anvendelsesscenarier.

Normalt udføres gentagelse mellem to identiske databaseservere enten i binær tilstand eller ved hjælp af forespørgsler mellem den førende node (som også er udgiver, hoved eller aktiv) og den underordnede (abonnent, ventende eller passiv). Formålet med gentagelse er at give et realtidskopi af den primære database på underordnede side. Data sendes fra den førende til den underordnede, det vil sige fra aktiv til passiv, fordi gentagelse kun udføres i én retning. Men det er muligt at konfigurere gentagelse mellem to databaser i begge retninger, så data sendes fra underordnede til førende i en 'aktiv-aktiv' konfiguration. Alt dette, herunder kaskadegensekvenser, er muligt mellem to eller flere identiske databaseservere. Konfigurationen 'aktiv-aktiv' eller 'aktiv-passiv' afhænger af behovet, tilgængeligheden af sådanne muligheder i den oprindelige konfiguration eller brugen af eksterne løsninger til konfiguration og eksisterende kompromiser.

Den beskrevne konfiguration er mulig mellem forskellige databaseservere. En server kan konfigureres til at modtage replikerede data fra en anden databaseserver og samtidig bevare snapshots af de replikerede data i realtid. MySQL og PostgreSQL tilbyder de fleste af disse konfigurationer enten selv eller ved hjælp af tredjepartsudvidelser, herunder metoder til binær log, disklåse og metoder baseret på operatorer og rækker.

Krydsreplikation mellem MySQL og PostgreSQL er nødvendig for engangs migration fra én database-server til en anden. Disse databaser bruger forskellige protokoller, så de kan ikke forbindes direkte. For at etablere datadeling kan man bruge et eksternt open source-værktøj såsom pg_chameleon.

Hvad er pg_chameleon

pg_chameleon er et replikationssystem fra MySQL til PostgreSQL baseret på Python 3. Det bruger open source-biblioteket mysql-replication, også skrevet på Python. Data fra MySQL tabeller udtrækkes og gemmes som JSONB-objekter i PostgreSQL databasen, hvorefter de dekodes af pl/pgsql-funktionen og genopbygges i PostgreSQL databasen.

Kapaciteterne i pg_chameleon

Flere MySQL-skemaer fra en enkelt klynge kan replikeres til én mål PostgreSQL-database med konfigurationen "én til mange".
Navnene på kilde- og målschemaer må ikke være ens.
Replikationsdata kan udtrækkes fra en kaskadereplik MySQL.
Tabeller, der ikke kan replikeres eller skaber fejl, ekskluderes.
Hver replikationsfunktion styres af dæmoner.
Kontrol via parametre og konfigurationsfiler baseret på YAML.

Eksempel

Vært
vm1
vm2

OS-version
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

Database server version
MySQL 5.7.26
PostgreSQL 10.5

Database port
3306
5433

IP-adresse
192.168.56.102
192.168.56.106

For at komme i gang skal du forberede alle nødvendige komponenter til installationen af pg_chameleon. I dette eksempel er Python 3.6.8 installeret, som opretter et virtuelt miljø og aktiverer det.

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

Efter en vellykket installation af Python3.6 skal du opfylde de øvrige krav, såsom at oprette og aktivere det virtuelle miljø. Derudover opdateres pip-modulet til den nyeste version og bruges til at installere pg_chameleon. I kommandoerne nedenfor installeres pg_chameleon 2.0.9 bevidst, selvom den nyeste version er 2.0.10. Dette gøres for at undgå nye fejl i den opdaterede version.

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

Derefter kalder vi pg_chameleon (chameleon er kommandoen) med argumentet set_configuration_files for at aktivere pg_chameleon og oprette standardkataloger og konfigurationsfiler.

(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/
coping configuration example in /root/.pg_chameleon/configuration//config-example.yml

Nu opretter vi en kopi af config-example.yml som default.yml, så den bliver standardkonfigurationsfilen. Et eksempel på konfigurationsfilen til dette eksempel gives nedenfor.

$> cat default.yml
---
# globale indstillinger
pid_dir: '~/.pg_chameleon/pid/'
log_dir: '~/.pg_chameleon/logs/'
log_dest: fil
log_level: info
log_days_keep: 10
rollbar_key: ''
rollbar_env: ''

# type_override giver brugeren mulighed for at overskrive standard typekonvertering til en anden.
type_override:
  "tinyint(1)":
    override_to: boolean
    override_tables:
      - "*"

#postgres destinationsforbindelse
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 #spring indsætninger på tabellen delphis_mediterranea.foo
      delete:
        - delphis_mediterranea #spring sletninger på skemaet delphis_mediterranea
      update:

Konfigurationsfilen i dette eksempel er et eksempel på en fil med pg_chameleon med små ændringer i overensstemmelse med kilde- og destinationsmiljøerne, og nedenfor gives en oversigt over de forskellige sektioner i konfigurationsfilen.

I konfigurationsfilen default.yml er der en sektion for globale indstillinger, hvor du kan administrere indstillinger såsom placeringen af låsefilen, logfilerne, logopbevaringsperioden osv. Derefter følger sektionen for typeoverriding, der angiver et sæt regler for typeoverriding under replikering. I standardeksemplet anvendes en regel til typeoverriding, som konverterer tinyint(1) til en boolesk værdi. I den næste sektion angiver vi forbindelsesdetaljerne til den ønskede database. I vores tilfælde er det databasen PostgreSQL, benævnt pg_conn. I den sidste sektion angiver vi kildedataene, dvs. parametrene for forbindelsen til kilde databasen, skemaet der kortlægger kilde- og måldatabasen, de tabeller der skal undgås, timeout, hukommelse, batchstørrelse. Bemærk, at 'sources' er angivet i flertal, hvilket betyder, at vi kan tilføje flere kildedatabaser til én destination for at konfigurere en "mange-til-en" opsætning.

Database world_x in the example contains 4 tables with rows that the MySQL community offers as an example. It can be downloaded her. The example database is provided as a tar and compressed archive with instructions for creating and importing rows.

In MySQL and PostgreSQL databases, a special user with the same name usr_replica is created. In MySQL, he is granted additional rights to read all replicated tables.

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;

On the PostgreSQL side, a database db_replica is created that will receive changes from the MySQL database. The user usr_replica in PostgreSQL is automatically configured as the owner of two schemas pgworld_x and sch_chameleon, which contain the actual replicated tables and replication catalog tables, respectively. The automatic configuration is managed by the create_replica_schema argument, as you will see below.

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

The MySQL database is configured with changes to certain parameters to prepare it for replication, as shown below. The database server will need to be restarted for the changes to take effect.

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

It is now important to check the connection to both database servers to avoid problems when executing pg_chameleon commands.

On the PostgreSQL node:

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

On the MySQL node:

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

The following three pg_chameleon (chameleon) commands prepare the environment, add the source, and initialize the replica. The create_replica_schema argument in pg_chameleon creates a default schema (sch_chameleon) and a replication schema (pgworld_x) in the PostgreSQL database, as we already mentioned. The add_source argument adds the source database to the configuration by reading the configuration file (default.yml), and in our case, this is mysql, while init_replica initializes the configuration based on the parameters in the configuration file.

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

Resultaterne af disse tre kommandoer indikerer tydeligt deres succesfulde udførelse. Alle fejl eller syntaksfejl vises i enkle og forståelige meddelelser med tips til at rette problemerne.

Til sidst, lad os starte replikationen med start_replica og få en meddelelse om succesfuld udførelse.

$> chameleon start_replica --config default --source mysql 
output: Starter replikationsprocessen for kilde mysql

Status for replikationen kan anmodes om med argumentet show_status, og fejl kan gennemgås med argumentet show_errors.

Result.

Som nævnt styres hver replikationsfunktion af dæmoner. For at se dem anmoder vi om proceslisten med Linux-kommandoen ps, som vist nedenfor.

Result.

Replikationen betragtes ikke som opsat, før vi tester den i realtid som vist nedenfor. Vi opretter en tabel, indsætter et par poster i MySQL-databasen og kalder argumentet sync_tables i pg_chameleon for at opdatere dæmonerne og replikere tabellen med posterne i PostgreSQL-databasen.

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 tabelprocessen for kilde mysql er startet.

For at bekræfte testresultaterne anmoder vi om tabellen fra PostgreSQL-databasen og viser rækkerne.

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

Hvis vi udfører en migration, vil følgende pg_chameleon-kommandoer markere dens afslutning. Kommandoerne skal udføres, efter vi har bekræftet, at alle måltabellers rækker er blevet replikeret, og resultatet vil være en pæn overført PostgreSQL-database uden henvisninger til den oprindelige database eller replikationsskemaet (sch_chameleon).

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

Valgfrit kan de følgende kommandoer fjerne den oprindelige konfiguration og replikationsskemaet.

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

Fordele ved pg_chameleon

Nem opsætning og konfiguration.
Brugervenlig fejlfinding og identifikation af anomalier med klare fejlmeddelelser.
Det er muligt at tilføje yderligere specialtabeller til replikationen efter initialization, uden at ændre den øvrige konfiguration.
Det er muligt at konfigurere flere kildedatabaser til én mål database, hvilket er meget praktisk, hvis du kombinerer data fra en eller flere MySQL-databaser til én PostgreSQL-database.
Valgte tabeller kan undgås at blive replikeret.

Ulemper ved pg_chameleon

Kun understøttet med MySQL 5.5 og nyere som kilde og PostgreSQL 9.5 og nyere som mål database.
Hver tabel skal have en primær eller unik nøgle, ellers initialiseres tabellerne under init_replica-processen, men replikeres ikke.
Envejsreplikering — kun fra MySQL til PostgreSQL. Derfor er det kun egnet til et "aktivt-passiv"-skema.
Kilden kan kun være en MySQL-database, og understøttelse af PostgreSQL som kilde er kun eksperimentel og med begrænsninger (læs mere) her)

Sammenfatning af pg_chameleon

Replikationsmetoden i pg_chameleon er velegnet til migrering af databaser fra MySQL til PostgreSQL. En betydelig ulempe er, at replikeringen kun er envejs, så databaseeksperter vil næppe ønske at bruge det til andet end migrering. Men problemet med envejsreplikering kan løses med et andet open source-værktøj — SymmetricDS.

Læs mere i den officielle dokumentation her. CLI-dokumentationen kan findes her.

Oversigt over SymmetricDS

SymmetricDS er et open source-værktøj, der replikerer enhver database til enhver anden almindelig database: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird og andre cloud-databaseinstanser, såsom Redshift og Azure osv. Tilgængelige funktioner: databasesynkronisering og filsynkronisering, replikering af flere kildedatabaser, filtreret synkronisering, transformation og mere. Det er et Java-baseret værktøj, og standardudgaven af JRE eller JDK (version 8.0 eller nyere) er påkrævet. Her kan ændringer i data registreres via triggers i kildedatabasen og sendes til den tilsvarende måldatabase i form af pakker.

Funktioner i SymmetricDS

Værktøjet er platform-uafhængigt, hvilket betyder, at to eller flere forskellige databaser kan udveksle data.
Relationelle databaser synkroniseres ved hjælp af ændringsregistrering, mens filsystembaserede databaser bruger filsynkronisering.
To-vejsreplikering ved hjælp af Push- og Pull-metoder baseret på sæt regler.
Dataoverførsel er mulig via beskyttede netværk og netværk med lav båndbredde.
Automatisk genopretning ved genoptagelse af noder efter nedbrud og automatisk konfliktløsning.
Kompatibilitet med skyen og effektive API-udvidelser.

Eksempel

SymmetricDS kan konfigureres på en af to måder:
En førende (parent) node, der centralt koordinerer datareplication mellem to underordnede (child) noder, og dataudveksling mellem de underordnede noder finder kun sted gennem den førende.
En aktiv node (node 1) kan udveksle data til replication med en anden aktiv node (node 2) uden mellemmænd.

I begge tilfælde foregår dataudvekslingen via Push og Pull. I dette eksempel vil vi se på konfigurationen "aktiv-aktiv". At beskrive hele arkitekturen ville tage for lang tid, så se vejledningfor at lære mere om SymmetricDS-enheden.

At installere SymmetricDS er meget nemt: download den opensource-version af zip-filen from here og ekstrakt den, hvor du vil. Tabellen nedenfor indeholder oplysninger om installationsstedet og versionen af SymmetricDS i dette eksempel, samt databasens versioner, versioner af Linux, IP-adresser og porte for begge noder.

Vært
vm1
vm2

OS-version
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

Database server version
MySQL 5.7.26
PostgreSQL 10.5

Database port
3306
5832

IP-adresse
192.168.1.107
192.168.1.112

Version af SymmetricDS
SymmetricDS 3.9
SymmetricDS 3.9

Installationssti for SymmetricDS
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

Navn på SymmetricDS-node
corp-000
store-001

Her installerer vi SymmetricDS i /usr/local/symmetric-server-3.9.20, og her vil forskellige underkataloger og filer blive opbevaret. Vi er interesseret i underkatalogerne samples og engines. I katalogen samples findes eksempelkonfigurationsfiler med nodeegenskaber samt eksempel-SQL-scripts til hurtigt at komme i gang med demonstrationer.

I katalogen samples ser vi tre konfigurationsfiler med nodeegenskaber - navnet angiver nodeligens karakter i en bestemt skema.

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

I SymmetricDS er alle nødvendige konfigurationsfiler til en grundlæggende skema af 3 noder (variant 1), og de samme filer kan bruges til en skema med 2 noder (variant 2). Vi kopierer den nødvendige konfigurationsfil fra katalogen samples til engines på værten vm1. Sådan ser det ud:

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

Denne knude i SymmetricDS-konfigurationen hedder corp-000, og forbindelsen til databasen håndteres af mysql jdbc-driveren, der bruger den ovenfor nævnte forbindelsesstreng og legitimationsoplysninger til login. Vi opretter forbindelse til databasen replica_db, og under oprettelsen af skemaet vil tabellerne blive oprettet. sync.url angiver forbindelsespunktet til noden for synkronisering.

Node 2 på værten vm2 konfigureres som store-001, og resten er angivet i node.properties-filen, som er vist nedenfor. Nodens store-001 kører en PostgreSQL-database, mens pgdb_replica er databasen til replikering. registration.url giver værten vm2 mulighed for at kontakte værten vm1 og få konfigurationsdetaljer fra denne.

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

Det færdige eksempel på SymmetricDS indeholder parametre til at konfigurere tovejsreplikering mellem to databaseservere (to noder). De følgende trin udføres på værten vm1 (corp-000), som vil oprette et eksempel skema med 4 tabeller. Derefter opretter kommandoen create-sym-tables i symadmin tabellerne, hvor reglerne og retningen for replikering mellem noderne vil blive gemt. Endelig indlæses eksemplariske data i tabellerne.

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

I eksemplet er tabellerne item og item_selling_price automatisk konfigureret til at replikere fra corp-000 til store-001, mens tabellerne sale (sale_transaction og sale_return_line_item) automatisk er konfigureret til at replikere fra store-001 til corp-000. Nu opretter vi skemaet i PostgreSQL-databasen på værten vm2 (store-001) for at forberede det til at modtage data fra corp-000.

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

Sørg for, at der i MySQL-databasen på vm1 er eksempler på tabeller og katalogtabeller fra SymmetricDS. Bemærk, at SymmetricDS-systemtabellerne (med præfikset sym_) i øjeblikket kun er tilgængelige på noden corp-000, da vi udførte command create-sym-tables der og vil styre replikeringen. Derudover vil der kun være 4 eksemplartabeller uden data i databasen på noden store-001.

Det er hele. Miljøet er klar til at køre serverprocesserne sym på begge noder, som vist nedenfor.

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

Logfilerne sendes til baggrundslogfilen (symmetric.log) i logmappen i den mappe, hvor SymmetricDS er installeret, samt til standard output. Sym-serveren kan nu startes på noden store-001.

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

Hvis serverprocessen sym køres på værten vm2, vil den oprette SymmetricDS katalogtabellerne også i PostgreSQL-databasen. Hvis serverprocessen sym køres på begge noder, vil de koordinere med hinanden for at replikere data fra corp-000 til store-001. Hvis vi efter nogle sekunder forespørger de 4 tabeller på begge sider, vil vi se, at replikationen er lykkedes. Alternativt kan vi sende en initial belastning til noden store-001 fra corp-000 med følgende kommando.

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

På dette tidspunkt indsættes en ny post i item-tabellen i MySQL-databasen på noden corp-000 (vært: vm1), og vi kan kontrollere dens replikation i PostgreSQL-databasen på noden store-001 (vært: vm2). Vi ser Pull-operationen for at flytte data fra corp-000 til 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)

For at udføre Push-operationen for at flytte data fra store-001 til corp-000, indsætter vi en post i sale_transaction-tabellen og kontrollerer, at replikationen er udført.

Result.

Vi ser en vellykket opsætning af tovejsreplikation af eksempel-tabeller mellem MySQL- og PostgreSQL-databaser. For at konfigurere replikation for nye brugerdefinerede tabeller udfører vi følgende trin. Vi opretter tabellen t1 som eksempel og konfigurerer reglerne for dens replikation på følgende måde. Sådan opsætter vi kun replikation fra corp-000 til 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)

Derefter modtager konfigurationen et notifikationssignal om ændringen af skemaet, dvs. tilføjelsen af en ny tabel, ved hjælp af kommandoen symadmin med argumentet sync-triggers, som genskaber udløsere for at matche tabeldefinitioner. send-schema udføres for at sende ændringerne i skemaet til noden store-001, og replikationen af tabel t1 er konfigureret.

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

Fordele ved SymmetricDS

Simpel installation og konfiguration, herunder et klar til brug sæt af filer med parametre til oprettelse af skema med tre eller to noder.
Tværplatformskompatibilitet af databaser og uafhængighed af platformen, inklusive servere, bærbare computere og mobile enheder.
Replikation af enhver database til enhver anden database lokalt, i WAN eller i cloud.
Mulighed for optimal drift med et par databaser eller tusindvis for bekvem replikation.
Betalingsversion med grafisk grænseflade og fremragende support.

Ulemper ved SymmetricDS

Det er nødvendigt manuelt at definere replikationsregler og retning i kommandolinjen via SQL-operatorer for at indlæse katalogtabel, hvilket kan være besværligt.
At konfigurere mange tabeller til replikation kan være trættende, medmindre man bruger scripts til at oprette SQL-operatorer, der definerer replikationsregler og retning.
Logfilerne indeholder for meget information, og nogle gange skal man rydde op i logfilen for at undgå, at den fylder for meget.

Konklusion vedrørende SymmetricDS

SymmetricDS muliggør konfiguration af tovej replikation mellem to, tre og selv flere tusinde noder for at udføre replikation og synkronisere filer. Det er et unikt værktøj, der selv udfører mange opgaver, såsom automatisk gendannelse af data efter en længere nedetid på en node, sikker og effektiv dataudveksling mellem noder via HTTPS, automatisk konfliktstyring baseret på et regelsæt osv. SymmetricDS udfører replikation mellem alle databaser, så det kan anvendes til forskellige scenarier, herunder migration, opgradering, distribution, filtrering og datatransformation på forskellige platforme.

Eksemplet er lavet baseret på den officielle korte vejledning om SymmetricDS. I brugerhåndbogen forskellige begreber relateret til konfiguration af replikation ved hjælp af SymmetricDS beskrives i detaljer.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster