PostgreSQL, MySQL เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เดฟเดŸเดฏเดฟเดฒเตเดณเตเดณ เด•เตเดฐเต‹เดธเต เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป

PostgreSQL, MySQL เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เดฟเดŸเดฏเดฟเดฒเตเดณเตเดณ เด•เตเดฐเต‹เดธเต เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป

PostgreSQL, MySQL เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เดฟเดŸเดฏเดฟเดฒเตเดณเตเดณ เด•เตเดฐเต‹เดธเต-เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดฐเต‚เดชเดฐเต‡เด–เดฏเตเด‚ เดฐเดฃเตเดŸเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเดฑเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เด•เตเดฐเต‹เดธเต-เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฐเต€เดคเดฟเด•เดณเตเด‚ เดžเดพเตป เดตเดฟเดตเดฐเดฟเด•เตเด•เตเด‚. เดธเดพเดงเดพเดฐเดฃเด—เดคเดฟเดฏเดฟเตฝ, เด•เตเดฐเต‹เดธเต-เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดฑเตเดฑเดกเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเต† เดนเต‹เดฎเต‹เดœเต€เดจเดฟเดฏเดธเต เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เด’เดฐเต RDBMS เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดฑเตเดฑเตŠเดจเตเดจเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดฐเต€เดคเดฟเดฏเดพเดฃเต.

PostgreSQL, MySQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดฑเดฟเดฒเต‡เดทเดฃเตฝ เด†เดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด…เดงเดฟเด• เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เดณเต‹เดŸเตŠเดชเตเดชเด‚ เด…เดต NoSQL เด•เดดเดฟเดตเตเด•เตพ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด’เดฐเต เดฑเดฟเดฒเต‡เดทเดฃเตฝ เดกเดฟเดฌเดฟเดŽเด‚เดŽเดธเต เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ เดจเดฟเดจเตเดจเต PostgreSQL เด‰เด‚ MySQL เด‰เด‚ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดชเด•เตผเดชเตเดชเต เดžเด™เตเด™เตพ เด‡เดตเดฟเดŸเต† เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเตเด‚.

เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเดฑเตเด•เตพ, เด—เตเดฃเด™เตเด™เตพ, เดชเดฐเดฟเดฎเดฟเดคเดฟเด•เตพ, เด‰เดชเดฏเต‹เด— เด•เต‡เดธเตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเตโ€Œเด•เตเด•เดฟเดŸเดฏเดฟเดฒเตเดณเตเดณ เดชเด•เตผเดชเตเดชเต เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เด†เดถเดฏเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด…เดŸเดฟเดธเตเดฅเดพเดจ เดคเดคเตเดตเด™เตเด™เตพ เดฎเดพเดคเตเดฐเดฎเตเดณเตเดณ เดฎเตเดดเตเดตเตป เด†เดจเตเดคเดฐเดฟเด• เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเต†เดฏเตเด‚ เดžเด™เตเด™เตพ เดตเดฟเดตเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ.

