د PostgreSQL او MySQL ترمنځ کراس نقل کول

د PostgreSQL او MySQL ترمنځ کراس نقل کول

زه به د PostgreSQL او MySQL تر منځ د کراس نقل نقل وټاکم، په بیله بیا د دوه ډیټابیس سرورونو ترمنځ د کراس نقل کولو ترتیب کولو میتودونه. په عموم ډول، کراس نقل شوي ډیټابیسونه همجنسي بلل کیږي، او دا د یو RDBMS سرور څخه بل ته د حرکت کولو یوه اسانه طریقه ده.

PostgreSQL او MySQL ډیټابیسونه عموما اړونده ګڼل کیږي، مګر د اضافي توسیعونو سره دوی د NoSQL وړتیاوې وړاندې کوي. دلته به موږ د اړونده DBMS لید څخه د PostgreSQL او MySQL ترمنځ د نقل په اړه بحث وکړو.

موږ به ټول داخلي کارونه تشریح نه کړو، یوازې لومړني اصول ترڅو تاسو د ډیټابیس سرورونو، ګټو، محدودیتونو او کارولو قضیو ترمنځ د نقل ترتیب کولو نظر ترلاسه کړئ.

عموما، د دوه ورته ډیټابیس سرورونو تر مینځ نقل کول یا په بائنری حالت کې ترسره کیږي یا د ماسټر (عرف خپرونکی، ماسټر، یا فعال) او غلام (پیرودونکي، سټینډ بای، یا غیر فعال) ترمنځ د پوښتنو په کارولو سره ترسره کیږي. د نقل کولو هدف په غلام اړخ کې د ماسټر ډیټابیس ریښتیني وخت کاپي چمتو کول دي. په دې حالت کې، ډاټا د ماسټر څخه غلام ته لیږدول کیږي، دا د فعال څخه غیر فعال ته، ځکه چې نقل یوازې په یو لوري کې ترسره کیږي. مګر تاسو کولی شئ په دواړو لارښوونو کې د دوو ډیټابیسونو ترمنځ نقل ترتیب کړئ، نو دا ډاټا په فعال فعال ترتیب کې له غلام څخه ماسټر ته لیږدول کیږي. دا ټول، په شمول د cascading نقل کول، د دوو یا ډیرو ورته ډیټابیس سرورونو ترمنځ ممکن دي. فعال فعال یا فعال غیر فعال ترتیب په اړتیا پورې اړه لري، په ابتدايي ترتیب کې د دې وړتیاوو شتون یا د بهرني ترتیب حل حلونو او موجوده تجارت بندونو کارول.

تشریح شوي ترتیب د مختلف ډیټابیس سرورونو ترمینځ ممکن دی. سرور د بل ډیټابیس سرور څخه نقل شوي ډیټا منلو لپاره تنظیم کیدی شي او لاهم د نقل شوي ډیټا ریښتیني وخت سنیپ شاټونه ساتي. MySQL او PostgreSQL ډیری دا تشکیلات په کور دننه یا د دریمې ډلې توسیعونو له لارې وړاندیز کوي، پشمول د بائنری لاګ میتودونه، ډیسک لاک کول، او بیان- او قطار پر بنسټ میتودونه.

د MySQL او PostgreSQL ترمنځ کراس نقل کول د یو ډیټابیس سرور څخه بل ته د یو ځل مهاجرت لپاره اړین دي. دا ډیټابیس مختلف پروتوکولونه کاروي، نو دا ممکنه نه ده چې دوی مستقیم سره وصل کړئ. د ډیټا تبادلې رامینځته کولو لپاره ، تاسو کولی شئ د بهرنۍ خلاصې سرچینې وسیله وکاروئ ، د مثال په توګه pg_chameleon.

pg_chameleon څه شی دی

pg_chameleon په Python 3 کې د MySQL څخه PostgreSQL ته د نقل کولو سیسټم دی. دا د خلاصې سرچینې mysql-replication کتابتون کاروي، په Python کې هم. د قطار عکسونه د MySQL جدولونو څخه ایستل شوي او په PostgreSQL ډیټابیس کې د JSONB شیانو په توګه زیرمه شوي ، او بیا د pl/pgsql فنکشن لخوا ډیکریټ شوي او په PostgreSQL ډیټابیس کې بیا تولید شوي.

