PostgreSQL เจ…เจคเฉ‡ MySQL เจตเจฟเจšเจ•เจพเจฐ เจ•เฉเจฐเจพเจธ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€

PostgreSQL เจ…เจคเฉ‡ MySQL เจตเจฟเจšเจ•เจพเจฐ เจ•เฉเจฐเจพเจธ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€

เจฎเฉˆเจ‚ PostgreSQL เจ…เจคเฉ‡ MySQL เจตเจฟเจšเจ•เจพเจฐ เจ•เจฐเจพเจธ-เจฐเจฟเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจฐเฉ‚เจชเจฐเฉ‡เจ–เจพ เจฆเฉ‡เจตเจพเจ‚เจ—เจพ, เจ…เจคเฉ‡ เจจเจพเจฒ เจนเฉ€ เจฆเฉ‹ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจ•เจฐเจพเจธ-เจฐเจฟเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจตเจฟเจงเฉ€เจ†เจ‚เฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ•เจฐเจพเจธ-เจฐเจฟเจชเจฒเฉ€เจ•เฉ‡เจŸเจก เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจธเจฎเจฐเฉ‚เจช เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจน เจ‡เฉฑเจ• RDBMS เจธเจฐเจตเจฐ เจคเฉ‹เจ‚ เจฆเฉ‚เจœเฉ‡ เจตเจฟเฉฑเจš เจœเจพเจฃ เจฆเจพ เจ‡เฉฑเจ• เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจคเจฐเฉ€เจ•เจพ เจนเฉˆเฅค

PostgreSQL เจ…เจคเฉ‡ MySQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจฐเจฟเจฒเฉ‡เจธเจผเจจเจฒ เจฎเฉฐเจจเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ เจตเจพเจงเฉ‚ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‰เจน NoSQL เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเฉฐเจฌเฉฐเจงเจค DBMS เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚ PostgreSQL เจ…เจคเฉ‡ MySQL เจตเจฟเจšเจ•เจพเจฐ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฌเจพเจฐเฉ‡ เจšเจฐเจšเจพ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจ…เจธเฉ€เจ‚ เจชเฉ‚เจฐเฉ‡ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจ•เจพเจฐเจœเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจธเจฟเจฐเจซ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเจฟเจงเจพเจ‚เจคเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจคเจพเจ‚ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐเจพเจ‚, เจซเจพเจ‡เจฆเจฟเจ†เจ‚, เจธเฉ€เจฎเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ‡ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจตเจฟเจšเจพเจฐ เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจตเฉ‡เฅค

เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจฆเฉ‹ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจœเจพเจ‚ เจคเจพเจ‚ เจฌเจพเจˆเจจเจฐเฉ€ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจœเจพเจ‚ เจ‡เฉฑเจ• เจฎเจพเจธเจŸเจฐ (เจ‰เจฐเจซเจผ เจชเฉเจฐเจ•เจพเจธเจผเจ•, เจฎเจพเจธเจŸเจฐ, เจœเจพเจ‚ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ) เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ—เฉเจฒเจพเจฎ (เจ—เจพเจนเจ•, เจธเจŸเฉˆเจ‚เจกเจฌเจพเจ, เจœเจพเจ‚ เจชเฉˆเจธเจฟเจต) เจตเจฟเจšเจ•เจพเจฐ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเจพ เจ‰เจฆเฉ‡เจธเจผ เจธเจฒเฉ‡เจต เจธเจพเจˆเจก 'เจคเฉ‡ เจฎเจพเจธเจŸเจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจ…เจธเจฒ-เจธเจฎเฉ‡เจ‚ เจฆเฉ€ เจ•เจพเจชเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฎเจพเจธเจŸเจฐ เจคเฉ‹เจ‚ เจธเจฒเฉ‡เจต เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจฏเจพเจจเฉ€ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจคเฉ‹เจ‚ เจชเฉˆเจธเจฟเจต เจตเจฟเฉฑเจš, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจฆเจฟเจธเจผเจพ เจตเจฟเฉฑเจš เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ. เจชเจฐ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‹เจจเจพเจ‚ เจฆเจฟเจธเจผเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจฆเฉ‹ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเฉˆเจŸ เจ…เจช เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจœเฉ‹ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจเจ•เจŸเจฟเจต-เจเจ•เจŸเจฟเจต เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจธเจฒเฉ‡เจต เจคเฉ‹เจ‚ เจฎเจพเจธเจŸเจฐ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เฉ‡เฅค เจ‡เจน เจธเจญ, เจ•เฉˆเจธเจ•เฉ‡เจกเจฟเฉฐเจ— เจฐเฉ€เจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฎเฉ‡เจค, เจฆเฉ‹ เจœเจพเจ‚ เจฆเฉ‹ เจคเฉ‹เจ‚ เจตเฉฑเจง เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจธเฉฐเจญเจต เจนเฉˆเฅค เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ-เจธเจฐเจ—เจฐเจฎ เจœเจพเจ‚ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ-เจชเฉˆเจธเจฟเจต เจธเฉฐเจฐเจšเจจเจพ เจฒเฉ‹เฉœ, เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเฉ€ เจ‰เจชเจฒเจฌเจงเจคเจพ เจœเจพเจ‚ เจฌเจพเจนเจฐเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจนเฉฑเจฒเจพเจ‚ เจ…เจคเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจŸเจฐเฉ‡เจก-เจ†เจซเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค

เจตเจฐเจฃเจฟเจค เจธเฉฐเจฐเจšเจจเจพ เจตเฉฑเจ–-เจตเฉฑเจ– เจกเจพเจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจธเฉฐเจญเจต เจนเฉˆเฅค เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐ เจคเฉ‹เจ‚ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจจ เจฒเจˆ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจซเจฟเจฐ เจตเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ…เจธเจฒ-เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจธเจจเฉˆเจชเจธเจผเจพเจŸ เจจเฉ‚เฉฐ เจฌเจฃเจพเจˆ เจฐเฉฑเจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค MySQL เจ…เจคเฉ‡ PostgreSQL เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ…เฉฐเจฆเจฐ-เจ…เฉฐเจฆเจฐ เจœเจพเจ‚ เจคเฉ€เจœเฉ€-เจงเจฟเจฐ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจฐเจพเจนเฉ€เจ‚ เจชเฉ‡เจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจฌเจพเจˆเจจเจฐเฉ€ เจฒเฉŒเจ— เจตเจฟเจงเฉ€เจ†เจ‚, เจกเจฟเจธเจ• เจฒเฉŒเจ•เจฟเฉฐเจ—, เจ…เจคเฉ‡ เจธเจŸเฉ‡เจŸเจฎเฉˆเจ‚เจŸ- เจ…เจคเฉ‡ เจฐเฉ‹-เจ…เจงเจพเจฐเจฟเจค เจขเฉฐเจ— เจธเจผเจพเจฎเจฒ เจนเจจเฅค