เดธเดพเดงเดพเดฐเดฃเด—เดคเดฟเดฏเดฟเตฝ, เดธเดฎเดพเดจเดฎเดพเดฏ เดฐเดฃเตเดŸเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเดฑเตเด•เตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดชเด•เตผเดชเตเดชเต เดฌเตˆเดจเดฑเดฟ เดฎเต‹เดกเดฟเตฝ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดฎเดพเดธเตเดฑเตเดฑเดฑเตเด‚ (เด…เดคเดพเดฏเดคเต เดชเตเดฐเดธเดพเดงเด•เตป, เดฎเดพเดธเตเดฑเตเดฑเตผ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดธเดœเต€เดตเด‚) เด’เดฐเต เดธเตเดฒเต‡เดตเต (เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเตˆเดฌเตผ, เดธเตเดฑเตเดฑเดพเตปเดกเตโ€Œเดฌเตˆ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเดฟเดทเตโ€Œเด•เตเดฐเดฟเดฏเด‚) เดŽเดจเตเดจเดฟเดตเดฏเตโ€Œเด•เตเด•เดฟเดŸเดฏเดฟเดฒเตเดณเตเดณ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต. เดธเตเดฒเต‡เดตเต เดธเตˆเดกเดฟเตฝ เดฎเดพเดธเตเดฑเตเดฑเตผ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเตเดฑเต† เดคเดคเตเดธเดฎเดฏ เดชเด•เตผเดชเตเดชเต เดจเตฝเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เด‰เดฆเตเดฆเต‡เดถเตเดฏเด‚. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดกเดพเดฑเตเดฑ เดฎเดพเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตเดฒเต‡เดตเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต, เดธเดœเต€เดตเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดทเตเด•เตเดฐเดฟเดฏเดคเดฏเดฟเดฒเต‡เด•เตเด•เต, เด•เดพเดฐเดฃเด‚ เด’เดฐเต เดฆเดฟเดถเดฏเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดชเด•เตผเดคเตเดคเตฝ เดจเดŸเดคเตเดคเต‚. เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฐเดฃเตเดŸเต เดฆเดฟเดถเด•เดณเดฟเดฒเตเดฎเตเดณเตเดณ เดฐเดฃเตเดŸเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดคเดจเดฟเดชเตเดชเด•เตผเดชเตเดชเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด…เดคเตเดตเดดเดฟ เดกเดพเดฑเตเดฑ เดธเตเดฒเต‡เดตเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดธเดœเต€เดต-เดธเดœเต€เดต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚. เดฐเดฃเตเดŸเต‹ เด…เดคเดฟเดฒเดงเดฟเด•เดฎเต‹ เดธเดฎเดพเดจเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเดฑเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เด•เดพเดธเตโ€Œเด•เต‡เดกเดฟเด‚เด—เต เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‰เตพเดชเตเดชเต†เดŸเต†เดฏเตเดณเตเดณ เด‡เดตเดฏเต†เดฒเตเดฒเดพเด‚ เดธเดพเดงเตเดฏเดฎเดพเดฃเต.เด†เด•เตเดฑเตเดฑเต€เดตเต-เด†เด•เตเดฑเตเดฑเต€เดตเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด†เด•เตเดฑเตเดฑเต€เดตเต-เดชเดพเดธเต€เดตเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป, เดชเตเดฐเดพเดฐเด‚เดญ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเดฒเต‹ เดฌเดพเดนเตเดฏ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเตŠเดฒเตเดฏเต‚เดทเดจเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดŸเตเดฐเต‡เดกเต-เด“เดซเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด…เดคเตเดคเดฐเด‚ เด•เดดเดฟเดตเตเด•เดณเตเดŸเต† เด†เดตเดถเตเดฏเด•เดค, เดฒเดญเตเดฏเดค เดŽเดจเตเดจเดฟเดตเดฏเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดตเตเดฏเดคเตเดฏเดธเตเดค เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเดฑเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดš เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเดพเดงเตเดฏเดฎเดพเดฃเต. เดฎเดฑเตเดฑเตŠเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเด•เตผเดคเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด…เดคเต‡ เดธเดฎเดฏเด‚ เดชเด•เตผเดคเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดคเดคเตเดธเดฎเดฏ เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเตเด•เตพ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เดธเต†เตผเดตเดฑเดฟเดจเต† เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเดจเดพเด•เตเด‚. MySQL, PostgreSQL เดŽเดจเตเดจเดฟเดต เดˆ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เดณเดฟเตฝ เดญเต‚เดฐเดฟเดญเดพเด—เดตเตเด‚ เด‡เตป-เดนเต—เดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเต‚เดจเตเดจเดพเด‚ เด•เด•เตเดทเดฟ เดŽเด•เตเดธเตเดฑเตเดฑเตปเดทเดจเตเด•เตพ เดตเดดเดฟ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดฌเตˆเดจเดฑเดฟ เดฒเต‹เด—เต เดฐเต€เดคเดฟเด•เตพ, เดกเดฟเดธเตเด•เต เดฒเต‹เด•เตเด•เดฟเด‚เด—เต, เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเตเดฎเต†เดจเตเดฑเต, เดฑเต‹-เด…เดŸเดฟเดธเตเดฅเดพเดจ เดฐเต€เดคเดฟเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเตเตพเดชเตเดชเต†เดŸเต†.

เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดฑเตเดฑเตŠเดจเตเดจเดฟเดฒเต‡เด•เตเด•เต เด’เดฑเตเดฑเดคเตเดคเดตเดฃ เดฎเตˆเด—เตเดฐเต‡เดทเดจเดพเดฏเดฟ MySQL-เดจเตเด‚ PostgreSQL-เดจเตเด‚ เด‡เดŸเดฏเดฟเดฒเตเดณเตเดณ เด•เตเดฐเต‹เดธเต เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดˆ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพ เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เด…เดตเดฏเต† เดจเต‡เดฐเดฟเดŸเตเดŸเต เดฒเดฟเด™เตเด•เตเดšเต†เดฏเตเดฏเดพเตป เดธเดพเดงเตเดฏเดฎเดฒเตเดฒ. เดกเดพเดฑเตเดฑเดพ เดŽเด•เตเดธเตเดšเต‡เดžเตเดšเต เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดฌเดพเดนเตเดฏ เด“เดชเตเดชเตบ เดธเต‹เดดเตเดธเต เดŸเต‚เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต pg_chameleon.