د pg_chameleon ځانګړتیاوې

د ورته کلستر څخه ډیری MySQL سکیمونه د یو څخه تر ډیری ترتیبونو کې یو واحد هدف PostgreSQL ډیټابیس ته نقل کیدی شي
د سرچینې او هدف سکیما نومونه یو شان نه وي.
د نقل کولو ډاټا د کاسکیډ شوي MySQL نقل څخه ترلاسه کیدی شي.
هغه میزونه چې نشي کولی نقل کړي یا غلطۍ تولید کړي خارج شوي دي.
د نقل کولو هر فعالیت د ډیمون لخوا کنټرول کیږي.
د YAML پر بنسټ پیرامیټونو او ترتیب کولو فایلونو له لارې کنټرول.

بېلګه:

کوربه
vm1
vm2

د OS نسخه
CentOS لینکس 7.6 x86_64
CentOS لینکس 7.5 x86_64

د DB سرور نسخه
زما ایس ایل ایل ایکس ایکسیم ایکس
پوسټګریس ایس کیو ایل 10.5

د DB بندر
3306
5433

IP پته
192.168.56.102
192.168.56.106

د پیل کولو لپاره، د pg_chameleon نصبولو لپاره ټولې اړینې برخې چمتو کړئ. دا مثال د Python 3.6.8 نصبوي، کوم چې مجازی چاپیریال رامینځته کوي او فعالوي.

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

د Python3.6 په بریالیتوب سره نصبولو وروسته، تاسو اړتیا لرئ چې پاتې اړتیاوې پوره کړئ، لکه د مجازی چاپیریال رامینځته کول او فعالول. برسیره پردې، د پایپ ماډل وروستي نسخه ته تازه شوی او د pg_chameleon نصبولو لپاره کارول کیږي. لاندې کمانډونه په قصدي توګه pg_chameleon 2.0.9 نصبوي، که څه هم وروستۍ نسخه 2.0.10 ده. دا اړینه ده چې په تازه شوي نسخه کې د نوي بګ څخه مخنیوی وشي.

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

موږ بیا pg_chameleon ته زنګ وهو (چیمیلون یو کمانډ دی) د set_configuration_files دلیل سره pg_chameleon فعال کړئ او ډیفالټ لارښودونه او د ترتیب فایلونه رامینځته کړئ.