MySQL เจ…เจคเฉ‡ PostgreSQL เจตเจฟเจšเจ•เจพเจฐ เจ•เจฐเจพเจธ เจฐเฉ€เจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ‡เฉฑเจ• เจกเจพเจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐ เจคเฉ‹เจ‚ เจฆเฉ‚เจœเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจพเจฐ เจฎเจพเจˆเจ—เจฐเฉ‡เจธเจผเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจ‡เจธเจฒเจˆ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเฉ‡ เจฒเจฟเฉฐเจ• เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจกเฉ‡เจŸเจพ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฌเจพเจนเจฐเฉ€ เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจŸเฉ‚เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ pg_chameleon.

pg_chameleon เจ•เฉ€ เจนเฉˆ

pg_chameleon เจชเจพเจˆเจฅเจจ 3 เจตเจฟเฉฑเจš MySQL เจคเฉ‹เจ‚ PostgreSQL เจคเฉฑเจ• เจ‡เฉฑเจ• เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจนเฉˆเฅค เจ‡เจน เจ“เจชเจจ เจธเฉ‹เจฐเจธ mysql-เจฐเจฟเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจชเจพเจˆเจฅเจจ เจตเจฟเฉฑเจš เจตเฉ€เฅค เจ•เจคเจพเจฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ MySQL เจŸเฉ‡เจฌเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจ•เฉฑเจขเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ PostgreSQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš JSONB เจตเจธเจคเฉ‚เจ†เจ‚ เจตเจœเฉ‹เจ‚ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจซเจฟเจฐ pl/pgsql เจซเฉฐเจ•เจธเจผเจจ เจฆเฉเจ†เจฐเจพ เจกเฉ€เจ•เฉเจฐเจฟเจชเจŸ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ PostgreSQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจฆเฉเจฌเจพเจฐเจพ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

pg_chameleon เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚

เจ‡เฉฑเจ•เฉ‹ เจ•เจฒเฉฑเจธเจŸเจฐ เจคเฉ‹เจ‚ เจ•เจˆ MySQL เจธเจ•เฉ€เจฎเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจ•เจˆ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจŸเจพเจฐเจ—เฉ‡เจŸ PostgreSQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจฆเฉเจนเจฐเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค
เจธเจฐเฉ‹เจค เจ…เจคเฉ‡ เจŸเฉ€เจšเจพ เจธเจ•เฉ€เจฎเจพ เจจเจพเจฎ เจ‡เฉฑเจ•เฉ‹ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจเฅค
เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจกเฉ‡เจŸเจพ เจ‡เฉฑเจ• เจ•เฉˆเจธเจ•เฉ‡เจกเจก MySQL เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจคเฉ‹เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค
เจ‰เจน เจŸเฉ‡เจฌเจฒ เจœเฉ‹ เจจเจ•เจฒ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ€เจ†เจ‚ เจœเจพเจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจชเฉˆเจฆเจพ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ, เจจเฉ‚เฉฐ เจฌเจพเจนเจฐ เจฐเฉฑเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค
เจนเจฐเฉ‡เจ• เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจซเฉฐเจ•เจธเจผเจจ เจกเฉˆเจฎเจจ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค
YAML-เจ…เจงเจพเจฐเจฟเจค เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฃ.

เจ‰เจฆเจพเจนเจฐเจจ:

เจนเฉ‹เจธเจŸ
เจตเฉ€เจเจฎ 1
เจตเฉ€เจเจฎ 2

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 เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจธเจพเจฐเฉ‡ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจคเจฟเจ†เจฐ เจ•เจฐเฉ‹เฅค เจ‡เจน เจ‰เจฆเจพเจนเจฐเจจ เจชเจพเจˆเจฅเจจ 3.6.8 เจจเฉ‚เฉฐ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจตเจฐเจšเฉเจ…เจฒ เจตเจพเจคเจพเจตเจฐเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจ…เจคเฉ‡ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

$> wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
$> tar -xJf Python-3.6.8.tar.xz
$> cd Python-3.6.8
$> ./configure --enable-optimizations
$> make altinstall

Python3.6 เจจเฉ‚เฉฐ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเจพเจ•เฉ€ เจฒเฉ‹เฉœเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจตเจพเจคเจพเจตเจฐเจจ เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจ•เจฐเจจเจพเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจชเจพเจˆเจช เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจฒเจˆ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ pg_chameleon เจจเฉ‚เฉฐ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ pg_chameleon 2.0.9 เจจเฉ‚เฉฐ เจœเจพเจฃเจฌเฉเฉฑเจ เจ•เฉ‡ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจ, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ 2.0.10 เจนเฉˆเฅค เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš เจจเจตเฉ‡เจ‚ เจฌเฉฑเจ— เจคเฉ‹เจ‚ เจฌเจšเจฃ เจฒเจˆ เจ‡เจน เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค

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

เจ…เจธเฉ€เจ‚ เจซเจฟเจฐ pg_chameleon เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจกเจฟเจซเจพเจฒเจŸ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ set_configuration_files เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจฆเฉ‡ เจจเจพเจฒ pg_chameleon (เจ—เฉเจฐเจฟเจ—เจŸ เจ‡เฉฑเจ• เจ•เจฎเจพเจ‚เจก เจนเฉˆ) เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

(venv) $> chameleon set_configuration_files
creating directory /root/.pg_chameleon
creating directory /root/.pg_chameleon/configuration/
creating directory /root/.pg_chameleon/logs/
creating directory /root/.pg_chameleon/pid/
copying configuration  example in /root/.pg_chameleon/configuration//config-example.yml

เจนเฉเจฃ เจ…เจธเฉ€เจ‚ config-example.yml เจฆเฉ€ เจ‡เฉฑเจ• เจ•เจพเจชเฉ€ default.yml เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจคเจพเจ‚ เจœเฉ‹ เจ‡เจน เจกเจฟเจซเจพเจฒเจŸ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒ เจฌเจฃ เจœเจพเจตเฉ‡เฅค เจ‡เจธ เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจจเจฎเฉ‚เจจเจพ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจ‡เจฒ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจนเฉˆเฅค

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

# type_override allows the user to override the default type conversion into a different one.
type_override:
  "tinyint(1)":
    override_to: boolean
    override_tables:
      - "*"

#postgres  destination connection
pg_conn:
  host: "192.168.56.106"
  port: "5433"
  user: "usr_replica"
  password: "pass123"
  database: "db_replica"
  charset: "utf8"

sources:
  mysql:
    db_conn:
      host: "192.168.56.102"
      port: "3306"
      user: "usr_replica"
      password: "pass123"
      charset: 'utf8'
      connect_timeout: 10
    schema_mappings:
      world_x: pgworld_x
    limit_tables:
#      - delphis_mediterranea.foo
    skip_tables:
#      - delphis_mediterranea.bar
    grant_select_to:
      - usr_readonly
    lock_timeout: "120s"
    my_server_id: 100
    replica_batch_size: 10000
    replay_max_rows: 10000
    batch_retention: '1 day'
    copy_max_memory: "300M"
    copy_mode: 'file'
    out_dir: /tmp
    sleep_loop: 1
    on_error_replay: continue
    on_error_read: continue
    auto_maintenance: "disabled"
    gtid_enable: No
    type: mysql
    skip_events:
      insert:
        - delphis_mediterranea.foo #skips inserts on the table delphis_mediterranea.foo
      delete:
        - delphis_mediterranea #skips deletes on schema delphis_mediterranea
      update:

เจ‡เจธ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจ‡เจฒ เจ‡เฉฑเจ• เจจเจฎเฉ‚เจจเจพ pg_chameleon เจซเจพเจ‡เจฒ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจฐเฉ‹เจค เจ…เจคเฉ‡ เจŸเจพเจฐเจ—เฉ‡เจŸ เจตเจพเจคเจพเจตเจฐเจฃ เจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒ เจนเฉ‹เจฃ เจฒเจˆ เจฎเจพเจฎเฉ‚เจฒเฉ€ เจธเฉ‹เจงเจพเจ‚ เจนเจจ, เจ…เจคเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจ‡เจฒ เจฆเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจญเจพเจ—เจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉฐเจ–เฉ‡เจช เจœเจพเจฃเจ•เจพเจฐเฉ€ เจนเฉˆเฅค

default.yml เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ—เจฒเฉ‹เจฌเจฒ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจญเจพเจ— เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจœเจฟเฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฒเจพเจ• เจซเจพเจˆเจฒ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€, เจฒเฉŒเจ—เจธ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€, เจฒเฉŒเจ—เจธ เจฒเจˆ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ€ เจฎเจฟเจ†เจฆ เจ†เจฆเจฟเฅค เจ…เฉฑเจ—เฉ‡ เจŸเจพเจˆเจช เจ“เจตเจฐเจฐเจพเจˆเจก เจธเฉˆเจ•เจธเจผเจจ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเฉฑเจฅเฉ‡ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจ“เจตเจฐเจฐเจพเจˆเจกเจฟเฉฐเจ— เจ•เจฟเจธเจฎเจพเจ‚ เจฒเจˆ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจนเฅค เจ‰เจฆเจพเจนเจฐเจจ เจ‡เฉฑเจ• เจŸเจพเจˆเจช เจ“เจตเจฐเจฐเจพเจˆเจกเจฟเฉฐเจ— เจจเจฟเจฏเจฎ เจฒเจˆ เจกเจฟเจซเฉŒเจฒเจŸ เจนเฉˆ เจœเฉ‹ tinyint(1) เจจเฉ‚เฉฐ เจฌเฉ‚เจฒเฉ€เจ…เจจ เจฎเฉเฉฑเจฒ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฆเจพ เจนเฉˆเฅค เจ…เจ—เจฒเฉ‡ เจญเจพเจ— เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจŸเจพเจฐเจ—เฉ‡เจŸ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจตเฉ‡เจฐเจตเฉ‡ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เจน เจ‡เฉฑเจ• PostgreSQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจนเฉˆ, เจฎเจจเฉ‹เจจเฉ€เจค pg_conn. เจชเจฟเจ›เจฒเฉ‡ เจญเจพเจ— เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจธเจฐเฉ‹เจค เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจฏเจพเจจเฉ€ เจธเจฐเฉ‹เจค เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ‡ เจ•เจจเฉˆเจ•เจธเจผเจจ เจฎเจพเจชเจฆเฉฐเจก, เจธเจฐเฉ‹เจค เจ…เจคเฉ‡ เจŸเจพเจฐเจ—เฉ‡เจŸ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเจšเจ•เจพเจฐ เจฎเฉˆเจชเจฟเฉฐเจ— เจธเจ•เฉ€เจฎ, เจŸเฉ‡เจฌเจฒ เจœเจฟเจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจ›เฉฑเจกเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจ‰เจกเฉ€เจ• เจธเจฎเจพเจ‚, เจฎเฉˆเจฎเฉ‹เจฐเฉ€, เจชเฉˆเจ•เฉ‡เจœ เจฆเจพ เจ†เจ•เจพเจฐเฅค เจจเฉ‹เจŸ เจ•เจฐเฉ‹ เจ•เจฟ "เจธเจฐเฉ‹เจค" เจฌเจนเฉเจตเจšเจจ เจนเฉˆ, เจฎเจคเจฒเจฌ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ•เจˆ-เจคเฉ‹เจ‚-เจ‡เฉฑเจ• เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจŸเจพเจฐเจ—เฉ‡เจŸ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ•เจˆ เจธเจฐเฉ‹เจค เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจœเฉ‹เฉœ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

เจ‰เจฆเจพเจนเจฐเจจ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ world_x เจตเจฟเฉฑเจš เจ•เจคเจพเจฐเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ 4 เจŸเฉ‡เจฌเจฒ เจนเจจ เจœเฉ‹ MySQL เจ•เจฎเจฟเจŠเจจเจฟเจŸเฉ€ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจตเจœเฉ‹เจ‚ เจชเฉ‡เจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ‡เฉฑเจฅเฉ‡. เจจเจฎเฉ‚เจจเจพ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ•เจคเจพเจฐเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจ†เจฏเจพเจค เจ•เจฐเจจ เจฒเจˆ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจŸเจพเจฐ เจ…เจคเฉ‡ เจธเฉฐเจ•เฉเจšเจฟเจค เจชเฉเจฐเจพเจฒเฉ‡เจ– เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

MySQL เจ…เจคเฉ‡ PostgreSQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ‰เจธเฉ‡ เจจเจพเจฎ เจจเจพเจฒ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ usr_replica. MySQL เจตเจฟเฉฑเจš, เจ‡เจธ เจจเฉ‚เฉฐ เจธเจพเจฐเฉ€เจ†เจ‚ เจจเจ•เจฒ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจฒเจˆ เจตเจพเจงเฉ‚ เจชเฉœเฉเจนเจจ เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจฆเจฟเฉฑเจคเฉ‡ เจ—เจ เจนเจจเฅค

mysql> CREATE USER usr_replica ;
mysql> SET PASSWORD FOR usr_replica='pass123';
mysql> GRANT ALL ON world_x.* TO 'usr_replica';
mysql> GRANT RELOAD ON *.* to 'usr_replica';
mysql> GRANT REPLICATION CLIENT ON *.* to 'usr_replica';
mysql> GRANT REPLICATION SLAVE ON *.* to 'usr_replica';
mysql> FLUSH PRIVILEGES;

PostgreSQL เจชเจพเจธเฉ‡, เจ‡เฉฑเจ• db_replica เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ เจœเฉ‹ MySQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจคเฉ‹เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเฉ‡เจ—เจพเฅค PostgreSQL เจตเจฟเฉฑเจš เจฏเฉ‚เจœเจผเจฐ usr_replica เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจฆเฉ‹ เจธเจ•เฉ€เจฎเจพเจ‚, pgworld_x เจ…เจคเฉ‡ sch_chameleon เจฆเฉ‡ เจฎเจพเจฒเจ• เจตเจœเฉ‹เจ‚ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ•เฉเจฐเจฎเจตเจพเจฐ เจ…เจธเจฒ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจŸเฉ‡เจฌเจฒ เจ…เจคเฉ‡ เจฐเฉ€เจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจŸเฉ‡เจฌเจฒ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค create_replica_schema เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเฉ‡เจ–เฉ‹เจ—เฉ‡เฅค

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

MySQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจ•เฉเจ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเจพเจฒ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจ‡เจธเจจเฉ‚เฉฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฐเจธเจพเจ เจ…เจจเฉเจธเจพเจฐ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เฉ‡เฅค เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

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

