แแ แแแแแแงแแค PostgreSQL-แกแ แแ MySQL-แก แจแแ แแก แฏแแแ แแแแแ แ แแแแแแแชแแแก, แแกแแแ แแแแแชแแแแ แแ แกแแ แแแ แก แจแแ แแก แฏแแแ แแแแแ แ แแแแแแแชแแแก แแแงแแแแแแก แแแแแแแแก. แ แแแแ แช แฌแแกแ, แฏแแแ แแแแแ แ แแแแแแแชแแฃแ แแแแแชแแแแ แแแแแแก แฃแฌแแแแแแ แฐแแแแแแแฃแ แก แแ แแก แแ แแก แแแกแแฎแแ แฎแแแแแ แแแแแแ แแ แแ RDBMS แกแแ แแแ แแแแ แแแแ แแแ แแแแแกแแกแแแแแแ.
PostgreSQL แแ MySQL แแแแแชแแแแ แแแแแแ แแแแแแแ แแแแแฎแแแแแ แฃแ แแแแ แแแแแ, แแแแ แแ แแแแแขแแแแแ แแแคแแ แแแแแแแแ แแกแแแ แแแแแแแแแแแ NoSQL แจแแกแแซแแแแแแแแแก. แแฅ แแแแแแฎแแแแแ แ แแแแแแแชแแแก PostgreSQL-แกแ แแ MySQL-แก แจแแ แแก แ แแแแชแแฃแ แ DBMS แแแ แกแแแฅแขแแแแแแ.
แฉแแแ แแ แแฆแแฌแแ แ แแแแแแ แจแแแ แแฃแจแแแแแก, แแฎแแแแ แซแแ แแแแ แแ แแแชแแแแแก, แ แแแ แแฅแแแ แแแฅแแแแแ แแแแ แแแแแชแแแแ แแแแแก แกแแ แแแ แแแก แจแแ แแก แ แแแแแแแชแแแก แแแแคแแแฃแ แแชแแแก, แฃแแแ แแขแแกแแแแแแก, แจแแแฆแฃแแแแแแกแ แแ แแแแแงแแแแแแก แจแแแแฎแแแแแแแก แจแแกแแฎแแ.
แ แแแแ แช แฌแแกแ, แ แแแแแแแชแแ แแ แแแแแขแฃแ แแแแแชแแแแ แแแแแก แกแแ แแแ แก แจแแ แแก แฎแแแแ แแ แแแแ แ แแแแแจแ แแ แจแแแแแฎแแแก แแแแแงแแแแแแ แแแแแแ แก (แแแกแขแแ แก (แแแฃ แแแแแแชแแแแแก, แแแแแแ แก แแ แแฅแขแแฃแ ) แแ แกแแแแก (แแแแแแแขแ, แแแแแแ แแ แแแกแแฃแ แ) แจแแ แแก. แ แแแแแแแชแแแก แแแแแแแ แซแแ แแแแแ แแแแแชแแแแ แแแแแก แ แแแแฃแ แแ แแจแ แแกแแแก แแแฌแแแแแ แแแแฃแ แแฎแแ แแก. แแ แจแแแแฎแแแแแจแ, แแแแแชแแแแแ แแแแแแแก แกแแแแแแกแขแ แแแแ แแแแแแ, แแแฃ แแฅแขแแฃแ แแแแ แแแกแแฃแ แแ, แ แแแแแ แ แแแแแแแชแแ แฎแแ แชแแแแแแแ แแฎแแแแ แแ แแ แแแแแ แแฃแแแแแ. แแแแ แแ แแฅแแแ แจแแแแซแแแแ แแแแงแแแแ แ แแแแแแแชแแ แแ แแแแแชแแแแ แแแแแก แจแแ แแก แแ แแแ แแแแแ แแฃแแแแแ, แแกแ, แ แแ แแแแแชแแแแแ แแแแแแชแแก แกแแแแแแแ แแแแแแ แก แแฅแขแแฃแ -แแฅแขแแฃแ แแแแคแแแฃแ แแชแแแจแ. แแก แงแแแแแคแแ แ, แแแ แจแแ แแก แแแกแแแแฃแ แ แ แแแแแแแชแแ, แจแแกแแซแแแแแแแ แแแแแชแแแแ แแแแแก แแ แแ แแแข แแแแแขแฃแ แกแแ แแแ แก แจแแ แแก.แแฅแขแแฃแ -แแฅแขแแฃแ แ แแ แแฅแขแแฃแ -แแแกแแฃแ แ แแแแคแแแฃแ แแชแแ แแแแแแแแแแฃแแแ แกแแญแแ แแแแแแ, แแกแแแ แจแแกแแซแแแแแแแแแแก แฎแแแแแกแแฌแแแแแแแแแ แกแแฌแงแแก แแแแคแแแฃแ แแชแแแจแ แแ แแแ แ แแแแคแแแฃแ แแชแแแก แแแแแฌแงแแแขแแแแแแแแก แแแแแงแแแแแแแ แแ แแ แกแแแฃแ แแแแแ แแแแกแแแแ.
แแฆแฌแแ แแแ แแแแคแแแฃแ แแชแแ แจแแกแแซแแแแแแแ แแแแแชแแแแ แแแแแก แกแฎแแแแแกแฎแแ แกแแ แแแ แแแก แจแแ แแก. แกแแ แแแ แแก แแแแคแแแฃแ แแชแแ แจแแกแแซแแแแแแแ แแกแ, แ แแ แแแแฆแแก แขแแ แแแแ แแแฃแแ แแแแแชแแแแแ แแแแแชแแแแ แแแแแก แกแฎแแ แกแแ แแแ แแแแ แแ แแแแแ แจแแแแแฎแแก แ แแแแแแแชแแฃแ แ แแแแแชแแแแแแก แ แแแแฃแ แแ แแจแ แกแแแแจแแขแแแ. MySQL แแ PostgreSQL แแแแแแแแแ แแ แแแแคแแแฃแ แแชแแแแแก แฃแแแขแแกแแแแก แจแแแ แแ แแแกแแแ แแฎแแ แแก แแแคแแ แแแแแแแแก แกแแจแฃแแแแแแ, แแแ แจแแ แแก แแแแแ แฃแแ แแฃแ แแแแแก แแแแแแแแ, แแแกแแแก แฉแแแแขแแ แแ แแแแชแฎแแแแแแแแ แแ แแฌแแ แแแแแแ แแแคแฃแซแแแแฃแแ แแแแแแแแ.
MySQL-แกแ แแ PostgreSQL-แก แจแแ แแก แฏแแแ แแแแแ แ แแแแแแแชแแ แกแแญแแ แแ แแแแแชแแแแ แแ แแ แกแแ แแแ แแแแ แแแแ แแแ แแ แแฏแแ แแแ แแแแ แแชแแแกแแแแก. แแก แแแแแชแแแแ แแแแแแ แแงแแแแแแ แกแฎแแแแแกแฎแแ แแ แแขแแแแแแแก, แแแแขแแ แแแแ แฃแจแฃแแแ แแแแแแจแแ แแแ แจแแฃแซแแแแแแแ. แแแแแชแแแแ แแแชแแแแก แแแกแแแงแแ แแแแแ, แจแแแแซแแแแ แแแแแแงแแแแ แแแ แ แฆแแ แฌแงแแ แแก แแแกแขแ แฃแแแแขแ, แแแแแแแแแ pg_chameleon.
แ แ แแ แแก pg_chameleon
pg_chameleon แแ แแก แ แแแแแแแชแแแก แกแแกแขแแแ MySQL-แแแ PostgreSQL-แแแ Python 3-แจแ. แแก แแงแแแแแก แฆแแ แแแแแก mysql-แ แแแแแแแชแแแก แแแแแแแแแแแก, แแกแแแ Python-แจแ. แ แแแแก แกแฃแ แแแแแ แแแแฆแแแฃแแแ MySQL แชแฎแ แแแแแแแแ แแ แแแแฎแแแ แ แแแแ แช JSONB แแแแแฅแขแแแ PostgreSQL แแแแแชแแแแ แแแแแจแ, แจแแแแแ แแ แแแจแแคแ แฃแแแ pl/pgsql แคแฃแแฅแชแแแ แแ แแ แแแแแแแ PostgreSQL แแแแแชแแแแ แแแแแจแ.
pg_chameleon-แแก แแแฎแแกแแแแแแแแแ
แแ แแแแแ MySQL แกแฅแแแ แแ แแแแแแแแแ แแแแกแขแแ แแแแ แจแแแซแแแแ แแแแแแแ แแแก แแ แ แกแแแแแแ PostgreSQL แแแแแชแแแแ แแแแแจแ แแ แแ-แแแ แ แแแแแแแแ แแแแคแแแฃแ แแชแแแจแ.
แฌแงแแ แแกแ แแ แกแแแแแแ แกแฅแแแแก แกแแฎแแแแแ แแ แจแแแซแแแแ แแงแแก แแแแแ.
แ แแแแแแแชแแแก แแแแแชแแแแแแก แแแฆแแแ แจแแกแแซแแแแแแแ แแแกแแแแฃแ แ MySQL แแกแแแแแ.
แชแฎแ แแแแแ, แ แแแแแแกแแช แแ แจแแฃแซแแแแ แแแแแแ แแแ แแ แจแแชแแแแแแแก แฌแแ แแแฅแแแ, แแแแแ แแชแฎแฃแแแ.
แ แแแแแแแชแแแก แแแแแแฃแ แคแฃแแฅแชแแแก แแแแแขแ แแแแแแ แแแแแแแแ.
แแแแขแ แแแ YAML-แแ แแแคแฃแซแแแแฃแแ แแแ แแแแขแ แแแแก แแ แแแแคแแแฃแ แแชแแแก แคแแแแแแแก แแแจแแแแแแ.
แแแแแแแแ
แแแกแแแแซแแแ
vm1
vm2
OS แแแ แกแแ
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64
DB แกแแ แแแ แแก แแแ แกแแ
MySQL 5.7.26
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-แแก แฌแแ แแแขแแแแ แแแกแขแแแแชแแแก แจแแแแแ, แแฅแแแ แฃแแแ แจแแแกแ แฃแแแ แแแ แฉแแแแแ แแแแฎแแแแแแ, แ แแแแ แแชแแ แแแ แขแฃแแแฃแ แ แแแ แแแแก แจแแฅแแแ แแ แแแแฅแขแแฃแ แแแ. แแแ แแ แแแแกแ, pip แแแแฃแแ แแแแแฎแแแแฃแแแ แฃแแฎแแแก แแแ แกแแแแ แแ แแแแแแงแแแแแ 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 แแแแคแแแฃแ แแชแแแก แคแแแแจแ แแ แแก แแแแแแแฃแ แ แแแ แแแแขแ แแแแก แแแแงแแคแแแแแ, แกแแแแช แจแแแแซแแแแ แแแ แแแ แแกแแแ แแแ แแแแขแ แแแ, แ แแแแ แแชแแ แแแแแแแแแก แคแแแแแก แแแแแแ แแแแ, แแฃแ แแแแแแแก แแแแแแ แแแแ, แแฃแ แแแแแแแก แจแแแแฎแแแก แแแ แแแแ แแ แ.แจ. แจแแแแแ แแแแแก type override แแแแงแแคแแแแแ, แกแแแแช แ แแแแแแแชแแแก แแ แแก แขแแแแแแก แแแแแญแแ แแแแแก แฌแแกแแแแก แแแแ แแแ. แแแแแแแแจแ แแแแฃแแแกแฎแแแแแ แขแแแแก แฃแแแแแ แแกแ แฌแแกแ, แ แแแแแแช แแแ แแแฅแแแแก tinyint(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 แแแแแชแแแแ แแแแแแแ. แแแแฎแแแ แแแแแ usr_replica PostgreSQL-แจแ แแแขแแแแขแฃแ แแ แแ แแก แแแแคแแแฃแ แแ แแแฃแแ, แ แแแแ แช แแ แ แกแฅแแแแก แแคแแแแแแ, 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 (แฅแแแแแแแแ) แแ แซแแแแแ แแแแแแแแก แแแ แแแแก, แแแแขแแแก แฌแงแแ แแก แแ แแฎแแแแก แ แแแแแแแก แแแแชแแแแแแแชแแแก. แแ แแฃแแแแขแ create_replica_schema pg_chameleon-แแกแแแแก แฅแแแแก แแแแฃแแแกแฎแแแ แกแฅแแแแก (sch_chameleon) แแ แ แแแแแแแชแแแก แกแฅแแแแก (pgworld_x) PostgreSQL แแแแแชแแแแ แแแแแจแ, แ แแแแ แช แฃแแแ แแแแแแฎแแแแ. แแ แแฃแแแแขแ 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 แแ แแฃแแแแขแแก แแแแแงแแแแแแ.
แ แแแแ แช แฃแแแ แแแฅแแแ, แ แแแแแแแชแแแก แแแแแแฃแ แคแฃแแฅแชแแแก แแแแแขแ แแแแแแ แแแแแแแแ. แแแแ แกแแแแฎแแแแ, แฉแแแ แแแแแฎแฃแแแแ แแ แแชแแกแแก แชแฎแ แแแก Linux ps แแ แซแแแแแแ, แ แแแแ แช แแก แแแฉแแแแแแแ แฅแแแแแ.
แ แแแแแแแชแแ แแ แแแแแแแ แแแแคแแแฃแ แแ แแแฃแแแ, แกแแแแ แแ แจแแแแแแฌแแแแ แแแก แ แแแแฃแ แแ แแจแ, แ แแแแ แช แแก แแแฉแแแแแแแ แฅแแแแแ. แฉแแแ แแฅแแแแ แชแฎแ แแแก, แฉแแแกแแแ แ แแแแแแแแ แฉแแแแฌแแ แ MySQL แแแแแชแแแแ แแแแแจแ แแ แแแแฃแฌแแแแแ sync_tables แแ แแฃแแแแขแก pg_chameleon-แจแ แแแแแแแแแก แแแแแฎแแแแแกแแแแก แแ แฉแแแแฌแแ แแแแก แชแฎแ แแแแก แ แแแแแแแชแแ 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 แแ แซแแแแแแแ แแฅแแแแ แแแกแ แแแกแแกแ แฃแแ. แแ แซแแแแแแแ แฃแแแ แจแแกแ แฃแแแแก แแแก แจแแแแแ, แ แแช แฉแแแ แแแแ แฌแแฃแแแแแแ, แ แแ แงแแแแ แกแแแแแแ แชแฎแ แแแแก แ แแแแแ แแแแแแแ แแแแ แแ แจแแแแแ แแฅแแแแ แแแฃแ แแขแฃแแแ แแแแ แแ แแแฃแแ PostgreSQL แแแแแชแแแแ แแแแ แฌแงแแ แแก แแแแแชแแแแ แแแแแก แแ แ แแแแแแแชแแแก แกแฅแแแแก แแแแแแแแแก แแแ แแจแ (sch_chameleon).
$> 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 แแ แแก แฆแแ แแแแแก แฎแแแกแแฌแงแ, แ แแแแแแช แแแแแ แแแก แแแแแกแแแแ แแแแแชแแแแ แแแแแก แแแแแกแแแแ แกแฎแแ แกแแแ แแ แแแแแชแแแแ แแแแแแ: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird แแ แฆแ แฃแแแแแแแ แแแแแชแแแแ แแแแแก แกแฎแแ แแแกแขแแแชแแแแแ, แแแ., Redshift แแ Azure แแ แ.แจ. แฎแแแแแกแแฌแแแแแ แคแฃแแฅแชแแแแ: แแแแแชแแแแ แแแแแกแ แแ แคแแแแแแแก แกแแแฅแ แแแแแแชแแ, แแแแแชแแแแ แแแแแก แแ แแแแแแแกแขแแ แ แแแแแแแชแแ, แแแคแแแขแ แฃแแ แกแแแฅแ แแแแแแชแแ, แขแ แแแกแคแแ แแแชแแ แแ แกแฎแแ. แแก แแ แแก Java แแแกแขแ แฃแแแแขแ แแ แแแแแฎแแแก JRE แแ JDK-แแก แกแขแแแแแ แขแฃแ แแแแแจแแแแแก (แแแ แกแแ 8.0 แแ แฃแคแ แ แแแฆแแแ). แแฅ แแแแแชแแแแแแก แชแแแแแแแแแ แขแ แแแแ แแแแ แฌแงแแ แแก แแแแแชแแแแ แแแแแจแ แจแแแซแแแแ แฉแแแฌแแ แแก แแ แแแแแแแแแแก แจแแกแแแแแแก แกแแแแแแ แแแแแชแแแแ แแแแแจแ แแแ แขแแแแแก แกแแฎแแ.
SymmetricDS แแแฎแแกแแแแแแแแแ
แแแกแขแ แฃแแแแขแ แแ แแก แแแแขแคแแ แแแกแแแ แแแแแฃแแแแแแแแ, แ แแช แแแจแแแแก, แ แแ แแ แแ แแแข แกแฎแแแแแกแฎแแ แแแแแชแแแแ แแแแแก แจแแฃแซแแแ แแแแแชแแแแ แแแชแแแ.
แ แแแแขแแฃแ แ แแแแแชแแแแ แแแแแแ แกแแแฅแ แแแแแแแฃแแแ แแแแแชแแแแ แชแแแแแแแแก แฉแแแแฌแแ แแแแก แแแแแงแแแแแแ, แฎแแแ แคแแแแฃแ แกแแกแขแแแแแ แแแคแฃแซแแแแฃแแ แแแแแชแแแแ แแแแแแ แแงแแแแแแ แคแแแแแแแก แกแแแฅแ แแแแแแชแแแก.
แแ แแฎแ แแแ แ แแแแแแแชแแ Push แแ Pull แแแแแแแแแก แแแแแงแแแแแแ แฌแแกแแแแก แแแแ แแแแก แกแแคแฃแซแแแแแ.
แแแแแชแแแแ แแแแแชแแแ แจแแกแแซแแแแแแแ แฃแกแแคแ แแฎแ แแ แแแแแแ แแแแขแแ แฃแแแ แแแแแแแก แฅแกแแแแแแ.
แแแขแแแแขแฃแ แ แแฆแแแแแ, แ แแแแกแแช แแแแแซแแแ แแแแแแฎแแแแก แแฃแจแแแแแก แฌแแ แฃแแแขแแแแแแแกแ แแ แแแแคแแแฅแขแแก แแแขแแแแขแฃแ แ แแแแแแ แแแแก แจแแแแแ.
แฆแ แฃแแแแแแ แแแแกแแแแแ แแ แซแแแแ แ แแแคแแ แแแแแแก API-แแแ.
แแแแแแแแ
SymmetricDS แจแแแซแแแแ แแแแคแแแฃแ แแ แแแฃแแ แแงแแก แแ แแแแ แแ แ-แแ แ แแแ แแแแขแจแ:
แกแแแแแแกแขแ แ (แแจแแแแแ) แแแแแซแ, แ แแแแแแช แชแแแขแ แแแแแแแฃแแแ แแแแ แแแแแชแแแก แฃแฌแแแก แแแแแชแแแแ แ แแแแแแแชแแแก แแ แแแแ (แจแแแแ) แแแแแซแก แจแแ แแก, แฎแแแ แจแแแแแแแ แแแแแซแแแก แจแแ แแก แแแแฃแแแแแชแแ แฎแแแแ แแฎแแแแ แแจแแแแแก แแแจแแแแแแ.
แแฅแขแแฃแ แแแแแซแก (Node 1) แจแแฃแซแแแ แ แแแแแแแชแแแกแแแแก แแแฃแแแแจแแ แแแก แกแฎแแ แแฅแขแแฃแ แแแแแซแก (Node 2) แจแฃแแแแแแแก แแแ แแจแ.
แแ แแแ แแแ แแแแขแจแ แแแแแชแแแแ แแแชแแแ แฎแแแแ Push-แแกแ แแ Pull-แแก แแแแแงแแแแแแ. แแ แแแแแแแแจแ แแแแแแฎแแแแแ แแฅแขแแฃแ -แแฅแขแแฃแ แแแแคแแแฃแ แแชแแแก. แแแแแ แแ แฅแแขแแฅแขแฃแ แแก แแฆแฌแแ แแก แซแแแแแ แแแแ แแ แ แแแกแญแแ แแแแ, แแกแ แ แแ, แแแแแแแแ แแฅแแแแ แแแแแแ.
SymmetricDS-แแก แแแกแขแแแแชแแ แซแแแแแ แแแ แขแแแแ: แฉแแแแขแแแ แแแ zip แคแแแแแก แฆแแ แแแแแก แแแ แกแแ
แแแกแแแแซแแแ
vm1
vm2
OS แแแ แกแแ
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64
DB แกแแ แแแ แแก แแแ แกแแ
MySQL 5.7.26
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 แแแแแซแแก แกแแฎแแแ
แแแ แ-000
แแแฆแแแแ-001
แแฅ แฉแแแ แแแแแกแขแแแแ แแแ SymmetricDS-แก /usr/local/symmetric-server-3.9.20-แจแ แแ แแฅ แจแแแแแฎแแแ แกแฎแแแแแกแฎแแ แฅแแแแแ แแฅแขแแ แแแแ แแ แคแแแแแแ. แฉแแแ แแแแแแขแแ แแกแแแก แแแแฃแจแแแแก แแ แซแ แแแแแแก แฅแแแแแ แแฅแขแแ แแแแ. แแแแฃแจแแแแก แแแ แแฅแขแแ แแ แจแแแชแแแก แกแแแแแแแแแ แแแแคแแแฃแ แแชแแแก แคแแแแแแก แแแแแซแแก แแแแกแแแแแแ, แแกแแแ 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-แแ แแแแคแแแฃแ แแ แแแฃแแแ แ แแแแ แช store-001 แแ แแแแแ แฉแแแ แแแแแแแแฃแแแ node.properties แคแแแแจแ แฅแแแแแ. Node store-001 แแฌแแ แแแแแก PostgreSQL แแแแแชแแแแ แแแแแก แแ pgdb_replica แแ แแก แ แแแแแแแชแแแก แแแแแชแแแแ แแแแ. register.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 แชแฎแ แแแแ. แจแแแแแ แจแแฅแแแ-sym-tables-แแก แแแจแแแแ symadmin แแ แซแแแแแแ แฅแแแแก แแแ แแฅแขแแ แแ แชแฎแ แแแแแก, แกแแแแช แจแแแแแฎแแแ แแแแแซแแแก แจแแ แแก แ แแแแแแแชแแแก แฌแแกแแแ แแ แแแแแ แแฃแแแแ. แกแแแแแแแ, แแแแฃแจแแก แแแแแชแแแแแ แแขแแแ แแแแ แชแฎแ แแแแแจแ.
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
แแแแแแแแจแ, แกแแฅแแแแแกแ แแ แแแแแแก_แแแงแแแแแก_แคแแกแแก แชแฎแ แแแแแ แแแขแแแแขแฃแ แแ แแ แแก แแแแคแแแฃแ แแ แแแฃแแ, แ แแแ แแแแแแแ แแแก corp-000-แแแ store-001-แแแ, แฎแแแ แแแงแแแแแก แชแฎแ แแแแแ (sale_transaction แแ sale_return_line_item) แแแขแแแแขแฃแ แแ แแ แแก แแแแคแแแฃแ แแ แแแฃแแ, แ แแแ แแแแแแแ แแแก store-001-แแแ corp-000-แแแ. แแฎแแ แฉแแแ แแฅแแแแ แกแฅแแแแก PostgreSQL แแแแแชแแแแ แแแแแจแ แแแกแแแแซแแ vm2-แแ (store-001), แ แแแ แแแแแแแแแแ แแแ corp-000-แแแ แแแแแชแแแแแแก แแแกแแฆแแแแ.
vm2$> cd /usr/local/symmetric-server-3.9.20/bin
vm2$> ./dbimport --engine store-001 --format XML create_sample.xml
แแแ แฌแแฃแแแแ, แ แแ แจแแแแแฌแแแ, แ แแ MySQL แแแแแชแแแแ แแแแแก vm1-แแ แแฅแแก แชแฎแ แแแแแแก แแแแแแแแแแ แแ SymmetricDS แแแขแแแแแแก แชแฎแ แแแแแ. แแแแแแแแแกแฌแแแแ, แ แแ SymmetricDS แกแแกแขแแแแก แชแฎแ แแแแแ (แแ แแคแแฅแกแแ sym_) แแแแแแแ แฎแแแแแกแแฌแแแแแแ แแฎแแแแ node corp-000-แแ, แ แแแแแ แกแฌแแ แแ แแฅ แแแฃแจแแแ แแ แซแแแแแ create-sym-tables แแ แแแแฃแจแแแแแ แ แแแแแแแชแแแแ. แแ แแแแแชแแแแ แแแแแจแ node store-001 แแฅแแแแ แแฎแแแแ 4 แแแแแแแแ แชแฎแ แแแ แแแแแชแแแแ แแแ แแจแ.
แงแแแแ. แแแ แแแ แแแแแแ แแแแกแแแแก, แ แแ แกแแ แกแแ แแแ แแก แแ แแชแแกแแแ แแแฃแจแแแก แแ แแแ แแแแแซแแ, แ แแแแ แช แแก แแแฉแแแแแแแ แฅแแแแแ.
vm1$> cd /usr/local/symmetric-server-3.9.20/bin
vm1$> sym 2>&1 &
แแฃแ แแแแแก แฉแแแแฌแแ แแแ แแแแแแแแแ แคแแแแก แแฃแ แแแแแก แคแแแแจแ (symmetric.log) แแฃแ แแแแแแแก แกแแฅแแฆแแแแแจแ แแ แแแ แแฅแขแแ แแแจแ, แกแแแแช แแแแแกแขแแแแ แแแฃแแแ SymmetricDS, แแกแแแ แกแขแแแแแ แขแฃแ แแแแแแแแแแจแ. Sym แกแแ แแแ แแก แแแแชแแ แแแ แแฎแแ แจแแกแแซแแแแแแแ node store-001-แแ.
vm2$> cd /usr/local/symmetric-server-3.9.20/bin
vm2$> sym 2>&1 &
แแฃ แแฅแแแ แแฌแแ แแแแแ sym แกแแ แแแ แแก แแ แแชแแกแก vm2 แฐแแกแขแแ, แแก แแกแแแ แจแแฅแแแแก SymmetricDS แแแขแแแแแแก แชแฎแ แแแแแก PostgreSQL แแแแแชแแแแ แแแแแจแ. แแฃ แแฅแแแ แแฌแแ แแแแแ sym แกแแ แแแ แแก แแ แแชแแกแก แแ แแแ แแแแแซแแ, แแกแแแ แแแแ แแแแแชแแแก แฃแฌแแแแ แแ แแแแแแแก, แ แแแ แแแแแแแ แแ แแแแแชแแแแแ corp-000-แแแ store-001-แแแ. แแฃ แ แแแแแแแแ แฌแแแแก แจแแแแแ แแแแแแแแแแฎแแแ แแแฎแแแ แชแฎแ แแแก แแ แแแ แแฎแ แแแแ, แแแแแแแฎแแแ, แ แแ แ แแแแแแแชแแ แฌแแ แแแขแแแฃแแ แแงแ. แแ แจแแแแซแแแแ แแแแแแแแแ bootstrap node store-4-แจแ corp-001-แแแ แจแแแแแแ แแ แซแแแแแแ.
vm1$> ./symadmin --engine corp-000 reload-node 001
แแ แแขแแแแ, แแฎแแแ แฉแแแแฌแแ แ แฉแแกแแฃแแแ แแแแแแแขแแก แชแฎแ แแแจแ MySQL แแแแแชแแแแ แแแแแจแ node corp-000-แแ (แแแกแแแแซแแแ: vm1) แแ แจแแแแซแแแแ แจแแแแแฌแแแ แแแกแ แ แแแแแแแชแแ PostgreSQL แแแแแชแแแแ แแแแแจแ node store-001-แแ (แแแกแแแแซแแแ: vm2). แฉแแแ แแฎแแแแแ Pull แแแแ แแชแแแก แแแแแชแแแแแแก แแแแแกแแขแแแแ corp-000-แแแ 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)
Push แแแแ แแชแแแก แจแแกแแกแ แฃแแแแแแ แแแแแชแแแแแแก store-001-แแแ corp-000-แจแ แแแแแกแแขแแแแ, แฉแแแ แฉแแแกแแแแ แฉแแแแฌแแ แก sale_transaction แชแฎแ แแแจแ แแ แแแแแฌแแแแ, แ แแ แ แแแแแแแชแแ แฌแแ แแแขแแแแ แแแกแ แฃแแแ.
แฉแแแ แแฎแแแแแ แแแแแแแแแแแก แชแฎแ แแแแแแก แแ แแฎแ แแแ แ แแแแแแแชแแแก แฌแแ แแแขแแแฃแ แแแงแแแแแแก MySQL แแ PostgreSQL แแแแแชแแแแ แแแแแแก แจแแ แแก. แแฎแแแ แแแแฎแแแ แแแแแก แชแฎแ แแแแแแกแแแแก แ แแแแแแแชแแแก แแแกแแงแแแแแแแ, แแแฐแงแแแแ แแ แแแแแฏแแแก: แฉแแแ แแฅแแแแ แชแฎแ แแแก t1 แแแแแแแแแ แแ แแแแแแคแแแฃแ แแ แแแ แแแกแ แ แแแแแแแชแแแก แฌแแกแแแก แจแแแแแแแแแ แแ. แแ แแแแ แฉแแแ แแแแแแคแแแฃแ แแ แแแ แแฎแแแแ แ แแแแแแแชแแแก corp-000-แแแ 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)
แจแแแแแ แแแแคแแแฃแ แแชแแแก แแชแแแแแแ แกแฅแแแแก แชแแแแแแแแก แจแแกแแฎแแ, แแแฃ แแฎแแแ แชแฎแ แแแแก แแแแแขแแแ, symadmin แแ แซแแแแแแก แแแแแงแแแแแแ sync-triggers แแ แแฃแแแแขแแ, แ แแแแแแช แฎแแแแฎแแ แฅแแแแก แขแ แแแแ แแแก แชแฎแ แแแแก แแแแแแ แขแแแแแแก แแแแแกแแฎแฃแแแแแก แแแแแแ. send-schema แจแแกแ แฃแแแแฃแแแ แกแฅแแแแก แชแแแแแแแแแแก แแแกแแแแแแแแ node store-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 แแกแ แฃแแแแก. แ แแแแแแแชแแ แแแแแกแแแแ แแแแแชแแแแ แแแแแก แจแแ แแก, แจแแกแแแแแแกแแ, แแก แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แกแฎแแแแแกแฎแแ แกแชแแแแ แแกแแแแก, แแแ แจแแ แแก แแแแ แแชแแ, แแแแ แแชแแ, แแแแแฌแแแแแ, แคแแแขแ แแชแแ แแ แแแแแชแแแแ แขแ แแแกแคแแ แแแชแแ แแแแขแคแแ แแแแแ.
แแแแแแแแ แแคแฃแซแแแแ แแคแแชแแแแฃแ แแแ แก
แฌแงแแ แ: www.habr.com