(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

اوس موږ د config-example.yml یوه کاپي د default.yml په توګه رامینځته کوو ترڅو دا د ډیفالټ تشکیلاتو فایل شي. د دې مثال لپاره د نمونې ترتیب کولو فایل لاندې چمتو شوی.

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

په دې مثال کې د ترتیب کولو فایل د نمونې pg_chameleon فایل دی چې د سرچینې او هدف چاپیریال سره سم د وړو بدلونونو سره، او لاندې د ترتیب کولو فایل مختلف برخو ته کتنه ده.

د default.yml ترتیب کولو فایل کې د نړیوال ترتیباتو یوه برخه شتون لري، چیرې چې تاسو کولی شئ تنظیمات اداره کړئ لکه د لاک فایل موقعیت، د لاګونو موقعیت، د لاګونو لپاره د ذخیره کولو موده، او داسې نور. بیا وروسته د ډول override برخه راځي، چیرې چې د تکثیر په جریان کې د بار کولو ډولونو لپاره د قواعدو مجموعه. مثال د یو ډول اووررایډینګ قاعدې ته ډیفالټ کوي چې ټیټینټ (1) بولین ارزښت ته بدلوي. په راتلونکې برخه کې، موږ د هدف ډیټابیس ته د ارتباط توضیحات مشخص کوو. زموږ په قضیه کې، دا د PostgreSQL ډیټابیس دی، ټاکل شوی pg_conn. په وروستۍ برخه کې ، موږ د سرچینې ډیټا په ګوته کوو ، دا د سرچینې ډیټابیس د پیوستون پیرامیټونه ، د سرچینې او هدف ډیټابیس ترمینځ د نقشه کولو سکیم ، میزونه چې باید پریښودل شي ، د انتظار وخت ، حافظه ، د بسته اندازه. په یاد ولرئ چې "سرچینې" جمع دي، پدې معنی چې موږ کولی شو ډیری سرچینې ډیټابیسونه په یو واحد هدف ډیټابیس کې اضافه کړو ترڅو د ډیری څخه یو ترتیب ترتیب کړي.

د مثال ډیټابیس world_x د قطارونو سره 4 میزونه لري چې د MySQL ټولنه د مثال په توګه وړاندیز کوي. دا ډاونلوډ کیدی شي دلته. د نمونې ډیټابیس د قطارونو جوړولو او واردولو لارښوونو سره د ټار او کمپریس شوي آرشیف په توګه راځي.

په MySQL او PostgreSQL ډیټابیسونو کې، یو ځانګړی کاروونکي د ورته نوم سره رامینځته کیږي usr_replica. په MySQL کې، دا ټول نقل شوي جدولونو ته د لوستلو اضافي حقونه ورکول کیږي.

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 اړخ کې، د db_replica ډیټابیس رامینځته شوی چې د MySQL ډیټابیس څخه بدلونونه مني. په PostgreSQL کې کاروونکي usr_replica په اوتومات ډول د دوه سکیمونو مالک په توګه تنظیم شوی، pgworld_x او sch_chameleon، کوم چې په ترتیب سره د ریښتینې نقل شوي میزونه او د نقل کولو لارښود میزونه لري. د create_replica_schema دلیل د اتوماتیک ترتیب لپاره مسؤل دی، لکه څنګه چې تاسو به لاندې وګورئ.

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

د MySQL ډیټابیس د ځینې پیرامیټرو بدلونونو سره ترتیب شوی ترڅو د نقل لپاره چمتو کړي لکه څنګه چې لاندې ښودل شوي. تاسو به د بدلونونو د اغیزمن کیدو لپاره د ډیټابیس سرور بیا پیل کولو ته اړتیا ولرئ.

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

اوس دا مهمه ده چې د دواړو ډیټابیس سرورونو سره پیوستون وګورئ ترڅو د pg_chameleon کمانډونو چلولو پرمهال کومه ستونزه شتون ونلري.

په PostgreSQL نوډ کې:

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

په MySQL نوډ کې:

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

راتلونکی درې pg_chameleon (chameleon) کمانډونه چاپیریال چمتو کوي، سرچینه اضافه کوي، او نقل پیلوي. pg_chameleon ته د create_replica_schema دلیل د PostgreSQL ډیټابیس کې ډیفالټ سکیما (sch_chameleon) او د نقل کولو سکیما (pgworld_x) رامینځته کوي ، لکه څنګه چې موږ دمخه بحث کړی. د add_source دلیل د تشکیلاتو فایل (default.yml) لوستلو سره ترتیب ته د سرچینې ډیټابیس اضافه کوي ، او زموږ په قضیه کې دا mysql دی ، او init_replica د ترتیب فایل کې د پیرامیټونو پراساس ترتیب پیل کوي.

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

د دې دریو کمانډونو محصول په څرګند ډول په ګوته کوي چې دوی په بریالیتوب سره اجرا شوي. هر ډول حادثې یا نحوي تېروتنې په ساده، واضح پیغامونو کې راپور شوي چې د ستونزې حل کولو څرنګوالي په اړه اشارې سره.

په نهایت کې ، موږ د start_replica په کارولو سره نقل پیل کوو او د بریا پیغام ترلاسه کوو.

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

د عکس العمل حالت د show_status دلیل په کارولو سره پوښتل کیدی شي، او غلطی د show_errors دلیل په کارولو سره لیدل کیدی شي.

نتیجه

لکه څنګه چې موږ مخکې وویل، د هر نقل فعالیت د ډیمون لخوا کنټرول کیږي. د دوی د لیدلو لپاره، موږ د لینکس پی ایس کمانډ سره د پروسې جدول پوښتنه کوو، لکه څنګه چې لاندې ښودل شوي.

نتیجه

نقل کول ترتیب شوي نه ګڼل کیږي تر هغه چې موږ یې په ریښتیني وخت کې ازموینه وکړو، لکه څنګه چې لاندې ښودل شوي. موږ یو جدول جوړوو، د MySQL ډیټابیس ته یو څو ریکارډونه داخلوو، او په pg_chameleon کې د sync_tables دلیل ته زنګ وهو ترڅو ډیمون تازه کړي او میز د ریکارډونو سره د 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.

د ازموینې پایلې تاییدولو لپاره، موږ د PostgreSQL ډیټابیس څخه جدول پوښتنه کوو او قطارونه تولیدوو.

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

که موږ مهاجرت کوو، لاندې pg_chameleon کمانډونه به د هغې پای وي. کمانډونه باید اجرا شي وروسته له دې چې موږ ډاډه شو چې د ټولو هدفونو میزونو قطارونه تکرار شوي ، او پایله به د سرچینې ډیټابیس یا نقل کولو سکیم (sch_chameleon) ته د حوالې پرته په پاک ډول مهاجرت شوي PostgreSQL ډیټابیس وي.

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

که وغواړئ، تاسو کولی شئ د اصلي ترتیب او نقل کولو سکیم حذف کولو لپاره لاندې کمانډونه وکاروئ.

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

د pg_chameleon ګټې

اسانه تنظیم او تنظیم کول.
د واضح خطا پیغامونو سره په اسانۍ سره ستونزې حل کړئ او ګډوډي وپیژنئ.
اضافي ځانګړي جدولونه د پیل کولو وروسته په نقل کې اضافه کیدی شي پرته لدې چې پاتې ترتیب بدل کړي.
دا ممکنه ده چې د یو واحد هدف ډیټابیس لپاره ډیری سرچینې ډیټابیسونه تنظیم کړئ، او دا خورا ګټور دی که تاسو د یو یا ډیرو MySQL ډیټابیسونو ډاټا په یو واحد PostgreSQL ډیټابیس کې یوځای کړئ.
تاسو اړتیا نلرئ غوره شوي میزونه تکرار کړئ.

د pg_chameleon زیانونه

یوازې د MySQL 5.5 او پورته سره د سرچینې په توګه او PostgreSQL 9.5 او پورته د هدف ډیټابیس په توګه ملاتړ شوی.
هر جدول باید لومړنی یا ځانګړی کیلي ولري، که نه نو جدولونه د init_replica پروسې په جریان کې پیل شوي مګر نقل شوي ندي.
یو طرفه نقل - یوازې له MySQL څخه PostgreSQL ته. نو ځکه، دا یوازې د "فعال غیر فعال" سرکټ لپاره مناسب دی.
سرچینه یوازې د MySQL ډیټابیس کیدی شي، او د سرچینې په توګه د PostgreSQL ډیټابیس لپاره ملاتړ یوازې تجربوي او محدودیتونو سره دی (نور زده کړئ دلته)

د pg_chameleon لپاره پایلې

په pg_chameleon کې د نقل کولو طریقه د MySQL څخه PostgreSQL ته د ډیټابیس لیږدولو لپاره خورا ښه ده. د پام وړ نیمګړتیا دا ده چې نقل یوازې یو طرفه دی، نو د ډیټابیس متخصصین احتمال نلري چې دا د مهاجرت پرته د بل څه لپاره وکاروي. مګر د یو طرفه نقل کولو ستونزه د بلې خلاصې سرچینې وسیلې - SymmetricDS سره حل کیدی شي.

په رسمي اسنادو کې نور ولولئ دلته. د کمانډ لاین مرسته موندل کیدی شي دلته.

د SymmetricDS عمومي کتنه

SymmetricDS د خلاصې سرچینې وسیله ده چې کوم ډیټابیس کوم بل عام ډیټابیس ته نقل کوي: اوریکل، MongoDB، PostgreSQL، MySQL، SQL Server، MariaDB، DB2، Sybase، Greenplum، Informix، H2، Firebird او نور کلاوډ ډیټابیس مثالونه، د بیلګې په توګه، Redshift، Azure، او داسې نور موجودې ځانګړتیاوې: ډیټابیس او فایل همغږي کول، د څو ماسټر ډیټابیس نقل، فلټر شوي ترکیب، بدلون او نور. دا د جاوا وسیله ده او د JRE یا JDK (نسخه 8.0 یا لوړ) معیاري خوشې کولو ته اړتیا لري. دلته، د سرچینې ډیټابیس کې محرکاتو ته د معلوماتو بدلونونه ثبت کیدی شي او د بستونو په شکل مناسب هدف ډیټابیس ته لیږل کیدی شي.

د SymmetricDS ځانګړتیاوې

وسیله پلیټ فارم خپلواک دی، پدې معنی چې دوه یا ډیر مختلف ډیټابیسونه کولی شي ډاټا تبادله کړي.
اړونده ډیټابیسونه د ډیټا بدلولو ریکارډونو په کارولو سره همغږي کیږي ، پداسې حال کې چې د فایل سیسټم میشته ډیټابیسونه د فایل ترکیب کاروي.
د یو لړ مقرراتو پراساس د Push او Pull میتودونو په کارولو سره دوه اړخیزه تکرار.
د معلوماتو لیږد په خوندي او ټیټ بینډ ویت شبکو کې ممکن دی.
اتوماتیک بیا رغونه کله چې نوډونه د ناکامۍ او اتوماتیک شخړې حل وروسته عملیات بیا پیل کوي.
د کلاوډ مطابقت لرونکي او ځواکمن توسیع APIs.

بېلګه:

SymmetricDS کولی شي په دوو لارو کې ترتیب شي:
یو ماسټر (والدین) نوډ چې په مرکزي توګه د دوه غلام (ماشوم) نوډونو ترمینځ د معلوماتو نقل همغږي کوي ، او د ماشوم نوډونو ترمینځ اړیکه یوازې د مور او پلار له لارې پیښیږي.
یو فعال نوډ (نوډ 1) کولی شي د بل فعال نوډ (نوډ 2) سره د منځګړیتوب پرته د نقل لپاره اړیکه ونیسي.

په دواړو اختیارونو کې، د معلوماتو تبادله د Push او Pull په کارولو سره ترسره کیږي. په دې مثال کې به موږ یو فعال فعال ترتیب په پام کې ونیسو. دا به ډیر وخت ونیسي چې ټول جوړښت تشریح کړئ، نو خپل څیړنه وکړئ. رهبريد SymmetricDS وسیلې په اړه نور معلومات ترلاسه کولو لپاره.

د SymmetricDS نصب کول خورا ساده دي: د زپ فایل خلاص سرچینې نسخه ډاونلوډ کړئ له دې ځایه او هرچیرې چې غواړې وباسه. لاندې جدول په دې مثال کې د SymmetricDS د نصب کولو موقعیت او نسخې په اړه معلومات وړاندې کوي، په بیله بیا د ډیټابیس نسخې، د لینکس نسخې، IP پتې، او د دواړو نوډونو لپاره بندرونه.

کوربه
vm1
vm2

د OS نسخه
CentOS لینکس 7.6 x86_64
CentOS لینکس 7.6 x86_64

د DB سرور نسخه
زما ایس ایل ایل ایکس ایکسیم ایکس
پوسټګریس ایس کیو ایل 10.5

د DB بندر
3306
5832

IP پته
192.168.1.107
192.168.1.112

د SymmetricDS نسخه
SymmetricDS 3.9
SymmetricDS 3.9

د SymmetricDS نصبولو لاره
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

د SymmetricDS نوډ نوم
corp-000
پلورنځی-001

دلته موږ په /usr/local/symmetric-server-3.9.20 کې SymmetricDS نصب کوو، او مختلف فرعي لارښودونه او فایلونه به هلته زیرمه شي. موږ د نمونو او انجنونو فرعي لارښودونو سره علاقه لرو. د نمونې لارښود د نوډ ملکیتونو سره د مثال ترتیب کولو فایلونه لري ، په بیله بیا د SQL سکریپټونو مثال لري ترڅو تاسو ژر پیل کړئ.

د نمونو په لارښود کې موږ د نوډ ملکیتونو سره درې تشکیلاتي فایلونه ګورو - نوم په یو ځانګړي سکیم کې د نوډ طبیعت ښیې.

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

SymmetricDS د لومړني 3 نوډ ډیزاین (اختیار 1) لپاره ټول اړین ترتیب فایلونه لري، او ورته فایلونه د 2-نوډ ډیزاین (اختیار 2) لپاره کارول کیدی شي. د اړتیا وړ ترتیب فایل د نمونې لارښود څخه د vm1 کوربه انجنونو ته کاپي کړئ. دا په دې ډول وګرځي:

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

د SymmetricDS ترتیب کې دا نوډ د corp-000 په نوم یادیږي، او د ډیټابیس اتصال د mysql jdbc ډرایور لخوا اداره کیږي، کوم چې پورته د پیوستون تار او د ننوتلو اسناد کاروي. موږ د replica_db ډیټابیس سره وصل یو او میزونه به د سکیما جوړولو پرمهال رامینځته شي. sync.url ښیې چې چیرې د همغږي کولو لپاره نوډ سره اړیکه ونیسئ.

نوډ 2 په کوربه vm2 کې د سټور - 001 په توګه ترتیب شوی او پاتې نور په لاندې node.properties فایل کې مشخص شوي. نوډ سټور-001 د PostgreSQL ډیټابیس چلوي او pgdb_replica د نقل کولو ډیټابیس دی. registration.url کوربه vm2 ته اجازه ورکوي چې د کوربه vm1 سره اړیکه ونیسي او له دې څخه د ترتیب توضیحات ترلاسه کړي.

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

بشپړ شوي SymmetricDS مثال د دوه ډیټابیس سرورونو (دوه نوډونو) تر مینځ د دوه طرفه نقل ترتیب کولو لپاره پیرامیټونه لري. لاندې مرحلې په کوربه vm1 (corp-000) کې ترسره کیږي، کوم چې به د 4 میزونو سره د مثال سکیما رامینځته کړي. بیا د symadmin کمانډ سره د Create-sym-tables چلول د ډایرکټر میزونه رامینځته کوي چیرې چې د نوډونو ترمینځ د نقل کولو قواعد او لارښود به زیرمه شي. په نهایت کې، د نمونې ډاټا په جدولونو کې پورته کیږي.

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

په مثال کې، د توکي او توکي_پلورونکي_قیمت جدولونه په اتوماتيک ډول د کارپوریشن - 000 څخه پلورنځي - 001 ته د نقل کولو لپاره تنظیم شوي ، او د پلور میزونه (د پلور_ لیږد او پلور_ بیرته_لاین_ توکي) په اتوماتيک ډول د پلورنځي - 001 څخه کارپوریشن - 000 ته د نقل کولو لپاره تنظیم شوي. اوس موږ په کوربه vm2 (store-001) کې د PostgreSQL ډیټابیس کې سکیما رامینځته کوو ترڅو دا چمتو کړي چې د کارپ -000 څخه ډیټا ترلاسه کړي.

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

ډاډ ترلاسه کړئ چې وګورئ چې په vm1 کې د MySQL ډیټابیس د مثال میزونه او د SymmetricDS کتلاګ میزونه لري. په یاد ولرئ چې د SymmetricDS سیسټم میزونه (د sym_ سره مخکینۍ) اوس مهال یوازې په نوډ کورپ - 000 کې شتون لري ځکه چې دا هغه ځای دی چې موږ د Create-sym-tables کمانډ چلولی او د نقل اداره کول به وي. او د نوډ سټور - 001 ډیټابیس کې به د ډیټا پرته یوازې 4 مثالي میزونه وي.

ټول. چاپیریال چمتو دی چې په دواړو نوډونو کې د سیم سرور پروسې پرمخ بوځي لکه څنګه چې لاندې ښودل شوي.

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

د لاګ ننوتل د شالید لاګ فایل (symmetric.log) ته لیږل کیږي د لاګ فولډر په لارښود کې چیرې چې SymmetricDS نصب شوی ، او همدارنګه معیاري محصول ته. د سیم سرور اوس په نوډ پلورنځي - 001 کې پیل کیدی شي.

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

که تاسو په vm2 کوربه کې د سیم سرور پروسه پرمخ وړئ، دا به د PostgreSQL ډیټابیس کې د SymmetricDS کتلاګ جدولونه هم رامینځته کړي. که تاسو په دواړو نوډونو کې د سیم سرور پروسه پرمخ وړئ، دوی د یو بل سره همغږي کوي ترڅو د corp-000 څخه ذخیره - 001 ته ډاټا نقل کړي. که د څو ثانیو وروسته موږ په دواړو خواوو کې ټول 4 میزونه وپوښتو، موږ به وګورو چې نقل بریالی و. یا تاسو کولی شئ بوټسټریپ د لاندې کمانډ سره د کارپ - 001 څخه نوډ سټور - 000 ته واستوئ.

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

په دې وخت کې، یو نوی ریکارډ د نوډ کارپ - 000 (میزبان: vm1) په MySQL ډیټابیس کې د توکو جدول کې داخل شوی، او تاسو کولی شئ د نوډ سټور - 001 (میزبان: vm2) کې د PostgreSQL ډیټابیس ته د هغې نقل وګورئ. موږ د کارپور - 000 څخه ذخیره - 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)

