เบเปเบญเบเบเบฐเบญเบฐเบเบดเบเบฒเบเบเบฒเบเบเปเบฒเบฅเบญเบเปเบเบเบเปเบฒเบกเบฅเบฐเบซเบงเปเบฒเบ PostgreSQL เปเบฅเบฐ MySQL, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบงเบดเบเบตเบเบฒเบเบชเปเบฒเบเบเบฒเบเบเปเบฒเบฅเบญเบเปเบเบเบเปเบฒเบกเบฅเบฐเบซเบงเปเบฒเบเบชเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบ. เปเบเบเบเบปเบเบเบฐเบเบด, เบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเบทเบเบเปเบฒเบฅเบญเบเปเบเบเบเปเบฒเบกเปเบกเปเบเปเบญเบตเปเบเบงเปเบฒ homogeneous, เปเบฅเบฐเบกเบฑเบเปเบเบฑเบเบงเบดเบเบตเบเบตเปเบชเบฐเบเบงเบเปเบเบเบฒเบเปเบเบทเปเบญเบเบเปเบฒเบเบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ RDBMS เบซเบเบถเปเบเปเบเบซเบฒเบญเบทเปเบ.
เบเบฒเบเบเปเปเบกเบนเบ PostgreSQL เปเบฅเบฐ MySQL เปเบเบเบเบปเปเบงเปเบเปเบกเปเบเบเบทเบงเปเบฒเบกเบตเบเบงเบฒเบกเบเปเบฝเบงเบเปเบญเบ, เปเบเปเบเปเบงเบเบเบฒเบเบเบฐเบซเบเบฒเบเปเบเบตเปเบกเปเบเบตเบกเบเบงเบเปเบเบปเบฒเบชเบฐเปเบซเบเบตเบเบงเบฒเบกเบชเบฒเบกเบฒเบ NoSQL. เปเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเบฒเบเบเปเบฒเบฅเบญเบเบฅเบฐเบซเบงเปเบฒเบ PostgreSQL เปเบฅเบฐ MySQL เบเบฒเบเบเบฑเบเบชเบฐเบเบฐ DBMS เบเบตเปเบเปเบฝเบงเบเปเบญเบ.
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบญเบฐเบเบดเบเบฒเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฒเบเปเบเบเบฑเบเบซเบกเบปเบ, เบเบฝเบเปเบเปเบซเบผเบฑเบเบเบฒเบเบเบทเปเบเบเบฒเบเปเบเบทเปเบญเปเบซเปเบเปเบฒเบเปเบเปเบฎเบฑเบเบเบงเบฒเบกเบเบดเบเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเปเบฒเบฅเบญเบเบฅเบฐเบซเบงเปเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบ, เบเปเปเบเบต, เบเปเปเบเปเบฒเบเบฑเบเปเบฅเบฐเบเปเบฅเบฐเบเบตเบเบฒเบเบเปเบฒเปเบเป.
เปเบเบเบเบปเบเบเบฐเบเบด, เบเบฒเบเบเปเบฒเบฅเบญเบเบฅเบฐเบซเบงเปเบฒเบเบชเบญเบเปเบเบตเบเปเบงเบตเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเบทเบเบฑเบเปเบกเปเบเปเบฎเบฑเบเบขเบนเปเปเบเปเบซเบกเบเบเบฒเบเบชเบญเบเบซเบผเบทเปเบเปเบเบฒเบเบชเบญเบเบเบฒเบกเบฅเบฐเบซเบงเปเบฒเบเปเบกเปเบเบปเบ (เบเบนเปเปเบเบตเบเปเบเป, เปเบกเปเบเบปเบ, เบซเบผเบทเปเบฎเบฑเบเบงเบฝเบ) เปเบฅเบฐเบเบฒเบ (เบเบนเปเบเบญเบ, เบชเบฐเปเบเบเบเบฒเบ, เบซเบผเบทเบเบปเบงเบเบฑเปเบเบเบปเบงเบเบต). เบเบธเบเบเบฐเบชเบปเบเบเบญเบเบเบฒเบเบเปเบฒเบฅเบญเบเปเบกเปเบเปเบเบทเปเบญเบชเบฐเบซเบเบญเบเบเบฒเบเบชเปเบฒเปเบเบปเบฒเปเบเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบดเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบเบเบปเปเบเบชเบฐเบเบฑเบเปเบเบเปเบฒเบเบชเปเบฒเบฅเบญเบ. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเปเปเบกเบนเบเบเบทเบเปเบญเบเบเบฒเบเปเบกเปเปเบเบเปเบเบซเบฒเบชเปเบฒเบฅเบญเบ, เบเบฑเปเบเปเบกเปเบ, เบเบฒเบเบเบฒเบเปเบเบทเปเบญเบเปเบซเบงเปเบเบชเบนเปเบเบปเบงเบเบฑเปเบเบเบปเบงเบเบต, เปเบเบฒเบฐเบงเปเบฒเบเบฒเบเบเปเบฒเบฅเบญเบเปเบกเปเบเบเบฐเบเบดเบเบฑเบเปเบเบเบดเบเบเบฒเบเบเบฝเบงเปเบเบปเปเบฒเบเบฑเปเบ. เปเบเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเปเบเบเปเบฒ replication เบฅเบฐเบซเบงเปเบฒเบเบชเบญเบเบเบฒเบเบเปเปเบกเบนเบเปเบเบเบฑเบเบชเบญเบเบเบดเบเบเบฒเบ, เบเบฑเปเบเบเบฑเปเบเบเปเปเบกเบนเบเปเบเปเบเบทเบเปเบญเบเบเบฒเบ slave เบเบฑเบเปเบกเปเบเบปเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบกเบตเบเบฒเบเปเบเบทเปเบญเบเปเบซเบง. เบเบฑเบเบซเบกเบปเบเบเบตเป, เบฅเบงเบกเบเบฑเบเบเบฒเบเบเปเบฒเบฅเบญเบเปเบเบ cascading, เปเบกเปเบเปเบเบฑเบเปเบเปเบเปเบฅเบฐเบซเบงเปเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบชเบญเบเบซเบผเบทเบซเบผเบฒเบเบเบงเปเบฒเบเบฑเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ Active-active เบซเบผเบท active-passive เปเบกเปเบเบเบถเปเบเบเบฑเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบ, เบเบงเบฒเบกเบเปเบญเบกเบเบญเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบฑเปเบเบเปเบฒเบงเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบทเปเบญเบเบเบปเปเบเบซเบผเบทเบเบฒเบเบเปเบฒเปเบเปเบเบฒเบเปเบเปเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเบญเบเปเบฅเบฐเบเบฒเบเบเปเบฒเบเบตเปเบกเบตเบขเบนเป.
เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบญเบฐเบเบดเบเบฒเบเปเบกเปเบเปเบเบฑเบเปเบเปเบเปเบฅเบฐเบซเบงเปเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เปเบเบตเบเปเบงเบตเบชเบฒเบกเบฒเบเบเบทเบเบเบฑเปเบเบเปเบฒเปเบซเปเบเบญเบกเบฎเบฑเบเบเปเปเบกเบนเบเบเบตเปเบเบณเบฅเบญเบเบเบฒเบเปเบเบตเบเปเบงเบตเบเบฒเบเบเปเปเบกเบนเบเบญเบทเปเบ เปเบฅเบฐเบเบฑเบเบฎเบฑเบเบชเบฒเบเบฒเบเบเปเบฒเบเบเบฒเบเปเบเบเบชเบปเบเปเบเบญเบเบเปเปเบกเบนเบเบเบตเปเบชเบณเปเบเบปเบฒเปเบงเป. MySQL เปเบฅเบฐ PostgreSQL เบชเบฐเปเบซเบเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบซเบผเบปเปเบฒเบเบตเปเบชเปเบงเบเปเบซเบเปเบขเบนเปเปเบเปเบฎเบทเบญเบเบซเบผเบทเปเบเบเบเปเบฒเบเบชเปเบงเบเบเบฐเบซเบเบฒเบเบเบญเบเบเบฒเบเบชเปเบงเบเบเบตเบชเบฒเบก, เบฅเบงเบกเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเบฑเบเบเบถเบเบเบนเป, เบเบฒเบเบฅเบฑเบญเบเปเบเปเบ, เปเบฅเบฐเบงเบดเบเบตเบเบฒเบเบเบตเปเบญเบตเบเปเบชเปเปเบเบง.
เบเบฒเบเบเปเบฒเบฅเบญเบเปเบเบเบเปเบฒเบกเบฅเบฐเบซเบงเปเบฒเบ MySQL เปเบฅเบฐ PostgreSQL เปเบกเปเบเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเปเบฒเบเบซเบเบถเปเบเบเบฑเปเบเบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบซเบเบถเปเบเปเบเบซเบฒเบญเบทเปเบ. เบเบฒเบเบเปเปเบกเบนเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบเปเปเบเปเบเบเบญเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเปเบเบทเปเบญเบกเปเบเบเบเบงเบเบกเบฑเบเปเบเบเบเบปเบ. เปเบเบทเปเบญเบชเปเบฒเบเบเบฒเบเปเบฅเบเบเปเบฝเบเบเปเปเบกเบนเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบกเบทเปเบซเบผเปเบเปเบเบตเบเบเบฒเบเบเบญเบ, เบเบปเบงเบขเปเบฒเบ pg_chameleon.
pg_chameleon เปเบกเปเบเบซเบเบฑเบ
pg_chameleon เปเบกเปเบเบฅเบฐเบเบปเบเบเบฒเบเบเปเบฒเบฅเบญเบเบเบฒเบ MySQL เบเบฑเบ PostgreSQL เปเบ Python 3. เบกเบฑเบเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ mysql-replication เปเบซเบผเปเบเปเบเบตเบ, เบเบฑเบเบขเบนเปเปเบ Python. เบฎเบนเบเบเบฒเบเปเบเบงเบเบทเบเบชเบฐเบเบฑเบเบญเบญเบเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบ MySQL เปเบฅเบฐเปเบเบฑเบเปเบงเปเปเบเบฑเบเบงเบฑเบเบเบธ JSONB เปเบเบเบฒเบเบเปเปเบกเบนเบ PostgreSQL, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบญเบเบฅเบฐเบซเบฑเบเปเบเบเบเบฑเบเบเบฑเบ pl/pgsql เปเบฅเบฐเบเบฐเบฅเบดเบเบเบทเบเปเบซเบกเปเปเบเบเบฒเบเบเปเปเบกเบนเบ PostgreSQL.
เบเบธเบเบเบฐเบชเบปเบกเบเบฑเบเบเบญเบ pg_chameleon
schemas MySQL เบซเบผเบฒเบเบญเบฑเบเบเบฒเบเบเบธเปเบกเบเบฝเบงเบเบฑเบเบชเบฒเบกเบฒเบ replicated เบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ PostgreSQL เปเบเบปเปเบฒเบซเบกเบฒเบเบเบฝเบงเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบซเบเบถเปเบเบซเบฒเบซเบผเบฒเบ.
เบเบทเป schema เบเบตเปเบกเบฒ เปเบฅเบฐเปเบเบปเปเบฒเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบเบทเบเบฑเบเปเบเป.
เบเปเปเบกเบนเบเบเบฒเบเบเปเบฒเบฅเบญเบเบชเบฒเบกเบฒเบเบเบถเบเบกเบฒเบเบฒเบเบเบฒเบเบเปเบฒเบฅเบญเบ MySQL เปเบเบ cascaded.
เบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบฅเบทเปเบกเบเบทเบเบซเบผเบทเบชเปเบฒเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบกเปเบเปเบเปเบเบทเบเบเบปเบเปเบงเบฑเปเบ.
เปเบเปเบฅเบฐเบซเบเปเบฒเบเบตเปเบเบฒเบเบเปเบฒเบฅเบญเบเบเบทเบเบเบงเบเบเบธเบกเปเบเบ daemon.
เบเบงเบเบเบธเบกเบเปเบฒเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบตเปเบญเบตเบเปเบชเป YAML เปเบฅเบฐเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ.
เบเบปเบงเบขเปเบฒเบ:
เปเบเบปเปเบฒเบเบฒเบ
vm1
vm2
เบฅเบธเปเบ OS
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64
DB เปเบงเบตเบเบฑเปเบเปเบเบตเบเปเบงเบต
MySQL 5.7.26
PostgreSQL 10.5
เบเบญเบ DB
3306
5433
เบเบตเปเบขเบนเป IP
192.168.56.102
192.168.56.106
เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบ, เบเบฐเบเบฝเบกเบญเบปเบเบเบฐเบเบญเบเบเบตเปเบเปเบฒเปเบเบฑเบเบเบฑเบเบซเบกเบปเบเปเบเบทเปเบญเบเบดเบเบเบฑเปเบ pg_chameleon. เบเบปเบงเบขเปเบฒเบเบเบตเปเบเบดเบเบเบฑเปเบ Python 3.6.8, เปเบเบดเปเบเบชเปเบฒเบเปเบฅเบฐเปเบเบตเบเปเบเปเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก virtual.
$> 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 เบชเปเบฒเปเบฅเบฑเบเปเบฅเปเบง, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฎเบฑเบเบชเปเบฒเปเบฅเบฑเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญ, เปเบเบฑเปเบ: เบเบฒเบเบชเปเบฒเบเปเบฅเบฐเปเบเบตเบเปเบเปเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก virtual. เบเบญเบเบเบฒเบเบเบฑเปเบ, เปเบกเบเบนเบ 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 (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 เบเบฐเปเบเบ, เบเปเบญเบเบเบตเป เบเบธเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบเบเบฒเบ overriding เบเบฐเปเบเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบ replication. เบเบปเบงเบขเปเบฒเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเปเบเบฑเบเบเบฐเปเบเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบ overriding เบเบตเปเบเปเบฝเบ tinyint(1) เปเบเบฑเบเบเปเบฒ boolean. เปเบเบเบฒเบเบเปเปเปเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเปเบเบปเปเบฒเบซเบกเบฒเบ. เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบตเปเปเบกเปเบเบเบฒเบเบเปเปเบกเบนเบ 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 เปเบเปเบเบทเบเบเบฑเปเบเบเปเบฒเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบฑเบเปเบเบปเปเบฒเบเบญเบเบชเบญเบ schemas, 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 node:
$> psql -p 5433 -U usr_replica -h 192.168.56.106 db_replica
เบชเบฒเบกเบเปเบฒเบชเบฑเปเบ pg_chameleon (chameleon) เบเปเปเปเบเบเบฐเบเบฝเบกเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก, เปเบเบตเปเบกเปเบซเบผเปเบ, เปเบฅเบฐเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเปเบฒเบฅเบญเบ. เบเบฒเบเปเบเปเบเบฝเบ create_replica_schema เบเบฑเบ pg_chameleon เบชเปเบฒเบ schema เปเบฅเบตเปเบกเบเบปเปเบ (sch_chameleon) เปเบฅเบฐ schema replication (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 argument, เปเบฅเบฐเบชเบฒเบกเบฒเบเปเบเบดเปเบเบเปเปเบเบดเบเบเบฒเบเปเบเปเปเบเบเปเบเป show_errors argument.
เบเบฑเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบเปเบฒเบงเปเบฅเปเบง, เปเบเปเบฅเบฐเบซเบเปเบฒเบเบตเปเบเบฒเบเบเปเบฒเบฅเบญเบเบเบทเบเบเบงเบเบเบธเบกเปเบเบ daemon. เปเบเบทเปเบญเปเบเบดเปเบเบเบงเบเบกเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบชเบญเบเบเบฒเบกเบเบฒเบเบฐเบฅเบฒเบเบเบฐเบเบงเบเบเบฒเบเบเปเบงเบเบเปเบฒเบชเบฑเปเบ Linux ps, เบเบฑเปเบเบเบตเปเบชเบฐเปเบเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป.
Replication เบเปเปเปเบเปเบเบทเบเบเบดเบเบฒเบฅเบฐเบเบฒ configured เบเบปเบเบเปเบงเบฒเบเบงเบเปเบฎเบปเบฒเบเบปเบเบชเบญเบเบกเบฑเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบดเบ, เบเบฑเปเบเบเบตเปเบชเบฐเปเบเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป. เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบ, เปเบชเปเบชเบญเบเบชเบฒเบกเบเบฑเบเบเบถเบเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบเปเปเบกเบนเบ MySQL, เปเบฅเบฐเปเบเบซเบฒ sync_tables argument เปเบ pg_chameleon เปเบเบทเปเบญเบเบฑเบเบเบธเบ daemons เปเบฅเบฐ replicate เบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบกเบตเบเบฑเบเบเบถเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ 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 เบเปเปเปเบเบเบตเปเบเบฐเปเบเบฑเบเบเบธเบเบชเบดเปเบเบชเบธเบเบเบญเบเบกเบฑเบ. เบเปเบฒเบชเบฑเปเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบซเบผเบฑเบเบเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเบงเปเบฒเปเบเบงเบเบญเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบฑเบเบซเบกเบปเบเปเบเปเบเบทเบ replicated, เปเบฅเบฐเบเบปเบเปเบเปเบฎเบฑเบเบเบฐเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ PostgreSQL เบเบตเปเบเบทเบเบเบปเบเบเปเบฒเบเบขเปเบฒเบเบฅเบฐเบกเบฑเบเบฅเบฐเบงเบฑเบเปเบเบเบเปเปเบกเบตเบเบฒเบเบญเปเบฒเบเบญเบตเบเปเบเบดเบเบเบฒเบเบเปเปเบกเบนเบเปเบซเบผเปเบเบซเบผเบทเปเบเบเบเบฒเบ replication (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. เบเบฑเปเบเบเบฑเปเบ, เบกเบฑเบเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบงเบปเบเบเบญเบ "active-passive" เปเบเบปเปเบฒเบเบฑเปเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ MySQL เปเบเบปเปเบฒเบเบฑเปเบ, เปเบฅเบฐเบเบฒเบเบฎเบญเบเบฎเบฑเบเบเบฒเบเบเปเปเบกเบนเบ PostgreSQL เปเบเบฑเบเปเบซเบผเปเบเบเบฝเบเปเบเปเบเบฒเบเบเบปเบเบฅเบญเบเปเบฅเบฐเบกเบตเบเปเปเบเปเบฒเบเบฑเบ (เบฎเบฝเบเบฎเบนเปเปเบเบตเปเบกเปเบเบตเบก
เบเบปเบเบเบฒเบเบเบปเปเบเบซเบฒเบชเปเบฒเบฅเบฑเบ pg_chameleon
เบงเบดเบเบตเบเบฒเบเบเปเบฒเบฅเบญเบเปเบ pg_chameleon เปเบกเปเบเบเบตเปเบฅเบตเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบเบฒเบ MySQL เปเบ PostgreSQL. เบเบฒเบเบซเบผเบธเบเบฅเบปเบเบเบตเปเบชเปเบฒเบเบฑเบเปเบกเปเบเบงเปเบฒเบเบฒเบเบเปเบฒเบฅเบญเบเปเบกเปเบเบเบฝเบเปเบเปเบงเบดเบเบตเบเบฝเบง, เบเบฑเปเบเบเบฑเปเบเบเบนเปเบเปเบฝเบงเบเบฒเบเบเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบเปเปเบซเบเปเบฒเบเบฐเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเปเบเปเบกเบฑเบเบชเปเบฒเบฅเบฑเบเบชเบดเปเบเบญเบทเปเบเบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเบฒเบเปเบเบทเปเบญเบเบเปเบฒเบ. เปเบเปเบเบฑเบเบซเบฒเบเบญเบเบเบฒเบเบเปเบฒเบฅเบญเบเปเบเบเบเบฝเบงเบชเบฒเบกเบฒเบเปเบเปเปเบเปเบเปเบเปเบงเบเปเบเบทเปเบญเบเบกเบทเปเบซเบผเปเบเปเบเบตเบเบญเบทเปเบ - SymmetricDS.
เบญเปเบฒเบเปเบเบตเปเบกเปเบเบตเบกเปเบเปเบญเบเบฐเบชเบฒเบเบเบฒเบเบเบฒเบ
เบเบฒเบเบฅเบงเบกเบเบญเบ SymmetricDS
SymmetricDS เปเบเบฑเบเปเบเบทเปเบญเบเบกเบทเปเบซเบผเปเบเปเบเบตเบเบเบตเป replicates เบเบฒเบเบเปเปเบกเบนเบเปเบเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเบเบปเปเบงเปเบเบญเบทเปเบเป: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird เปเบฅเบฐเบเบปเบงเบขเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบเบฑเบเบญเบทเปเบเป, e.g. Redshift, เปเบฅเบฐ Azure, เปเบฅเบฐเบญเบทเปเบเป เบเบธเบเบเบฐเบชเบปเบกเบเบฑเบเบเบตเปเบกเบตเบขเบนเป: เบเบฒเบเบเปเปเบกเบนเบเปเบฅเบฐเปเบเบฅเป synchronization, multi-master database replication, filtered synchronization, transformation เปเบฅเบฐเบญเบทเปเบเป. เบเบตเปเปเบกเปเบเปเบเบทเปเบญเบเบกเบท Java เปเบฅเบฐเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบฒเบเบเปเบญเบเบกเบฒเบเบเบฐเบเบฒเบเบเบญเบ JRE เบซเบผเบท JDK (เบฎเบธเปเบ 8.0 เบซเบผเบทเบชเบนเบเบเบงเปเบฒ). เบเบตเปเบเบตเป, เบเปเปเบกเบนเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบปเบเบเบฐเบเบปเบเบเปเปเปเบเบเบฒเบเบเปเปเบกเบนเบเปเบซเบผเปเบเบชเบฒเบกเบฒเบเบเบทเบเบเบฑเบเบเบถเบเปเบฅเบฐเบเบทเบเบชเบปเปเบเปเบเบซเบฒเบเบฒเบเบเปเปเบกเบนเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเปเบเบฎเบนเบเปเบเบเบเบญเบ batches.
เบฅเบฑเบเบชเบฐเบเบฐ SymmetricDS
เปเบเบทเปเบญเบเบกเบทเปเบกเปเบเปเบงเบเบตเปเบญเบเบฐเบฅเบฒเบ, เบเบถเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบชเบญเบเบซเบผเบทเบซเบผเบฒเบเบเบงเปเบฒเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบฅเบเบเปเบฝเบเบเปเปเบกเบนเบ.
เบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบทเบ synchronized เปเบเบเปเบเปเบเบฑเบเบเบถเบเบเบฒเบเบเปเบฝเบเปเบเบเบเปเปเบกเบนเบ, เปเบเบเบฐเบเบฐเบเบตเปเบเบฒเบเบเปเปเบกเบนเบเบฅเบฐเบเบปเบเปเบเบฅเปเปเบเป synchronization เปเบเบฅเป.
เบเบฒเบเบเปเบฒเบฅเบญเบเปเบเบเบชเบญเบเบเบฒเบเปเบเบเปเบเปเบงเบดเบเบตเบเบฒเบ Push เปเบฅเบฐ Pull เปเบเบเบญเบตเบเปเบชเปเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเป.
เบเบฒเบเปเบญเบเบเปเปเบกเบนเบเปเบกเปเบเปเบเบฑเบเปเบเปเบเปเบเปเบฒเบเปเบเบทเบญเบเปเบฒเบเบเบงเบฒเบกเบเบญเบเปเบ เปเบฅเบฐ เปเบเบเบงเบดเบเบเปเปเบฒ.
เบเบฒเบเบเบทเปเบเบเบปเบงเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบกเบทเปเบญ nodes เบเปเบฒเปเบเบตเบเบเบฒเบเบเปเปเบซเบผเบฑเบเบเบฒเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบผเบงเปเบฅเบฐเบเบฒเบเปเบเปเปเบเบเปเปเบเบฑเบเปเบเปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ.
Cloud เบเบตเปเปเบเบปเปเบฒเบเบฑเบเปเบเป เปเบฅเบฐ APIs เบชเปเบงเบเบเบฐเบซเบเบฒเบเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบ.
เบเบปเบงเบขเปเบฒเบ:
SymmetricDS เบชเบฒเบกเบฒเบเบเบทเบเบเบฑเปเบเบเปเบฒเปเบเบซเบเบถเปเบเปเบเบชเบญเบเบงเบดเบเบต:
เปเบกเปเบเบปเบ (เบเปเปเปเบกเป) node เบเบตเปเบเบฐเบชเบฒเบเบเบฒเบเบชเบนเบเบเบฒเบเบเบฒเบเบเปเบฒเบฅเบญเบเบเปเปเบกเบนเบเบฅเบฐเบซเบงเปเบฒเบเบชเบญเบ slave (child) nodes, เปเบฅเบฐเบเบฒเบเบชเบทเปเบชเบฒเบเบฅเบฐเบซเบงเปเบฒเบ node เบเบญเบเปเบเบฑเบเบเปเบญเบเปเบเบตเบเบเบถเปเบเปเบเบเบเปเบฒเบเบเปเปเปเบกเปเปเบเบปเปเบฒเบเบฑเปเบ.
node เบเบตเปเปเบเปเบงเบฝเบ (Node 1) เบชเบฒเบกเบฒเบเบเบดเบเบเปเปเบชเบทเปเบชเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบฅเบญเบเบเบฑเบ node เบญเบทเปเบเบเบตเปเปเบเปเบงเบฝเบ (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
PostgreSQL 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 node
Corp-000
เบฎเปเบฒเบ-001
เปเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบดเบเบเบฑเปเบ SymmetricDS เปเบ /usr/local/symmetric-server-3.9.20, เปเบฅเบฐเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเปเบฒเบเปเปเบฅเบฐเปเบเบฅเปเบเบฐเบเบทเบเปเบเบฑเบเปเบงเปเบขเบนเปเบเบตเปเบเบฑเปเบ. เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเปเบเบเบปเบงเบเบตเปเบเบญเบเบเปเบญเบเบเบญเบเปเบเบทเปเบญเบเบเบฑเบเปเบฅเบฐเบเบปเบงเบขเปเบฒเบ. เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบปเบงเบขเปเบฒเบเบกเบตเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบงเบขเปเบฒเบเบเบตเปเบกเบตเบเบธเบเบชเบปเบกเบเบฑเบเบเบญเบ node, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบปเบงเบขเปเบฒเบ SQL scripts เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบเปเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบขเปเบฒเบเปเบงเบงเบฒ.
เปเบเบเบฑเบเบเบตเบเบปเบงเบขเปเบฒเบเบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเบชเบฒเบกเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบกเบตเบเบธเบเบชเบปเบกเบเบฑเบเบเบญเบ node - เบเบทเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเบเบญเบ node เปเบเปเบเบเบเบฒเบเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบ.
corp-000.properties
store-001.properties
store-002.properties
SymmetricDS เบกเบตเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบเปเบฒเปเบเบฑเบเบเบฑเบเบซเบกเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเบญเบเปเบเบ 3-node เบเบทเปเบเบเบฒเบ (เบเบฒเบเปเบฅเบทเบญเบ 1), เปเบฅเบฐเปเบเบฅเปเบเบฝเบงเบเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเบญเบเปเบเบ 2-node (เบเบฒเบเปเบฅเบทเบญเบ 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
node เปเบ SymmetricDS configuration เปเบญเบตเปเบเบงเปเบฒ corp-000, เปเบฅเบฐเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฒเบเบเปเปเบกเบนเบเปเบกเปเบเบเบฑเบเบเบฒเบเปเบเบเปเบเปเบงเบต mysql jdbc, เปเบเบดเปเบเปเบเปเบชเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเปเบฒเบเปเบเบดเบเปเบฅเบฐเบเปเปเบกเบนเบเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ. เบเบงเบเปเบฎเบปเบฒเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ replica_db เปเบฅเบฐเบเบฒเบเบฐเบฅเบฒเบเบเบฐเบเบทเบเบชเปเบฒเบเบเบทเปเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบชเปเบฒเบ schema. sync.url เบชเบฐเปเบเบเบเปเบญเบเบเบตเปเบเบฐเบเบดเบเบเปเปเบเบฑเบ node เบชเปเบฒเบฅเบฑเบเบเบฒเบ synchronization.
Node 2 เปเบ host vm2 เบเบทเบเบเบฑเปเบเบเปเบฒเปเบเบฑเบ store-001 เปเบฅเบฐเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเปเบกเปเบเบฅเบฐเบเบธเปเบงเปเปเบเปเบเบฅเป node.properties เบเปเบฒเบเบฅเบธเปเบกเบเบตเป. Node store-001 เปเบฅเปเบเบเบฒเบเบเปเปเบกเบนเบ PostgreSQL เปเบฅเบฐ pgdb_replica เปเบกเปเบเบเบฒเบเบเปเปเบกเบนเบ replication. 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 เบเบตเปเบชเปเบฒเปเบฅเบฑเบเบกเบตเบเบฒเบฅเบฒเบกเบดเปเบเบตเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเปเบฒเบฅเบญเบเปเบเบเบชเบญเบเบเบฒเบเบฅเบฐเบซเบงเปเบฒเบเบชเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบ (เบชเบญเบเปเบซเบเบ). เบเบฑเปเบเบเบญเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเปเบกเปเบเบเบฐเบเบดเบเบฑเบเปเบ host vm1 (corp-000), เปเบเบดเปเบเบเบฐเบชเปเบฒเบ schema เบเบปเบงเบขเปเบฒเบเบเบตเปเบกเบต 4 เบเบฒเบเบฐเบฅเบฒเบ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบฅเปเบ create-sym-tables เบเปเบงเบเบเปเบฒเบชเบฑเปเบ symadmin เบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบเบปเบเบฅเบฐเบเบฝเบเปเบฅเบฐเบเบดเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเบฅเบญเบเบฅเบฐเบซเบงเปเบฒเบ nodes เบเบฐเบเบทเบเปเบเบฑเบเปเบงเป. เบชเบธเบเบเปเบฒเบ, เบเปเปเบกเบนเบเบเบปเบงเบขเปเบฒเบเบเบทเบเปเบซเบฅเบเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบฐเบฅเบฒเบ.
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
เปเบเบเบปเบงเบขเปเบฒเบ, เบฅเบฒเบเบเบฒเบเปเบฅเบฐเบเบฒเบเบฐเบฅเบฒเบ item_selling_price เปเบเปเบเบทเบเบเบฑเปเบเบเปเบฒเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบทเปเบญ replicate เบเบฒเบ corp-000 เบเบฑเบ store-001, เปเบฅเบฐเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเบฒเบ (sale_transaction เปเบฅเบฐ sale_return_line_item) เปเบเปเบเบทเบเบเบฑเปเบเบเปเบฒเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบทเปเบญ replicate เบเบฒเบ store-001 เบซเบฒ corp-000. เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบ schema เปเบเบเบฒเบเบเปเปเบกเบนเบ PostgreSQL เปเบ host 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 เบเบฒเบเบฐเบฅเบฒเบเบเบปเบงเบขเปเบฒเบเบเบตเปเบเปเปเบกเบตเบเปเปเบกเบนเบ.
เบเบฑเบเปเบปเบ. เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเปเบกเปเบเบเปเบญเบกเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฐเบเบงเบเบเบฒเบเปเบเบตเบเปเบงเบต sym เปเบเบเบฑเบเบชเบญเบ nodes เบเบฑเปเบเบเบตเปเบชเบฐเปเบเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป.
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 เปเบเบเบฑเบเบชเบญเบ nodes, เบเบงเบเปเบเบปเบฒเบเบฐเบชเบฒเบเบเบฒเบเบเบฑเบเบเบฑเบเปเบฅเบฐเบเบฑเบเปเบเบทเปเบญ replicate เบเปเปเบกเบนเบเบเบฒเบ corp-000 เบเบฑเบ store-001. เบเปเบฒเบซเบผเบฑเบเบเบฒเบเบชเบญเบเบชเบฒเบกเบงเบดเบเบฒเบเบตเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบญเบเบเบฒเบกเบเบฑเบเบซเบกเบปเบ 4 เบเบฒเบเบฐเบฅเบฒเบเบเบฑเบเบชเบญเบเบเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบซเบฑเบเบงเปเบฒเบเบฒเบเบเปเบฒเบฅเบญเบเปเบเปเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ. เบซเบผเบทเบเปเบฒเบเบชเบฒเบกเบฒเบเบชเบปเปเบ bootstrap เปเบเบซเบฒ node store-001 เบเบฒเบ corp-000 เบเปเบงเบเบเปเบฒเบชเบฑเปเบเบเปเปเปเบเบเบตเป.
vm1$> ./symadmin --engine corp-000 reload-node 001
เปเบเบเบธเบเบเบตเป, เบเบฑเบเบเบถเบเปเบซเบกเปเบเบทเบเปเบชเปเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบฐเบฅเบฒเบเบฅเบฒเบเบเบฒเบเปเบเบเบฒเบเบเปเปเบกเบนเบ MySQL เปเบ node corp-000 (host: vm1), เปเบฅเบฐเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบงเบเปเบเบดเปเบเบเบฒเบเบเปเบฒเบฅเบญเบเบเบญเบเบกเบฑเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ PostgreSQL เปเบ node store-001 (host: 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 เบเบปเบงเบขเปเบฒเบเปเบฅเบฐเบเปเบฒเบเบปเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเปเบฒเบฅเบญเบเบเบญเบเบกเบฑเบเบเบฑเปเบเบเปเปเปเบเบเบตเป. เบเปเบงเบเบงเบดเบเบตเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเบเบฝเบเปเบเป replication เบเบฒเบ 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)
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเปเบเบทเบเปเบเปเบเปเบซเปเบเบฒเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบ schema, เบเบฑเปเบเปเบกเปเบ, เบเบฒเบเปเบเบตเปเบกเบเบฒเบเบฐเบฅเบฒเบเปเบซเบกเป, เปเบเบเปเบเปเบเปเบฒเบชเบฑเปเบ symadmin เบเบฑเบเบเบฒเบเปเบเปเบเบฝเบ sync-triggers, เปเบเบดเปเบเบชเปเบฒเบ triggers เปเบเบทเปเบญเบชเปเบฒเบเปเบเบเบเบตเปเบเปเบฒเบเบปเบเบเปเบฒเบเบดเบเบฒเบกเบเบญเบเบเบฒเบเบฐเบฅเบฒเบ. send-schema เบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบทเปเบญเบชเบปเปเบเบเบฒเบเบเปเบฝเบเปเบเบ 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
เบเบฒเบเบเบดเบเบเบฑเปเบเปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเบฒเบ, เบฅเบงเบกเบเบฑเบเบเบธเบเปเบเบฅเปเบเบตเปเบเบฝเบกเบเปเบญเบกเบเบตเปเบกเบตเบเบฒเบฅเบฒเบกเบดเปเบเบตเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบงเบปเบเบเบญเบเบชเบฒเบกเปเบซเบเบเบซเบผเบทเบชเบญเบเปเบซเบเบ.
เบเบฒเบเบเปเปเบกเบนเบเบเปเบฒเบกเปเบงเบเบต เปเบฅเบฐเบเบงเบฒเบกเปเบเบฑเบเปเบญเบเบฐเบฅเบฒเบเบเบญเบเปเบงเบเบต, เบฅเบงเบกเบเบฑเบเปเบเบตเบเปเบงเบต, เปเบฅเบฑเบเบเบฑเบญเบ เปเบฅเบฐเบญเบธเบเบฐเบเบญเบเบกเบทเบเบท.
Replicate เบเบฒเบเบเปเปเบกเบนเบเปเบเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเบญเบทเปเบเปเบขเบนเปเปเบเบเปเบญเบเบเบดเปเบ, เปเบ WAN เบซเบผเบทเปเบเบเบฅเบฒเบง.
เบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบฑเบเบชเบญเบเบชเบฒเบกเบเบฒเบเบเปเปเบกเบนเบเบซเบผเบทเบซเบผเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบฅเบญเบเบเบตเปเบชเบฐเบเบงเบ.
เบชเบฐเบเบฑเบเบเปเบฒเบเบเปเบงเบ GUI เปเบฅเบฐเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบตเปเบเบตเปเบฅเบตเบ.
เบเปเปเปเบชเบเบเบญเบ SymmetricDS
เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฒเบเบปเบเบเบปเบเบฅเบฐเบเบฝเบเปเบฅเบฐเบเบดเบเบเบฒเบเบเบญเบ replication เบเปเบงเบเบเบปเบเปเบญเบเปเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบเปเบเบเบเปเบฒเบเบเปเบฒเบชเบฑเปเบ SQL เปเบเบทเปเบญเปเบซเบฅเบเบเบฒเบเบฐเบฅเบฒเบเบฅเบฒเบเบเบฒเบ, เปเบเบดเปเบเบญเบฒเบเบเบฐเบเปเปเบชเบฐเบเบงเบ.
เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบฐเบฅเบฒเบเบเปเบฒเบเบงเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบฅเบญเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบซเบเปเบฒเปเบเบทเปเบญเปเบงเบฑเปเบเปเบชเบเปเบเปเบงเปเบฒเบเปเบฒเบเปเบเปเบชเบฐเบเบดเบเปเบเบทเปเบญเบชเปเบฒเบเบเปเบฒเบเบฐเปเบซเบผเบ SQL เบเบตเปเบเปเบฒเบเบปเบเบเบปเบเบฅเบฐเบเบฝเบเปเบฅเบฐเบเบดเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเบฅเบญเบ.
เบกเบตเบเปเปเบกเบนเบเบซเบผเบฒเบเปเบเบตเบเปเบเบเบตเปเบเบทเบเบเบฑเบเบเบถเบเปเบงเปเปเบเบเบฑเบเบเบถเบ, เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฑเบเบฅเบฐเบเบฝเบเปเบเบฅเปเบเบฑเบเบเบถเบเปเบเบทเปเบญเบเปเปเปเบซเปเบกเบฑเบเปเบเปเบเบทเปเบเบเบตเปเบซเบผเบฒเบเปเบเบตเบเปเบ.
เบเบปเบเปเบเปเบฎเบฑเบเบชเปเบฒเบฅเบฑเบ SymmetricDS
SymmetricDS เบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเปเบฒเบฅเบญเบเปเบเบเบชเบญเบเบเบฒเบเบฅเบฐเบซเบงเปเบฒเบเบชเบญเบ, เบชเบฒเบก, เบซเบผเบทเปเบกเปเบเบฐเบเบฑเปเบเบซเบผเบฒเบเบเบฑเบเปเบซเบเบเปเบเบทเปเบญเปเบฎเบฑเบเปเบฅเบทเปเบกเบเบทเบเปเบฅเบฐ synchronize เปเบเบฅเป. เบเบตเปเปเบกเปเบเปเบเบทเปเบญเบเบกเบทเบเบตเปเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบเบเบตเปเบเบฐเบเบดเบเบฑเบเบงเบฝเบเบเบฒเบเบซเบผเบฒเบเบขเปเบฒเบเปเบเบฑเบเปเบญเบเบฐเบฅเบฒเบ, เปเบเบฑเปเบ: เบเบฒเบเบเบทเปเบเบเบปเบงเบเปเปเบกเบนเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบซเบผเบฑเบเบเบฒเบเปเบฅเบเบฐเปเบงเบฅเบฒเบขเบธเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบ node, เบเบงเบฒเบกเบเบญเบเปเบเปเบฅเบฐเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบฒเบเปเบฅเบเบเปเบฝเบเบเปเปเบกเบนเบเบฅเบฐเบซเบงเปเบฒเบ nodes เบเปเบฒเบ HTTPS, เบเบฒเบเบเบฑเบเบเบฒเบเบเปเปเบเบฑเบเปเบเปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบเบญเบตเบเปเบชเปเบเบธเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบ, เปเบฅเบฐเบญเบทเปเบเป SymmetricDS เบเบฐเบเบดเบเบฑเบ. เบเบฒเบเบเปเบฒเบฅเบญเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเปเบเป, เบเบฑเปเบเบเบฑเปเบ, เบกเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเบซเบฅเบฒเบเบซเบฅเบฒเบ, เบฅเบงเบกเบเบฑเบเบเบฒเบเปเบเบทเปเบญเบเบเปเบฒเบ, เบเบฒเบเปเบเบทเปเบญเบเบเปเบฒเบ, เบเบฒเบเปเบเบเบขเบฒเบ, เบเบฒเบเบเบฑเปเบเบเบญเบเปเบฅเบฐเบเบฒเบเบซเบฑเบเบเปเบฝเบเบเปเปเบกเบนเบเปเบเบเบปเปเบงเปเบเบฅเบฐเบเบฐเบเบญเบก.
เบเบปเบงเบขเปเบฒเบเปเบกเปเบเบญเบตเบเปเบชเปเปเบเบปเปเบฒเบซเบเปเบฒเบเบตเป
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com