เจนเฉเจฃ เจฆเฉ‹เจตเจพเจ‚ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐเจพเจ‚ เจจเจพเจฒ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ pg_chameleon เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡ เจ•เฉ‹เจˆ เจธเจฎเฉฑเจธเจฟเจ† เจจเจพ เจ†เจตเฉ‡เฅค

PostgreSQL เจจเฉ‹เจก 'เจคเฉ‡:

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

MySQL เจจเฉ‹เจก 'เจคเฉ‡:

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

เจ…เจ—เจฒเฉ€เจ†เจ‚ เจคเจฟเฉฐเจจ pg_chameleon (chameleon) เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจคเจฟเจ†เจฐ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจ, เจธเจฐเฉ‹เจค เจœเฉ‹เฉœเจฆเฉ€เจ†เจ‚ เจนเจจ, เจ…เจคเฉ‡ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค pg_chameleon เจฒเจˆ create_replica_schema เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ PostgreSQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจกเจฟเจซเจพเจฒเจŸ เจธเจ•เฉ€เจฎเจพ (sch_chameleon) เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฐเฉ€เจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจ•เฉ€เจฎเจพ (pgworld_x) เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจšเจฐเจšเจพ เจ•เฉ€เจคเฉ€ เจนเฉˆเฅค add_source เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจซเจพเจˆเจฒ (default.yml) เจจเฉ‚เฉฐ เจชเฉœเฉเจน เจ•เฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฐเฉ‹เจค เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เจน mysql เจนเฉˆ, เจ…เจคเฉ‡ init_replica เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

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

เจ‡เจนเจจเจพเจ‚ เจคเจฟเฉฐเจจเจพเจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเจพ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ เจคเฉ‡ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจšเจฒเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€เฅค เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ•เจฐเฉˆเจธเจผ เจœเจพเจ‚ เจธเจฟเฉฐเจŸเฉˆเจ•เจธ เจฆเฉ€เจ†เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจฐเจฟเจชเฉ‹เจฐเจŸ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจนเฉฑเจฒ เจ•เจฐเจจ เจฆเฉ‡ เจธเฉฐเจ•เฉ‡เจคเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจธเจงเจพเจฐเจจ, เจธเจชเจธเจผเจŸ เจธเฉฐเจฆเฉ‡เจธเจผเจพเจ‚ เจตเจฟเฉฑเจš เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ start_replica เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเจซเจฒเจคเจพ เจธเฉเจจเฉ‡เจนเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

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

เจธเจผเฉ‹_เจธเจŸเฉˆเจŸเจธ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจฅเจฟเจคเฉ€ เจฆเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจ—เจฒเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ show_errors เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฆเฉ‡เจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจจเจคเฉ€เจœเจพ

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ•เจฟเจนเจพ เจนเฉˆ, เจนเจฐเฉ‡เจ• เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจซเฉฐเจ•เจธเจผเจจ เจกเฉˆเจฎเจจ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจฒเฉ€เจจเจ•เจธ ps เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจธเจพเจฐเจฃเฉ€ เจฆเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเจ–เจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค

เจจเจคเฉ€เจœเจพ

เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจ‰เจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจจเจนเฉ€เจ‚ เจฎเฉฐเจจเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ…เจธเฉ€เจ‚ เจ‡เจธเจฆเฉ€ เจ…เจธเจฒ เจธเจฎเฉ‡เจ‚ เจตเจฟเฉฑเจš เจœเจพเจ‚เจš เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเจ–เจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, MySQL เจกเจพเจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ•เฉเจ เจฐเจฟเจ•เจพเจฐเจก เจธเจผเจพเจฎเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจกเฉˆเจฎเจจ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจ เจฒเจˆ เจ…เจคเฉ‡ เจŸเฉ‡เจฌเจฒ เจจเฉ‚เฉฐ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเจพเจฒ PostgreSQL เจกเจพเจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจจเจ•เจฒ เจ•เจฐเจจ เจฒเจˆ pg_chameleon เจตเจฟเฉฑเจš เจธเจฟเฉฐเจ•_เจŸเฉ‡เจฌเจฒ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

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 เจธเจฐเจตเจฐ, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจ•เจฒเจพเจ‰เจก เจกเจพเจŸเจพเจฌเฉ‡เจธ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ Redshift, เจ…เจœเจผเฉ‚เจฐ, เจ†เจฆเจฟ เจ‰เจชเจฒเจฌเจง เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚: เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ…เจคเฉ‡ เจซเจพเจˆเจฒ เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจพเจˆเจœเจผเฉ‡เจธเจผเจจ, เจฎเจฒเจŸเฉ€-เจฎเจพเจธเจŸเจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฐเฉ€เจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจซเจฟเจฒเจŸเจฐเจก เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจพเจˆเจœเจผเฉ‡เจธเจผเจจ, เจŸเฉเจฐเจพเจ‚เจธเจซเจพเจฐเจฎเฉ‡เจธเจผเจจ เจ…เจคเฉ‡ เจนเฉ‹เจฐเฅค เจ‡เจน เจ‡เฉฑเจ• Java เจŸเฉ‚เจฒ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจฒเจˆ JRE เจœเจพเจ‚ JDK (เจตเจฐเจœเจจ 8.0 เจœเจพเจ‚ เจ‰เฉฑเจšเจพ) เจฆเฉ€ เจ‡เฉฑเจ• เจฎเจฟเจ†เจฐเฉ€ เจฐเฉ€เจฒเฉ€เจœเจผ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡, เจธเจฐเฉ‹เจค เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจŸเจฐเจฟเจ—เจฐเจพเจ‚ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฐเจฟเจ•เจพเจฐเจก เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฌเฉˆเจšเจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‰เจšเจฟเจค เจŸเจพเจฐเจ—เฉ‡เจŸ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

SymmetricDS เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚

เจŸเฉ‚เจฒ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจธเฉเจคเฉฐเจคเจฐ เจนเฉˆ, เจฎเจคเจฒเจฌ เจ•เจฟ เจฆเฉ‹ เจœเจพเจ‚ เจฆเฉ‹ เจคเฉ‹เจ‚ เจตเฉฑเจง เจตเฉฑเจ–-เจตเฉฑเจ– เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจกเฉ‡เจŸเจพ เจฆเจพ เจ†เจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจเฅค
เจฐเจฟเจฒเฉ‡เจธเจผเจจเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจกเฉ‡เจŸเจพ เจชเจฐเจฟเจตเจฐเจคเจจ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจฎเจ•เจพเจฒเฉ€ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ-เจ…เจงเจพเจฐเจฟเจค เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจซเจพเจˆเจฒ เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค
เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจชเฉเจธเจผ เจ…เจคเฉ‡ เจชเฉเฉฑเจฒ เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจฆเฉ‹-เจชเฉฑเจ–เฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เฅค
เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ…เจคเฉ‡ เจ˜เฉฑเจŸ-เจฌเฉˆเจ‚เจกเจตเจฟเจกเจฅ เจจเฉˆเฉฑเจŸเจตเจฐเจ•เจพเจ‚ 'เจคเฉ‡ เจกเจพเจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจธเฉฐเจญเจต เจนเฉˆเฅค
เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจฐเจฟเจ•เจตเจฐเฉ€ เจœเจฆเฉ‹เจ‚ เจจเฉ‹เจก เจ‡เฉฑเจ• เจ…เจธเจซเจฒเจคเจพ เจ…เจคเฉ‡ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจ…เจชเจตเจพเจฆ เจฐเฉˆเจœเจผเฉ‹เจฒเฉ‚เจธเจผเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฎเฉเฉœ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค
เจ•เจฒเจพเจ‰เจก เจ…เจจเฉเจ•เฉ‚เจฒ เจ…เจคเฉ‡ เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ APIsเฅค