د ذخیره - 001 څخه کارپوریشن - 000 ته ډیټا لیږدولو لپاره د فشار عملیات ترسره کولو لپاره ، موږ د sale_transaction جدول کې یو ریکارډ دننه کوو او تصدیق کوو چې نقل بریالی دی.

نتیجه

موږ د MySQL او PostgreSQL ډیټابیسونو تر مینځ د مثال جدولونو دوه طرفه نقل کولو بریالي تنظیم ګورو. د نوي کارن میزونو لپاره د نقل ترتیب کولو لپاره، دا ګامونه تعقیب کړئ: موږ د مثال په توګه جدول t1 جوړوو او د هغې د نقل کولو قواعد په لاندې ډول تنظیم کوو. پدې توګه موږ یوازې د corp-000 څخه ذخیره - 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)

بیا ترتیب د سکیما بدلون څخه خبر شوی، دا د نوي جدول اضافه کول، د Symadmin کمانډ په کارولو سره د Sync-triggers دلیل سره، کوم چې د جدول تعریفونو نقشه کولو لپاره محرکات بیا جوړوي. د لیږلو سکیما د نوډ سټور - 001 ته د سکیما بدلونونو لیږلو لپاره اجرا کیږي، او د جدول t1 نقل ترتیب شوی.

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