เดŽเดจเตเดคเดพเดฃเต pg_chameleon

เดชเตˆเดคเตเดคเตบ 3-เดฒเต† MySQL-เตฝ เดจเดฟเดจเตเดจเต PostgreSQL-เดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดฟเดธเตเดฑเตเดฑเดฎเดพเดฃเต pg_chameleon. เด‡เดคเต เดชเตˆเดคเตเดคเดฃเดฟเดฒเตเด‚ เด“เดชเตเดชเตบ เดธเต‹เดดเตเดธเต mysql-replication เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดตเดฐเดฟ เดšเดฟเดคเตเดฐเด™เตเด™เตพ MySQL เดชเดŸเตเดŸเดฟเด•เด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเด•เตโ€Œเดธเตโ€ŒเดŸเตเดฐเดพเด•เตโ€Œเดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดคเต PostgreSQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ JSONB เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเดพเดฏเดฟ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดคเตเดŸเตผเดจเตเดจเต pl/pgsql เดซเด‚เด—เตโ€Œเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเต€เด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ PostgreSQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

pg_chameleon-เดจเตเดฑเต† เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ

เด’เดฐเต‡ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ MySQL เดธเตเด•เต€เดฎเด•เตพ เด’เดจเตเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดฐเดตเดงเดฟ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ เด’เดฐเตŠเดฑเตเดฑ เดŸเดพเตผเด—เต†เดฑเตเดฑเต PostgreSQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเดพเดจเดพเด•เตเด‚.
เด‰เดฑเดตเดฟเดŸเดตเตเด‚ เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดธเตเด•เต€เดฎ เดจเดพเดฎเด™เตเด™เดณเตเด‚ เด’เดฐเตเดชเต‹เดฒเต† เด†เดฏเดฟเดฐเดฟเด•เตเด•เดฐเตเดคเต.
เด’เดฐเต เด•เดพเดธเตโ€Œเด•เต‡เดกเต เดšเต†เดฏเตเดค MySQL เดชเด•เตผเดชเตเดชเดฟเตฝ เดจเดฟเดจเตเดจเต เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดกเดพเดฑเตเดฑ เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.
เดชเดฟเดถเด•เตเด•เตพ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเต‹ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดจเต‹ เด•เดดเดฟเดฏเดพเดคเตเดค เดชเดŸเตเดŸเดฟเด•เด•เตพ เด’เดดเดฟเดตเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.
เด“เดฐเต‹ เด…เดจเตเด•เดฐเดฃ เดชเตเดฐเดตเตผเดคเตเดคเดจเดตเตเด‚ เดกเต†เดฎเดฃเตเด•เดณเดพเตฝ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต.
YAML เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด•เดณเตเด‚ เดตเดดเดฟ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเด•.

เด‰เดฆเดพเดนเดฐเดฃเด‚:

เดนเต‹เดธเตเดฑเตเดฑเต
vm1
vm2

OS เดชเดคเดฟเดชเตเดชเต
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64

เดกเดฟเดฌเดฟ เดธเต†เตผเดตเตผ เดชเดคเดฟเดชเตเดชเต
MySQL 5.7.26
PostgreSQL 10.5

เดกเดฟเดฌเดฟ เดชเต‹เตผเดŸเตเดŸเต
3306
5433

IP เดตเดฟเดฒเดพเดธเด‚
192.168.56.102
192.168.56.106

เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, pg_chameleon เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เด˜เดŸเด•เด™เตเด™เดณเตเด‚ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเด•. เดˆ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดชเตˆเดคเตเดคเตบ 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 เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต 2.0.9 เด†เดฃเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เด•เดฎเดพเตปเดกเตเด•เตพ เดฎเดจเดƒเดชเต‚เตผเดตเตเดตเด‚ pg_chameleon 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 เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเดฟเตฝ เด†เด—เต‹เดณ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดตเดฟเดญเดพเด—เดฎเตเดฃเตเดŸเต, เด…เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฒเต‹เด•เตเด•เต เดซเดฏเดฒเดฟเดจเตเดฑเต† เดธเตเดฅเดพเดจเด‚, เดฒเต‹เด—เตเด•เดณเตเดŸเต† เดธเตเดฅเดพเดจเด‚, เดฒเต‹เด—เตเด•เดณเตเดŸเต† เดธเด‚เดญเดฐเดฃ โ€‹โ€‹เด•เดพเดฒเดฏเดณเดตเต เดฎเตเดคเดฒเดพเดฏเดต เดชเต‹เดฒเตเดณเตเดณ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดŸเตˆเดชเตเดชเต เด“เดตเตผเดฑเตˆเดกเต เดตเดฟเดญเดพเด—เด‚ เดตเดฐเตเดจเตเดจเต, เด…เดตเดฟเดŸเต† เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดฎเดฏเดคเตเดคเต เดคเดฐเด™เตเด™เดณเต† เดฎเดฑเดฟเด•เดŸเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดจเดฟเดฏเดฎเด™เตเด™เตพ. tinyint(1) เดจเต† เดฌเต‚เดณเดฟเดฏเตป เดฎเต‚เดฒเตเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดคเดฐเด‚ เด“เดตเตผเดฑเตˆเดกเดฟเด‚เด—เต เดฑเต‚เดณเดฟเดฒเต‡เด•เตเด•เต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด…เดŸเตเดคเตเดค เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ, เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด•เดฃเด•เตเดทเตป เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เดžเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด‡เดคเตŠเดฐเต PostgreSQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด†เดฃเต, เดจเดฟเดฏเตเด•เตเดค pg_conn เด†เดฃเต. เด…เดตเดธเดพเดจ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เด‰เดฑเดตเดฟเดŸ เดกเดพเดฑเตเดฑ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต, เด‰เดฑเดตเดฟเดŸ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเตเดฑเต† เด•เดฃเด•เตเดทเตป เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ, เด‰เดฑเดตเดฟเดŸเดตเตเด‚ เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเตเด‚ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดฎเดพเดชเตเดชเดฟเด‚เด—เต เดธเตเด•เต€เด‚, เด’เดดเดฟเดตเดพเด•เตเด•เต‡เดฃเตเดŸ เดชเดŸเตเดŸเดฟเด•เด•เตพ, เด•เดพเดคเตเดคเดฟเดฐเดฟเดชเตเดชเต เดธเดฎเดฏเด‚, เดฎเต†เดฎเตเดฎเดฑเดฟ, เดชเดพเด•เตเด•เต‡เดœเต เดตเดฒเตเดชเตเดชเด‚. "เดธเตเดฐเต‹เดคเดธเตเดธเตเด•เตพ" เดŽเดจเตเดจเดคเต เดฌเดนเตเดตเดšเดจเดฎเดพเดฃเต†เดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•, เด…เดคเดพเดฏเดคเต เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดธเต‹เดดเตโ€Œเดธเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพ เด’เดฐเต เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เดพเตป เดจเดฎเตเด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ-เดŸเต-เดตเตบ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเดœเตเดœเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.

เด‰เดฆเดพเดนเดฐเดฃ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต world_x-เตฝ MySQL เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเดพเดฏเดฟ เดจเตฝเด•เตเดจเตเดจ เดตเดฐเดฟเด•เดณเตเดณเตเดณ 4 เดชเดŸเตเดŸเดฟเด•เด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเด‚ เด‡เดตเดฟเดŸเต†. เดตเดฐเดฟเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเต‹เดŸเตเด•เต‚เดŸเดฟเดฏ เดŸเดพเตผ, เด•เด‚เดชเตเดฐเดธเต เดšเต†เดฏเตโ€Œเดค เด†เตผเด•เตเด•เตˆเดตเต เด†เดฏเดพเดฃเต เดธเดพเดฎเตเดชเดฟเตพ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดตเดฐเตเดจเตเดจเดคเต.

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 เดตเดถเดคเตเดคเต, MySQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต db_replica เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. 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 เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเต เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต†เดŽเดธเตโ€Œเด•เตเดฏเตเดŽเตฝ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เด’เดฐเต เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดธเตโ€Œเด•เต€เดฎเดฏเตเด‚ (sch_chameleon) เด’เดฐเต เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตเด•เต€เดฎเดฏเตเด‚ (pgworld_x) เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เดžเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดšเตผเดšเตเดš เดšเต†เดฏเตเดคเดคเตเดชเต‹เดฒเต†. เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ (default.yml) เดตเดพเดฏเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต add_source เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดธเต‹เดดเตเดธเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต, เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด‡เดคเต 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 เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เดฐเดฃเตเดŸเต เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เดกเต†เดฎเดฃเตเด•เตพ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ PostgreSQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเดŸเตเดŸเดฟเด• เดชเด•เตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ pg_chameleon-เดฒเต† sync_tables เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต.

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-เดจเตเดฑเต† เดซเดฒเด™เตเด™เตพ