เจ‰เจฆเจพเจนเจฐเจจ:

SymmetricDS เจจเฉ‚เฉฐ เจฆเฉ‹ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจตเจฟเฉฑเจš เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ:
เจ‡เฉฑเจ• เจฎเจพเจธเจŸเจฐ (เจฎเจพเจคเจพ) เจจเฉ‹เจก เจœเฉ‹ เจฆเฉ‹ เจธเจฒเฉ‡เจต (เจฌเฉฑเจšเฉ‡) เจจเฉ‹เจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจกเจพเจŸเจพ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเจพ เจ•เฉ‡เจ‚เจฆเจฐเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจคเจพเจฒเจฎเฉ‡เจฒ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจšเจพเจˆเจฒเจก เจจเฉ‹เจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจธเฉฐเจšเจพเจฐ เจธเจฟเจฐเจซ เจฎเจพเจคเจพ-เจชเจฟเจคเจพ เจฆเฉเจ†เจฐเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค
เจ‡เฉฑเจ• เจธเจฐเจ—เจฐเจฎ เจจเฉ‹เจก (เจจเฉ‹เจก 1) เจ•เจฟเจธเฉ‡ เจตเจฟเจšเฉ‹เจฒเฉ‡ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจธเจฐเจ—เจฐเจฎ เจจเฉ‹เจก (เจจเฉ‹เจก 2) เจจเจพเจฒ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฒเจˆ เจธเฉฐเจšเจพเจฐ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจฆเฉ‹เจตเจพเจ‚ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจตเจฟเฉฑเจš, เจชเฉเจธเจผ เจ…เจคเฉ‡ เจชเฉเฉฑเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจกเฉ‡เจŸเจพ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจฐเจ—เจฐเจฎ-เจธเจฐเจ—เจฐเจฎ เจธเฉฐเจฐเจšเจจเจพ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจชเฉ‚เจฐเฉ‡ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจฎเจพเจ‚ เจฒเฉฑเจ—เฉ‡เจ—เจพ, เจ‡เจธ เจฒเจˆ เจ†เจชเจฃเฉ€ เจ–เฉ‹เจœ เจ•เจฐเฉ‹เฅค เจ…เจ—เจตเจพเจˆSymmetricDS เจกเจฟเจตเจพเจˆเจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเจจ เจฒเจˆเฅค

เจธเจฟเจฎเจŸเฉเจฐเจฟเจ•เจกเฉ€เจเจธ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจเจพ เจฌเจนเฉเจค เจธเฉŒเจ–เจพ เจนเฉˆ: เจœเจผเจฟเจช เจซเจพเจˆเจฒ เจฆเจพ เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจธเฉฐเจธเจ•เจฐเจฃ เจกเจพเจ‰เจจเจฒเฉ‹เจก เจ•เจฐเฉ‹ เจ‡เฉฑเจฅเฉ‹เจ‚ เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจฌเจพเจนเจฐ เจฒเฉˆ เจœเจพเจ“ เจœเจฟเฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹เฅค เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจธเจพเจฐเจฃเฉ€ เจ‡เจธ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš SymmetricDS เจฆเฉ‡ เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจŸเจฟเจ•เจพเจฃเฉ‡ เจ…เจคเฉ‡ เจตเจฐเจœเจจ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ, เจจเจพเจฒ เจนเฉ€ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจตเจฐเจœเจจ, เจฒเฉ€เจจเจ•เจธ เจตเจฐเจœเจจ, IP เจเจกเจฐเฉˆเฉฑเจธ, เจ…เจคเฉ‡ เจฆเฉ‹เจจเฉ‹ เจจเฉ‹เจกเจพเจ‚ เจฒเจˆ เจชเฉ‹เจฐเจŸเจพเจ‚เฅค

เจนเฉ‹เจธเจŸ
เจตเฉ€เจเจฎ 1
เจตเฉ€เจเจฎ 2

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 เจธเฉฐเจธเจ•เจฐเจฃ
เจธเจฟเจฎเจŸเฉเจฐเจฟเจ•เจกเฉ€เจเจธ 3.9
เจธเจฟเจฎเจŸเฉเจฐเจฟเจ•เจกเฉ€เจเจธ 3.9

SymmetricDS เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจฎเจพเจฐเจ—
/usr/local/symmetric-server-3.9.20
/usr/local/symmetric-server-3.9.20

SymmetricDS เจจเฉ‹เจก เจจเจพเจฎ
เจ•เจพเจฐเจชเฉ‹เจฐเฉ‡เจธเจผเจจ-000
เจธเจŸเฉ‹เจฐ-001

เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ /usr/local/symmetric-server-3.9.20 เจตเจฟเฉฑเจš SymmetricDS เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจธเจฌ-เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจ‰เฉฑเจฅเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจฃเจ—เฉ€เจ†เจ‚เฅค เจ…เจธเฉ€เจ‚ เจจเจฎเฉ‚เจจเฉ‡ เจ…เจคเฉ‡ เจ‡เฉฐเจœเจฃ เจ‰เจช-เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚. เจจเจฎเฉ‚เจจเจพ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจจเฉ‹เจก เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‰เจฆเจพเจนเจฐเจจ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒเจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเจจ, เจจเจพเจฒ เจนเฉ€ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจœเจฒเจฆเฉ€ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ SQL เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจนเฉˆเฅค

เจธเฉˆเจ‚เจชเจฒ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจจเฉ‹เจก เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจตเจพเจฒเฉ€เจ†เจ‚ เจคเจฟเฉฐเจจ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒเจพเจ‚ เจตเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ - เจจเจพเจฎ เจ‡เฉฑเจ• เจ–เจพเจธ เจธเจ•เฉ€เจฎ เจตเจฟเฉฑเจš เจจเฉ‹เจก เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจคเฉ€ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

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

เจธเจฟเจฎเจŸเฉเจฐเจฟเจ•เจกเฉ€เจเจธ เจ•เฉ‹เจฒ เจฌเฉเจจเจฟเจ†เจฆเฉ€ 3-เจจเฉ‹เจก เจกเจฟเจœเจผเจพเจˆเจจ (เจตเจฟเจ•เจฒเจช 1) เจฒเจˆ เจธเจพเจฐเฉ€เจ†เจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒเจพเจ‚ เจนเจจ, เจ…เจคเฉ‡ เจ‰เจนเฉ€ เจซเจพเจˆเจฒเจพเจ‚ 2-เจจเฉ‹เจก เจกเจฟเจœเจผเจพเจˆเจจ (เจตเจฟเจ•เจฒเจช 2) เจฒเจˆ เจตเจฐเจคเฉ€เจ†เจ‚ เจœเจพ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจธเฉˆเจ‚เจชเจฒ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจคเฉ‹เจ‚ vm1 เจนเฉ‹เจธเจŸ 'เจคเฉ‡ เจ‡เฉฐเจœเจฃเจพเจ‚ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเฉ‹เฅค เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจจเจฟเจ•เจฒเจฆเจพ เจนเฉˆ:

$> cat engines/corp-000.properties
engine.name=corp-000
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://192.168.1.107:3306/replica_db?autoReconnect=true&useSSL=false
db.user=root
db.password=admin123
registration.url=
sync.url=http://192.168.1.107:31415/sync/corp-000
group.id=corp
external.id=000

SymmetricDS เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจ‡เจธ เจจเฉ‹เจก เจจเฉ‚เฉฐ corp-000 เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ•เจจเฉˆเจ•เจธเจผเจจ เจจเฉ‚เฉฐ mysql jdbc เจกเจฐเจพเจˆเจตเจฐ เจฆเฉเจ†เจฐเจพ เจนเฉˆเจ‚เจกเจฒ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ‰เฉฑเจชเจฐ เจฆเจฟเฉฑเจคเฉ€ เจ•เจจเฉˆเจ•เจธเจผเจจ เจธเจคเจฐ เจ…เจคเฉ‡ เจฒเฉŒเจ—เจ‡เจจ เจชเฉเจฐเจฎเจพเจฃ เจชเฉฑเจคเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ replica_db เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจœเฉเฉœเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจธเจ•เฉ€เจฎเจพ เจฌเจฃเจพเจ‰เจฃ เจฆเฉŒเจฐเจพเจจ เจŸเฉ‡เจฌเจฒ เจฌเจฃเจพเจ เจœเจพเจฃเจ—เฉ‡เฅค sync.url เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจฎเจ•เจพเจฒเฉ€เจ•เจฐเจจ เจฒเจˆ เจจเฉ‹เจก เจจเจพเจฒ เจ•เจฟเฉฑเจฅเฉ‡ เจธเฉฐเจชเจฐเจ• เจ•เจฐเจจเจพ เจนเฉˆเฅค

เจนเฉ‹เจธเจŸ vm2 'เจคเฉ‡ เจจเฉ‹เจก 2 เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ-001 เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจฌเจพเจ•เฉ€ เจจเฉ‚เฉฐ เจนเฉ‡เจ เจพเจ‚ node.properties เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจจเฉ‹เจก เจธเจŸเฉ‹เจฐ-001 PostgreSQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ pgdb_replica เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจนเฉˆเฅค registration.url เจนเฉ‹เจธเจŸ vm2 เจจเฉ‚เฉฐ เจนเฉ‹เจธเจŸ vm1 เจจเจพเจฒ เจธเฉฐเจชเจฐเจ• เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เจธ เจคเฉ‹เจ‚ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจตเฉ‡เจฐเจตเฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

$> cat engines/store-001.properties
engine.name=store-001
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://192.168.1.112:5832/pgdb_replica
db.user=postgres
db.password=admin123
registration.url=http://192.168.1.107:31415/sync/corp-000
group.id=store
external.id=001

เจฎเฉเจ•เฉฐเจฎเจฒ เจนเฉ‹เจˆ SymmetricDS เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš เจฆเฉ‹ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐเจพเจ‚ (เจฆเฉ‹ เจจเฉ‹เจกเจพเจ‚) เจตเจฟเจšเจ•เจพเจฐ เจฆเฉ‹-เจชเฉฑเจ–เฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจฎเจพเจชเจฆเฉฐเจก เจธเจผเจพเจฎเจฒ เจนเจจเฅค เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ•เจฆเจฎ เจนเฉ‹เจธเจŸ vm1 (corp-000) 'เจคเฉ‡ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ, เจœเฉ‹ 4 เจŸเฉ‡เจฌเจฒเจพเจ‚ เจจเจพเจฒ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจธเจ•เฉ€เจฎเจพ เจฌเจฃเจพเจเจ—เจพเฅค เจซเจฟเจฐ symadmin เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ create-sym-tables เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจŸเฉ‡เจฌเจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจจเฉ‹เจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจจเจ•เจฒ เจฆเฉ‡ เจจเจฟเจฏเจฎ เจ…เจคเฉ‡ เจฆเจฟเจธเจผเจพ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€เฅค เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจจเจฎเฉ‚เจจเจพ เจกเฉ‡เจŸเจพ เจŸเฉ‡เจฌเจฒ เจตเจฟเฉฑเจš เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

vm1$> cd /usr/local/symmetric-server-3.9.20/bin
vm1$> ./dbimport --engine corp-000 --format XML create_sample.xml
vm1$> ./symadmin --engine corp-000 create-sym-tables
vm1$> ./dbimport --engine corp-000 insert_sample.sql

เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจ†เจˆเจŸเจฎ เจ…เจคเฉ‡ เจ†เจˆเจŸเจฎ_เจธเฉ‡เจฒเจฟเฉฐเจ—_เจ•เฉ€เจฎเจค เจŸเฉ‡เจฌเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจพเจฐเจชเฉ‹เจฐเฉ‡เจธเจผเจจ-000 เจคเฉ‹เจ‚ เจธเจŸเฉ‹เจฐ-001 เจคเฉฑเจ• เจฆเฉเจนเจฐเจพเจ‰เจฃ เจฒเจˆ เจธเจตเฉˆเจšเจฒเจฟเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจธเฉ‡เจฒ เจŸเฉ‡เจฌเจฒ (เจตเจฟเจ•เจฐเฉ€_เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจ…เจคเฉ‡ เจธเฉ‡เจฒ_เจฐเจฟเจŸเจฐเจจ_เจฒเจพเจˆเจจ_เจ†เจˆเจŸเจฎ) เจธเจŸเฉ‹เจฐ-001 เจคเฉ‹เจ‚ เจ•เจพเจฐเจชเฉ‹เจฐเฉ‡เจธเจผเจจ-000 เจคเฉฑเจ• เจฆเฉเจนเจฐเจพเจ‰เจฃ เจฒเจˆ เจธเจตเฉˆเจšเจฒเจฟเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจนเฉ‹เจธเจŸ vm2 (store-001) เจ‰เฉฑเจคเฉ‡ PostgreSQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจ•เฉ€เจฎเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจคเจพเจ‚ เจœเฉ‹ เจ‡เจธเจจเฉ‚เฉฐ corp-000 เจคเฉ‹เจ‚ เจกเจพเจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เฉ‡เฅค

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