د SymmetricDS ګټې

اسانه نصب او تنظیم کول ، پشمول د درې نوډ یا دوه نوډ سرکټ رامینځته کولو لپاره د پیرامیټونو سره د فایلونو چمتو شوي سیټ.
د کراس پلیټ فارم ډیټابیسونه او د پلیټ فارم خپلواکي ، پشمول سرورونه ، لپټاپونه او ګرځنده وسایل.
کوم ډیټابیس په ځایی ډول کوم بل ډیټابیس ته په WAN یا کلاوډ کې نقل کړئ.
د مناسب نقل لپاره د څو ډیټابیسونو یا څو زرو سره د غوره کار امکان.
د GUI او غوره ملاتړ سره تادیه شوې نسخه.

د SymmetricDS نیمګړتیاوې

تاسو اړتیا لرئ په لاسي ډول د کتلاګ جدولونو پورته کولو لپاره د SQL بیاناتو له لارې د کمانډ لاین کې د نقل کولو مقررات او سمت تعریف کړئ ، کوم چې ممکن ناشونی وي.
د نقل لپاره د ډیری جدولونو ترتیب کول ستړي کیدی شي پرته لدې چې تاسو د SQL بیاناتو رامینځته کولو لپاره سکریپټونه وکاروئ چې د نقل کولو مقررات او سمت تعریفوي.
په لاګونو کې خورا ډیر معلومات ثبت شوي ، او ځینې وختونه تاسو اړتیا لرئ د لاګ فایل پاک کړئ ترڅو دا ډیر ځای ونه نیسي.