MySQL-เตฝ เดจเดฟเดจเตเดจเต PostgreSQL-เดฒเต‡เด•เตเด•เต เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดฎเตˆเด—เตเดฐเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต pg_chameleon-เดฒเต† เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฐเต€เดคเดฟ เดฎเดฟเด•เดšเตเดšเดคเดพเดฃเต. เดฑเดฟเดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด’เดฐเต เดตเดดเดฟ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต†เดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจ เดชเต‹เดฐเดพเดฏเตเดฎ, เด…เดคเดฟเดจเดพเตฝ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดชเตเดฐเตŠเดซเดทเดฃเดฒเตเด•เตพ เดฎเตˆเด—เตเดฐเต‡เดทเดจเดฒเตเดฒเดพเดคเต† เดฎเดฑเตเดฑเต†เดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เดŽเดจเตเดจเดพเตฝ เดตเตบ-เดตเต‡ เดฑเดฟเดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดชเตเดฐเดถเตเดจเด‚ เดฎเดฑเตเดฑเตŠเดฐเต เด“เดชเตเดชเตบ เดธเต‹เดดเตเดธเต เดŸเต‚เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ - เดธเดฟเดฎเต†เดŸเตเดฐเดฟเด•เตเดกเดฟเดŽเดธเต.

เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดตเดพเดฏเดฟเด•เตเด•เตเด• เด‡เดตเดฟเดŸเต†. เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เดธเดนเดพเดฏเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ เด‡เดตเดฟเดŸเต†.

SymmetricDS เดจเตเดฑเต† เด…เดตเดฒเต‹เด•เดจเด‚

เดเดคเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ เดฎเดฑเตเดฑเต‡เดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเดพเดงเดพเดฐเดฃ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเตเดจเตเดจ เด’เดฐเต เด“เดชเตเดชเตบ เดธเต‹เดดเตโ€Œเดธเต เดŸเต‚เดณเดพเดฃเต SymmetricDS: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird, เดฎเดฑเตเดฑเต เด•เตเดฒเต—เดกเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเด‚เดญเดตเด™เตเด™เตพ, เด‰เดฆเดพ. Azure, เดฎเตเดคเดฒเดพเดฏเดต เดฒเดญเตเดฏเดฎเดพเดฏ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ: เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ เดซเดฏเตฝ เดธเดฟเตปเด•เตเดฐเตŠเดฃเตˆเดธเต‡เดทเดจเตเด‚, เดฎเตพเดŸเตเดŸเดฟ-เดฎเดพเดธเตเดฑเตเดฑเตผ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป, เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดค เดธเดฟเตปเด•เตเดฐเตŠเดฃเตˆเดธเต‡เดทเตป, เดŸเตเดฐเดพเตปเดธเตเดซเต‹เตผเดฎเต‡เดทเตป เดŽเดจเตเดจเดฟเดตเดฏเตเด‚ เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฏเตเด‚. เด‡เดคเตŠเดฐเต เดœเดพเดต เดŸเต‚เดณเดพเดฃเต เด•เต‚เดŸเดพเดคเต† JRE เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ JDK (เดชเดคเดฟเดชเตเดชเต 8.0 เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด‰เดฏเตผเดจเตเดจเดคเต) เดฏเตเดŸเต† เด’เดฐเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดฑเดฟเดฒเต€เดธเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด‡เดตเดฟเดŸเต†, เด‰เดฑเดตเดฟเดŸ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต† เดŸเตเดฐเดฟเด—เดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดกเดพเดฑเตเดฑ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดฑเต†เด•เตเด•เต‹เตผเดกเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดฌเดพเดšเตเดšเตเด•เดณเตเดŸเต† เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด‰เดšเดฟเดคเดฎเดพเดฏ เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดฏเตเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚.

SymmetricDS เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ

เด‰เดชเด•เดฐเดฃเด‚ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เด‚ เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเดฃเต, เด…เดคเดพเดฏเดคเต เดฐเดฃเตเดŸเต‹ เด…เดคเดฟเดฒเดงเดฟเด•เดฎเต‹ เดตเตเดฏเดคเตเดฏเดธเตเดค เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพเด•เตเด•เต เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเดพเตป เด•เดดเดฟเดฏเตเด‚.
เดฑเดฟเดฒเต‡เดทเดฃเตฝ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพ เดกเดพเดฑเตเดฑ เดฎเดพเดฑเตเดฑ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต, เด…เดคเต‡เดธเดฎเดฏเด‚ เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพ เดซเดฏเตฝ เดธเดฟเตปเด•เตเดฐเตŠเดฃเตˆเดธเต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.
เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดจเดฟเดฏเดฎเด™เตเด™เดณเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดชเตเดทเต เด†เตปเดกเต เดชเตเตพ เดฐเต€เดคเดฟเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŸเต-เดตเต‡ เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป.
เดธเตเดฐเด•เตเดทเดฟเดคเดตเตเด‚ เด•เตเดฑเดžเตเดž เดฌเดพเตปเดกเตโ€Œเดตเดฟเดกเตเดคเตเดคเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เดณเตเด‚ เดตเดดเดฟ เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดธเดพเดงเตเดฏเดฎเดพเดฃเต.
เด’เดฐเต เดชเดฐเดพเดœเดฏเดคเตเดคเดฟเดจเตเด‚ เดธเตเดตเดฏเดฎเต‡เดตเดฏเตเดณเตเดณ เดตเตˆเดฐเตเดฆเตเดงเตเดฏ เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเดจเตเด‚ เดถเต‡เดทเด‚ เดจเต‹เดกเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดธเตเดตเดฏเดฎเต‡เดต เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตฝ.
เด•เตเดฒเต—เดกเต เด…เดจเตเดฏเต‹เดœเตเดฏเดตเตเด‚ เดถเด•เตเดคเดตเตเดฎเดพเดฏ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃ API-เด•เตพ.

เด‰เดฆเดพเดนเดฐเดฃเด‚:

เดฐเดฃเตเดŸเต เด“เดชเตเดทเดจเตเด•เดณเดฟเดฒเตŠเดจเตเดจเดฟเตฝ SymmetricDS เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจเดคเดพเดฃเต:
เดฐเดฃเตเดŸเต เดธเตเดฒเต‡เดตเต (เดšเตˆเตฝเดกเต) เดจเต‹เดกเตเด•เตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เต‡เดจเตเดฆเตเดฐเต€เด•เตƒเดคเดฎเดพเดฏเดฟ เดเด•เต‹เดชเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดฎเดพเดธเตเดฑเตเดฑเตผ (เดฐเด•เตเดทเดพเด•เตผเดคเตƒ) เดจเต‹เดกเต, เดšเตˆเตฝเดกเต เดจเต‹เดกเตเด•เตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดฎเดพเดคเดพเดชเดฟเดคเดพเด•เตเด•เดณเดฟเดฒเต‚เดŸเต† เดฎเดพเดคเตเดฐเดฎเต‡ เดธเด‚เดญเดตเดฟเด•เตเด•เต‚.
เด’เดฐเต เดธเดœเต€เดต เดจเต‹เดกเดฟเดจเต (เดจเต‹เดกเต 1) เด’เดฐเต เด‡เดŸเดจเดฟเดฒเด•เตเด•เดพเดฐเดจเดฟเดฒเตเดฒเดพเดคเต† เดฎเดฑเตเดฑเตŠเดฐเต เดธเดœเต€เดต เดจเต‹เดกเตเดฎเดพเดฏเดฟ (เดจเต‹เดกเต 2) เดชเด•เตผเดชเตเดชเดฟเดจเดพเดฏเดฟ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเด‚.

เดฐเดฃเตเดŸเต เด“เดชเตเดทเดจเตเด•เดณเดฟเดฒเตเด‚, เดชเตเดทเต เด†เตปเดกเต เดชเตเตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฎเตเดฎเตพ เด’เดฐเต เดธเดœเต€เดต-เดธเดœเต€เดต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเด‚. เดฎเตเดดเตเดตเตป เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเตเด‚ เดตเดฟเดตเดฐเดฟเด•เตเด•เดพเตป เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดธเดฎเดฏเดฎเต†เดŸเตเด•เตเด•เตเด‚, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด—เดตเต‡เดทเดฃเด‚ เดจเดŸเดคเตเดคเตเด•. เดจเต‡เดคเตƒเดคเตเดตเด‚SymmetricDS เด‰เดชเด•เดฐเดฃเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด•เต‚เดŸเตเดคเดฒเดฑเดฟเดฏเดพเตป.

SymmetricDS เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต: zip เดซเดฏเดฒเดฟเดจเตเดฑเต† เด“เดชเตเดชเตบ เดธเต‹เดดเตเดธเต เดชเดคเดฟเดชเตเดชเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด• เด‡เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดฟเดŸเดคเตเดคเต เด…เดคเต เดชเตเดฑเดคเตเดคเต†เดŸเตเด•เตเด•เตเด•. เดˆ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดฒเต† เด‡เตปเดธเตเดฑเตเดฑเดฒเต‡เดทเตป เดฒเตŠเด•เตเด•เต‡เดทเดจเตเด‚ SymmetricDS-เดจเตเดฑเต† เดชเดคเดฟเดชเตเดชเตเด‚, เด•เต‚เดŸเดพเดคเต† เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดชเดคเดฟเดชเตเดชเตเด•เตพ, Linux เดชเดคเดฟเดชเตเดชเตเด•เตพ, IP เดตเดฟเดฒเดพเดธเด™เตเด™เตพ, เดฐเดฃเตเดŸเต เดจเต‹เดกเตเด•เตพเด•เตเด•เตเดฎเตเดณเตเดณ เดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเต† เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เดชเดŸเตเดŸเดฟเด• เดจเตฝเด•เตเดจเตเดจเต.