เจ‡เจน เจœเจพเจ‚เจš เจ•เจฐเจจเจพ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ“ เจ•เจฟ vm1 'เจคเฉ‡ MySQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ‰เจฆเจพเจนเจฐเจจ เจŸเฉ‡เจฌเจฒ เจ…เจคเฉ‡ SymmetricDS เจ•เฉˆเจŸเจพเจฒเจพเจ— เจŸเฉ‡เจฌเจฒ เจนเจจเฅค เจจเฉ‹เจŸ เจ•เจฐเฉ‹ เจ•เจฟ SymmetricDS เจธเจฟเจธเจŸเจฎ เจŸเฉ‡เจฌเจฒ (sym_ เจจเจพเจฒ เจชเฉเจฐเฉ€เจซเจฟเจ•เจธเจก) เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซ เจจเฉ‹เจก corp-000 'เจคเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเจจ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจ‰เจน เจฅเจพเจ‚ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ create-sym-tables เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจ…เจคเฉ‡ เจจเฉ‹เจก เจธเจŸเฉ‹เจฐ-001 เจฆเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจธเจฟเจฐเจซ 4 เจ‰เจฆเจพเจนเจฐเจฃ เจŸเฉ‡เจฌเจฒ เจนเฉ‹เจฃเจ—เฉ‡เฅค

เจธเจพเจฐเฉ‡เฅค เจตเจพเจคเจพเจตเจฐเจฃ เจฆเฉ‹เจตเจพเจ‚ เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจธเจฟเจฎ เจธเจฐเจตเจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจคเจฟเจ†เจฐ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเจ–เจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค

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

เจฒเฉŒเจ— เจเจ‚เจŸเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจฒเฉŒเจ— เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฌเฉˆเจ•เจ—เฉเจฐเจพเจ‰เจ‚เจก เจฒเฉŒเจ— เจซเจพเจˆเจฒ (symmetric.log) เจตเจฟเฉฑเจš เจญเฉ‡เจœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ SymmetricDS เจ‡เฉฐเจธเจŸเจพเจฒ เจนเฉˆ, เจ…เจคเฉ‡ เจจเจพเจฒ เจนเฉ€ เจฎเจฟเจ†เจฐเฉ€ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจตเฉ€เฅค เจธเจฟเจฎ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจนเฉเจฃ เจจเฉ‹เจก เจธเจŸเฉ‹เจฐ-001 'เจคเฉ‡ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

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

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ vm2 เจนเฉ‹เจธเจŸ 'เจคเฉ‡ เจธเจฟเจฎ เจธเจฐเจตเจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจน PostgreSQL เจกเจพเจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš SymmetricDS เจ•เฉˆเจŸเจพเจฒเจพเจ— เจŸเฉ‡เจฌเจฒ เจตเฉ€ เจฌเจฃเจพเจเจ—เจพเฅค เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‹เจตเจพเจ‚ เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจธเจฟเจฎ เจธเจฐเจตเจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‰เจน เจ•เจพเจฐเจช-000 เจคเฉ‹เจ‚ เจธเจŸเฉ‹เจฐ-001 เจคเฉฑเจ• เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฆเฉเจนเจฐเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจคเจพเจฒเจฎเฉ‡เจฒ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจœเฉ‡เจ•เจฐ เจ•เฉเจ เจธเจ•เจฟเฉฐเจŸเจพเจ‚ เจฌเจพเจ…เจฆ เจ…เจธเฉ€เจ‚ เจฆเฉ‹เจตเจพเจ‚ เจชเจพเจธเจฟเจ†เจ‚ เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ 4 เจŸเฉ‡เจฌเจฒเจพเจ‚ เจฆเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡ เจ•เจฟ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจซเจฒ เจธเฉ€เฅค เจœเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจนเฉ‡เจ เจฒเฉ€ เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ corp-001 เจคเฉ‹เจ‚ เจจเฉ‹เจก เจธเจŸเฉ‹เจฐ-000 เจจเฉ‚เฉฐ เจฌเฉ‚เจŸเจธเจŸเจฐเฉˆเจช เจญเฉ‡เจœ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

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

เจ‡เจธ เจฌเจฟเฉฐเจฆเฉ‚ 'เจคเฉ‡, เจจเฉ‹เจก เจ•เจพเจฐเจช-000 (เจนเฉ‹เจธเจŸ: vm1) 'เจคเฉ‡ MySQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ†เจˆเจŸเจฎ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจฐเจฟเจ•เจพเจฐเจก เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจจเฉ‹เจก เจธเจŸเฉ‹เจฐ-001 (เจนเฉ‹เจธเจŸ: vm2) 'เจคเฉ‡ PostgreSQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ…เจธเฉ€เจ‚ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ corp-000 เจคเฉ‹เจ‚ เจธเจŸเฉ‹เจฐ-001 เจตเจฟเฉฑเจš เจฒเจฟเจœเจพเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเฉฑเจฒ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚เฅค

mysql> insert into item values ('22000002','Jelly Bean');
Query OK, 1 row affected (0.00 sec)

vm2$> psql -p 5832 -U postgres pgdb_replica -c "select * from item"
 item_id  |   name
----------+-----------
 11000001 | Yummy Gum
 22000002 | Jelly Bean
(2 rows)

เจธเจŸเฉ‹เจฐ-001 เจคเฉ‹เจ‚ เจ•เจพเจฐเจชเฉ‹เจฐเฉ‡เจธเจผเจจ-000 เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฒเจฟเจœเจพเจฃ เจฒเจˆ เจชเฉเจธเจผ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ sale_transaction เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฐเจฟเจ•เจพเจฐเจก เจธเจผเจพเจฎเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจซเจฒ เจนเฉˆเฅค

เจจเจคเฉ€เจœเจพ

เจ…เจธเฉ€เจ‚ MySQL เจ…เจคเฉ‡ PostgreSQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจ‰เจฆเจพเจนเจฐเจจ เจŸเฉ‡เจฌเจฒ เจฆเฉ€ เจฆเฉ‹-เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเจพ เจธเจซเจฒ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚เฅค เจจเจตเฉ‡เจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจŸเฉ‡เจฌเจฒ เจฒเจˆ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ, เจ‡เจนเจจเจพเจ‚ เจ•เจฆเจฎเจพเจ‚ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเฉ‹: เจ…เจธเฉ€เจ‚ เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ เจŸเฉ‡เจฌเจฒ t1 เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ…เจธเฉ€เจ‚ corp-000 เจคเฉ‹เจ‚ เจธเจŸเฉ‹เจฐ-001 เจคเฉฑเจ• เจธเจฟเจฐเจซ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

mysql> create table  t1 (no integer);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into sym_channel (channel_id,create_time,last_update_time) 
values ('t1',current_timestamp,current_timestamp);
Query OK, 1 row affected (0.01 sec)

mysql> insert into sym_trigger (trigger_id, source_table_name,channel_id,
last_update_time, create_time) values ('t1', 't1', 't1', current_timestamp,
current_timestamp);
Query OK, 1 row affected (0.01 sec)

mysql> insert into sym_trigger_router (trigger_id, router_id,
Initial_load_order, create_time,last_update_time) values ('t1',
'corp-2-store-1', 1, current_timestamp,current_timestamp);
Query OK, 1 row affected (0.01 sec)

เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจซเจฟเจฐ เจธเจ•เฉ€เจฎเจพ เจคเจฌเจฆเฉ€เจฒเฉ€ เจฌเจพเจฐเฉ‡ เจธเฉ‚เจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจฏเจพเจจเฉ€, เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจธเจพเจฐเจฃเฉ€ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจเจพ, เจธเจฟเฉฐเจ•-เจŸเฉเจฐเจฟเจ—เจฐ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจฆเฉ‡ เจจเจพเจฒ symadmin เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจœเฉ‹ เจŸเฉ‡เจฌเจฒ เจชเจฐเจฟเจญเจพเจธเจผเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉˆเจช เจ•เจฐเจจ เจฒเจˆ เจŸเจฐเจฟเจ—เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค send-schema เจจเฉ‚เฉฐ เจจเฉ‹เจก เจธเจŸเฉ‹เจฐ-001 เจตเจฟเฉฑเจš เจธเจ•เฉ€เจฎเจพ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจญเฉ‡เจœเจฃ เจฒเจˆ เจšเจฒเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจŸเฉ‡เจฌเจฒ t1 เจฆเฉ€ เจจเจ•เจฒ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

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

SymmetricDS เจฆเฉ‡ เจฒเจพเจญ

เจ†เจธเจพเจจ เจธเจฅเจพเจชเจจเจพ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ, เจคเจฟเฉฐเจจ-เจจเฉ‹เจก เจœเจพเจ‚ เจฆเฉ‹-เจจเฉ‹เจก เจธเจฐเจ•เจŸ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจตเจพเจฒเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจคเจฟเจ†เจฐ-เจฌเจฃเจพเจ‡เจ† เจธเฉˆเฉฑเจŸ เจตเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค
เจ•เจฐเจพเจธ-เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ…เจคเฉ‡ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจฆเฉ€ เจธเฉเจคเฉฐเจคเจฐเจคเจพ, เจธเจฐเจตเจฐ, เจฒเฉˆเจชเจŸเจพเจช เจ…เจคเฉ‡ เจฎเฉ‹เจฌเจพเจˆเจฒ เจกเจฟเจตเจพเจˆเจธเจพเจ‚ เจธเจฎเฉ‡เจคเฅค
เจ•เจฟเจธเฉ‡ เจตเฉ€ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡, WAN เจœเจพเจ‚ เจ•เจฒเจพเจ‰เจก เจตเจฟเฉฑเจš เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจจเจ•เจฒ เจ•เจฐเฉ‹เฅค
เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฒเจˆ เจ•เฉเจ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจœเจพเจ‚ เจ•เจˆ เจนเจœเจผเจพเจฐเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ…เจจเฉเจ•เฉ‚เจฒ เจ•เฉฐเจฎ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ.
GUI เจ…เจคเฉ‡ เจธเจผเจพเจจเจฆเจพเจฐ เจธเจฎเจฐเจฅเจจ เจฆเฉ‡ เจจเจพเจฒ เจญเฉเจ—เจคเจพเจจ เจ•เฉ€เจคเจพ เจธเฉฐเจธเจ•เจฐเจฃเฅค

SymmetricDS เจฆเฉ‡ เจจเฉเจ•เจธเจพเจจ

เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉˆเจŸเจพเจฒเจพเจ— เจŸเฉ‡เจฌเจฒ เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ SQL เจธเจŸเฉ‡เจŸเจฎเฉˆเจ‚เจŸเจพเจ‚ เจฐเจพเจนเฉ€เจ‚ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ 'เจคเฉ‡ เจจเจ•เจฒ เจฆเฉ‡ เจจเจฟเจฏเจฎเจพเจ‚ เจ…เจคเฉ‡ เจฆเจฟเจธเจผเจพ เจจเฉ‚เฉฐ เจฆเจธเจคเฉ€ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ…เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค
เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉˆเจŸ เจ•เจฐเจจเจพ เจ”เจ–เจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจคเฉเจธเฉ€เจ‚ SQL เจธเจŸเฉ‡เจŸเจฎเฉˆเจ‚เจŸเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจœเฉ‹ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเฉ‡ เจจเจฟเจฏเจฎเจพเจ‚ เจ…เจคเฉ‡ เจฆเจฟเจธเจผเจพ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจจเฅค
เจฒเฉŒเจ—เจธ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเจฐเจœ เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจ•เจˆ เจตเจพเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉŒเจ— เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจ‡เจน เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจฅเจพเจ‚ เจจเจพ เจฒเจตเฉ‡เฅค

SymmetricDS เจฒเจˆ เจจเจคเฉ€เจœเฉ‡

เจธเจฟเจฎเจŸเฉเจฐเจฟเจ•เจกเฉ€เจเจธ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉเจนเจฐเจพเจ‰เจฃ เจ…เจคเฉ‡ เจธเจฎเจ•เจพเจฒเฉ€ เจ•เจฐเจจ เจฒเจˆ เจฆเฉ‹, เจคเจฟเฉฐเจจ, เจœเจพเจ‚ เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจ•เจˆ เจนเจœเจผเจพเจฐ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจฆเฉ‹-เจชเฉฑเจ–เฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ. เจ‡เจน เจ‡เฉฑเจ• เจตเจฟเจฒเฉฑเจ–เจฃ เจŸเฉ‚เจฒ เจนเฉˆ เจœเฉ‹ เจธเฉเจคเฉฐเจคเจฐ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เฉฑเจ• เจจเฉ‹เจก 'เจคเฉ‡ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจกเจพเจŠเจจเจŸเจพเจˆเจฎ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจกเจพเจŸเจพ เจฐเจฟเจ•เจตเจฐเฉ€, HTTPS เจฆเฉเจ†เจฐเจพ เจจเฉ‹เจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ…เจคเฉ‡ เจ•เฉเจธเจผเจฒ เจกเฉ‡เจŸเจพ เจเจ•เจธเจšเฉ‡เจ‚เจœ, เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจธเฉฐเจ˜เจฐเจธเจผ เจชเฉเจฐเจฌเฉฐเจงเจจ, เจ†เจฆเจฟเฅค เจ•เจฟเจธเฉ‡ เจตเฉ€ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€, เจ‡เจธเจฒเจˆ, เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจˆ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจพเจ‚ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจฎเจพเจˆเจ—เฉเจฐเฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ—เฉเจฐเฉ‡เจธเจผเจจ, เจตเฉฐเจก, เจซเจฟเจฒเจŸเจฐเจฟเฉฐเจ—, เจ…เจคเฉ‡ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฆเจพ เจชเจฐเจฟเจตเจฐเจคเจจ เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค

เจ‰เจฆเจพเจนเจฐเจจ เจ…เจงเจฟเจ•เจพเจฐเฉ€ 'เจคเฉ‡ เจ†เจงเจพเจฐเจฟเจค เจนเฉˆ เจคเฉ‡เจœเจผ เจ—เจพเจˆเจก SymmetricDS เจฆเฉเจ†เจฐเจพ. IN เจ‰เจชเจฏเฉ‹เจ— เจชเฉเจธเจคเจ• เจธเจฟเจฎเจŸเฉเจฐเจฟเจ•เจกเฉ€เจเจธ เจฆเฉ‡ เจจเจพเจฒ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจตเฉฑเจ–-เจตเฉฑเจ– เจงเจพเจฐเจจเจพเจตเจพเจ‚ เจฆเจพ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจตเจฐเจฃเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