د SymmetricDS لپاره پایلې

SymmetricDS تاسو ته اجازه درکوي د فایلونو نقل کولو او همغږي کولو لپاره د دوه ، دریو ، یا حتی څو زره نوډونو ترمینځ دوه طرفه نقل ترتیب کړئ. دا یو ځانګړی وسیله ده چې په خپلواکه توګه ډیری دندې ترسره کوي، لکه په نوډ کې د اوږدې مودې ځنډ وروسته د اتوماتیک ډیټا بیا رغونه، د HTTPS له لارې د نوډونو ترمنځ خوندي او اغیزمن ډیټا تبادله، د یو لړ مقرراتو پراساس د اتوماتیک شخړو مدیریت، او داسې نور. SymmetricDS ترسره کوي. د هر ډیټابیس تر مینځ نقل کول، نو له همدې امله، دا د مختلفو سناریوګانو لپاره کارول کیدی شي، پشمول د مهاجرت، مهاجرت، توزیع، فلټر کولو، او په پلیټونو کې د معلوماتو بدلون.

مثال د چارواکو پر بنسټ دی چټک لارښود د SymmetricDS لخوا. IN د کارن لارښود د SymmetricDS سره د نقل ترتیب کولو کې دخیل مختلف مفکورې په تفصیل سره بیانوي.

سرچینه: www.habr.com

Add a comment