เดนเต‹เดธเตเดฑเตเดฑเต
vm1
vm2

OS เดชเดคเดฟเดชเตเดชเต
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64

เดกเดฟเดฌเดฟ เดธเต†เตผเดตเตผ เดชเดคเดฟเดชเตเดชเต
MySQL 5.7.26
PostgreSQL 10.5

เดกเดฟเดฌเดฟ เดชเต‹เตผเดŸเตเดŸเต
3306
5832

IP เดตเดฟเดฒเดพเดธเด‚
192.168.1.107
192.168.1.112

SymmetricDS เดชเดคเดฟเดชเตเดชเต
เดธเดฟเดฎเต†เดŸเตเดฐเดฟเด•เตเดกเดฟเดŽเดธเต 3.9
เดธเดฟเดฎเต†เดŸเตเดฐเดฟเด•เตเดกเดฟเดŽเดธเต 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

เด…เดŸเดฟเดธเตเดฅเดพเดจ 3-เดจเต‹เดกเต เดกเดฟเดธเตˆเดจเดฟเดจเต (เด“เดชเตเดทเตป 1) เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด•เดณเตเด‚ SymmetricDS-เตฝ เด‰เดฃเตเดŸเต, เด…เดคเต‡ เดซเดฏเดฒเตเด•เตพ 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 เดธเดฎเดจเตเดตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ เดจเต‹เดกเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด•เดฃเด•เตเดทเดจเตเดฑเต† เดธเตเดฅเดพเดจเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต.

เดนเต‹เดธเตเดฑเตเดฑเต vm2-เดฒเต† เดจเต‹เดกเต 2 เดธเตเดฑเตเดฑเต‹เตผ-001 เด†เดฏเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดฌเดพเด•เตเด•เดฟเดฏเตเดณเตเดณเดต เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ node.properties เดซเดฏเดฒเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดจเต‹เดกเต เดธเตเดฑเตเดฑเต‹เตผ-001 PostgreSQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ pgdb_replica เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป.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

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เด‡เดจเดตเตเด‚ item_selling_price เดŸเต‡เดฌเดฟเดณเตเด•เดณเตเด‚ corp-000-เตฝ เดจเดฟเดจเตเดจเต store-001-เดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเดพเตป เดธเตเดตเดฏเดฎเต‡เดต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดตเดฟเตฝเดชเตเดชเดจ เดชเดŸเตเดŸเดฟเด•เด•เตพ (sale_transaction and sale_return_line_item) เดธเตโ€Œเดฑเตเดฑเต‹เตผ-001-เตฝ เดจเดฟเดจเตเดจเต corp-000-เดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเดพเตป เดธเตเดตเดฏเดฎเต‡ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. corp-2-เตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด…เดคเต เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด‡เดชเตเดชเต‹เตพ เดนเต‹เดธเตเดฑเตเดฑเต vm001 (เดธเตเดฑเตเดฑเต‹เตผ-000)-เดฒเต† PostgreSQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เด’เดฐเต เดธเตเด•เต€เดฎ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต.

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_ เดŽเดจเตเดจ เดชเตเดฐเดฟเดซเดฟเด•เตโ€Œเดธเต เด‰เดณเตเดณเดคเต) เดจเต‹เดกเต corp-000-เตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดจเดฟเดฒเดตเดฟเตฝ เดฒเดญเตเดฏเดฎเตเดณเตเดณเต‚ เดŽเดจเตเดจ เด•เดพเดฐเตเดฏเด‚ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•, เด•เดพเดฐเดฃเด‚ เด…เดตเดฟเดŸเต†เดฏเดพเดฃเต เดžเด™เตเด™เตพ create-sym-tables เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเดคเต, เด•เต‚เดŸเดพเดคเต† เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดจเต‹เดกเต เดธเตเดฑเตเดฑเต‹เตผ-001-เดฒเต† เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดกเดพเดฑเตเดฑเดฏเดฟเดฒเตเดฒเดพเดคเต† 4 เด‰เดฆเดพเดนเดฐเดฃ เดชเดŸเตเดŸเดฟเด•เด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดฃเตเดŸเดพเด•เต‚.

เดŽเดฒเตเดฒเดพเด‚. เดคเดพเดดเต† เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต† เดฐเดฃเตเดŸเต เดจเต‹เดกเตเด•เดณเดฟเดฒเตเด‚ เดธเดฟเด‚ เดธเต†เตผเดตเตผ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดคเดฏเตเดฏเดพเดฑเดพเดฃเต.

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

SymmetricDS เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดณเตเดณ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเดฒเต† เดฒเต‹เด—เต เดซเต‹เตพเดกเดฑเดฟเดฒเต† เด’เดฐเต เดชเดถเตเดšเดพเดคเตเดคเดฒ เดฒเต‹เด—เต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต (symmetric.log) เดฒเต‹เด—เต เดŽเตปเดŸเตเดฐเดฟเด•เตพ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเต, เด…เดคเตเดชเต‹เดฒเต† เดคเดจเตเดจเต† เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเดฟเดฒเต‡เด•เตเด•เตเด‚. เดจเต‹เดกเต เดธเตเดฑเตเดฑเต‹เตผ-001-เตฝ เด‡เดชเตเดชเต‹เตพ เดธเดฟเด‚ เดธเต†เตผเดตเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.

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

เดจเดฟเด™เตเด™เตพ vm2 เดนเต‹เดธเตเดฑเตเดฑเดฟเตฝ เดธเดฟเด‚ เดธเต†เตผเดตเตผ เดชเตเดฐเต‹เดธเดธเตเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดคเต PostgreSQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ SymmetricDS เด•เดพเดฑเตเดฑเดฒเต‹เด—เต เดชเดŸเตเดŸเดฟเด•เด•เดณเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚. เดจเดฟเด™เตเด™เตพ เดฐเดฃเตเดŸเต เดจเต‹เดกเตเด•เดณเดฟเดฒเตเด‚ เดธเดฟเด‚ เดธเต†เตผเดตเตผ เดชเตเดฐเต‹เดธเดธเตเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, corp-000 เดฎเตเดคเตฝ store-001 เดตเดฐเต†เดฏเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดชเด•เตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เด…เดต เดชเดฐเดธเตเดชเดฐเด‚ เดเด•เต‹เดชเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด•เตเดฑเดšเตเดšเต เดจเดฟเดฎเดฟเดทเด™เตเด™เตพเด•เตเด•เต เดถเต‡เดทเด‚ เดžเด™เตเด™เตพ เด‡เดฐเตเดตเดถเดคเตเดคเตเดฎเตเดณเตเดณ 4 เดŸเต‡เดฌเดฟเดณเตเด•เดณเตเด‚ เด…เดจเตเดตเต‡เดทเดฟเดšเตเดšเดพเตฝ, เดชเด•เตผเดคเตเดคเตฝ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฃเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เด•เดพเดฃเดพเด‚. เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดคเดพเดดเต† เดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต corp-001-เตฝ เดจเดฟเดจเตเดจเต node store-000-เดฒเต‡เด•เตเด•เต เดฌเต‚เดŸเตเดŸเตเดธเตเดŸเตเดฐเดพเดชเตเดชเต เด…เดฏเดฏเตเด•เตเด•เดพเด‚.

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

เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, เดจเต‹เดกเต corp-000 (เดนเต‹เดธเตเดฑเตเดฑเต: vm1)-เดฒเต† MySQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต† เดเดฑเตเดฑเด‚ เดŸเต‡เดฌเดฟเดณเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เดฑเต†เด•เตเด•เต‹เตผเดกเต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดจเต‹เดกเต เดธเตเดฑเตเดฑเต‹เตผ-001-เดฒเต† PostgreSQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เด…เดคเดฟเดจเตเดฑเต† เดชเด•เตผเดชเตเดชเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚ (เดนเต‹เดธเตเดฑเตเดฑเต: vm2). 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)

เดธเตเดฑเตเดฑเต‹เตผ-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 เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เด‡เดคเต เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดจเดฟเตผเดตเดšเดจเด™เตเด™เตพ เดฎเดพเดชเตเดชเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดŸเตเดฐเดฟเด—เดฑเตเด•เตพ เดชเตเดจเดƒเดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดจเต‹เดกเต เดธเตเดฑเตเดฑเต‹เตผ-001-เดฒเต‡เด•เตเด•เต เดธเตเด•เต€เดฎ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เด…เดฏเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต send-schema เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดŸเต‡เดฌเดฟเตพ 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 เดตเดดเดฟ. IN เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดฎเดพเดจเตเดตเตฝ SymmetricDS เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดตเดฟเดตเดฟเดง เด†เดถเดฏเด™เตเด™เตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•