
рдореИрдВ PostgreSQL рдФрд░ MySQL рдХреЗ рдмреАрдЪ рдХреНрд░реЙрд╕-рдкреНрд░рддрд┐рдХреГрддрд┐, рд╕рд╛рде рд╣реА рдЗрди рджреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреНрд░реЙрд╕-рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛ред рдЖрдорддреМрд░ рдкрд░, рдХреНрд░реЙрд╕-рдкреНрд░рддрд┐рдХреГрддрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдЬрд╛рддреАрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИред
PostgreSQL рдФрд░ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдВрдмрдВрдзрдкрд░рдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╡реЗ NoSQL рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рд░рд┐рд▓реЗрд╢рдирд▓ DBMS рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ PostgreSQL рдФрд░ MySQL рдХреЗ рдмреАрдЪ рдкреНрд░рддрд┐рдХреГрддрд┐ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред
рд╣рдо рд╕рдВрдкреВрд░реНрдг рдЖрдВрддрд░рд┐рдХ рд░рд╕реЛрдИ, рдХреЗрд╡рд▓ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░, рдлрд╛рдпрджреЗ, рд╕реАрдорд╛рдПрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдорд┐рд▓ рд╕рдХреЗред
рдЖрдорддреМрд░ рдкрд░, рджреЛ рд╕рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рддрд┐рдХреГрддрд┐ рдмрд╛рдЗрдирд░реА рдореЛрдб рдореЗрдВ рдпрд╛ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб (рдпрд╣ рдкреНрд░рдХрд╛рд╢рдХ, рдорд╛рд╕реНрдЯрд░ рдпрд╛ рд╕рдХреНрд░рд┐рдп) рдФрд░ рджрд╛рд╕ (рдЧреНрд░рд╛рд╣рдХ, рд▓рдВрдмрд┐рдд рдпрд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп) рдХреЗ рдмреАрдЪ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЧреБрд▓рд╛рдо рдкрдХреНрд╖ рдкрд░ рдорд╛рд╕реНрдЯрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ рдорд╛рд╕реНрдЯрд░ рд╕реЗ рджрд╛рд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╕рдХреНрд░рд┐рдп рд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рддрдХ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗрд╡рд▓ рдПрдХ рджрд┐рд╢рд╛ рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рджреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдмреАрдЪ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп-рд╕рдХреНрд░рд┐рдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рджрд╛рд╕ рд╕реЗ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рд╕рдм, рдХреИрд╕реНрдХреЗрдб рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕рд╣рд┐рдд, рд╕рдВрднрд╡рддрдГ рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рд╕рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдмреАрдЪред рд╕рдХреНрд░рд┐рдп-рд╕рдХреНрд░рд┐рдп рдпрд╛ рд╕рдХреНрд░рд┐рдп-рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛, рдпрд╛ рдмрд╛рд╣рд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдорд╛рдзрд╛рди рдФрд░ рдореМрдЬреВрджрд╛ рдЯреНрд░реЗрдб-рдСрдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧред ред
рд╡рд░реНрдгрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрднрд╡ рд╣реИред рд╕рд░реНрд╡рд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреГрддрд┐ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рднреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдбреЗрдЯрд╛ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред MySQL рдФрд░ PostgreSQL рдмрд╛рдЗрдирд░реА рд▓реЙрдЧ рдореЗрдердбреНрд╕, рдбрд┐рд╕реНрдХ рд▓реЙрдХреНрд╕ рдФрд░ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рд╕рд╣рд┐рдд рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдпрд╛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
MySQL рдФрд░ PostgreSQL рдХреЗ рдмреАрдЪ рдХреНрд░реЙрд╕-рдкреНрд░рддрд┐рдХреГрддрд┐ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдПрдХрд▓ рдкреНрд░рд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдмрд╛рд╣рд░реА рдУрдкрди рд╕реЛрд░реНрд╕ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП pg_chameleonред
Pg_chameleon рдХреНрдпрд╛ рд╣реИ
pg_chameleon MySQL рд╕реЗ Python 3 рдореЗрдВ PostgreSQL рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдкреНрд░рдгрд╛рд▓реА рд╣реИред рдпрд╣ рдкрд╛рдпрдерди рдореЗрдВ рднреА рдУрдкрди рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА mysql- рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЫрд╡рд┐рдпрд╛рдБ MySQL рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдирд┐рдХрд╛рд▓реА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ JSONB рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдлрд┐рд░ pl / pgsql рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╡рд╛рдкрд╕ рдЦреЗрд▓реА рдЬрд╛рддреА рд╣реИрдВред
Pg_chameleon рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рдПрдХ рд╣реА рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ MySQL рд╕реНрдХреАрдорд╛ рдПрдХ рд╕реЗ рдХрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА PostgreSQL рд▓рдХреНрд╖реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╕реНрд░реЛрдд рдФрд░ рд▓рдХреНрд╖реНрдп рд╕реНрдХреАрдорд╛ рдХреЗ рдирд╛рдо рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рддрд┐рдХреГрддрд┐ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реНрдХреЗрдб MySQL рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдЬреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛ рдпрд╛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдбреЗрдореЙрди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
YAML рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рдгред
рдЙрджрд╛рд╣рд░рдг
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 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
рдЕрдм рд╣рдо default-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 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрд┐рдВрдЧ рдЕрдиреБрднрд╛рдЧ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕реНрдерд╛рди, рд▓реЙрдЧреНрд╕ рдХрд╛ рд╕реНрдерд╛рди, рд▓реЙрдЧреНрд╕ рдХрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдЕрд╡рдзрд┐, рдЖрджрд┐ред рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдкреНрд░рдХрд╛рд░ рдУрд╡рд░рд░рд╛рдЗрдб рдЕрдиреБрднрд╛рдЧ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рджреМрд░рд╛рди рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдоред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЯреЙрд▓рд┐рдВрдЯ (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 (рдЧрд┐рд░рдЧрд┐рдЯ) рдХрдорд╛рдВрдб рд╡рд╛рддрд╛рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрд░реЛрдд рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред Pg_chameleon рдореЗрдВ create_replica_schema рддрд░реНрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреАрдорд╛ (sch_chameleon) рдФрд░ PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реНрдХреАрдорд╛ (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
рд╢реЛ_рд╕реНрдЯреИрдЯрд╕ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╢реЛ_рд░рд┐рдпрд░реНрд╕ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдоред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдбреЗрдореЙрди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓рд┐рдирдХреНрд╕ рдкреАрдПрд╕ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдоред
рдЬрдм рддрдХ рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рддреЗ, рддрдм рддрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рд░рд┐рдХреЙрд░реНрдб рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ 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) рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд┐рдирд╛ рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реЛрдЧрд╛ред
$> 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 рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ PostgbSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдЖрдк рдЪрдпрдирд┐рдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рджреЛрд╣рд░рд╛ рдирд╣реАрдВ рд╕рдХрддреЗред
Pg_chameleon рдХреЗ рдиреБрдХрд╕рд╛рди
рдХреЗрд╡рд▓ MySQL 5.5 рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕реНрд░реЛрдд рдФрд░ PostgreSQL 9.5 рдФрд░ рд▓рдХреНрд╖реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдКрдкрд░ рдХреЗ рд╕рд╛рде рд╕рдорд░реНрдерд┐рдд рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдпрд╛ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рддрд╛рд▓рд┐рдХрд╛ init_replica рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрд░рдВрдн рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреГрддрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдПрдХрддрд░рдлрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ - рдХреЗрд╡рд▓ MySQL рд╕реЗ PostgreSQL рддрдХред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рд╕рдХреНрд░рд┐рдп-рдирд┐рд╖реНрдХреНрд░рд┐рдп рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред
рдХреЗрд╡рд▓ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрд░реЛрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИ рдФрд░ рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде (рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВ)
Pg_chameleon рдкрд░рд┐рдгрд╛рдо
Pg_chameleon рдореЗрдВ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╡рд┐рдзрд┐ MySQL рд╕реЗ PostgreSQL рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЛрдг рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░реАрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдкреНрд░рд╡рд╛рд╕рди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ-рддрд░рдлрд╝рд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдЙрдкрдХрд░рдг - SymmetricDS рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ рдпрд╣рд╛рдВ ред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдорджрдж рдпрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ ред
рд╕рдордорд┐рддрд┐ рдЕрд╡рд▓реЛрдХрди
SymmetricDS рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ: Oracle, MongoDB, PostgreSQL, MySQL, SQL Server, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird рдФрд░ рдЕрдиреНрдп рдХреНрд▓рд╛рдЙрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Redshift, рдФрд░ Azure, рдЖрджрд┐ рдЙрдкрд▓рдмреНрдз рдлрд╝рдВрдХреНрд╢рдВрд╕: рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди, рдХрдИ рдкреНрд░рдореБрдЦ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдкреНрд░рддрд┐рдХреГрддрд┐, рдлрд╝рд┐рд▓реНрдЯрд░реНрдб рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди, рд░реВрдкрд╛рдВрддрд░рдг рдФрд░ рдЕрдиреНрдпред рдпрд╣ рдПрдХ рдЬрд╛рд╡рд╛ рдЙрдкрдХрд░рдг рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП JRE рдпрд╛ JDK (рд╕рдВрд╕реНрдХрд░рдг 8.0 рдпрд╛ рдЙрдЪреНрдЪрддрд░) рдХреЗ рдорд╛рдирдХ рд░рд┐рд▓реАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рд╕реНрд░реЛрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рдкрд░ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд░рд┐рдХреЙрд░реНрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреИрдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдХреНрд╖реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдордорд┐рддреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
рдЙрдкрдХрд░рдг рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рдпрд╛рдиреА рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд┐рдЦрдХрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо-рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рдпрдореЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреБрд╢ рдФрд░ рдкреБрд▓ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреНрд╡рд┐рдкрдХреНрд╖реАрдп рдкреНрд░рддрд┐рдХреГрддрд┐ред
рдХрдо рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рд╕рдВрднрд╡ рд╣реИред
рд╕реНрд╡рдд: рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдЬрдм рдиреЛрдбреНрд╕ рдПрдХ рд╡рд┐рдлрд▓рддрд╛ рдФрд░ рд╕реНрд╡рдд: рд╕рдВрдШрд░реНрд╖ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред
рдХреНрд▓рд╛рдЙрдб рд╕рдВрдЧрдд рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди APIред
рдЙрджрд╛рд╣рд░рдг
SymmetricDS рдХреЛ рдПрдХ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдПрдХ рдорд╛рд╕реНрдЯрд░ (рдорд╛рддрд╛-рдкрд┐рддрд╛) рдиреЛрдб рдЬреЛ рджреЛ рдЧреБрд▓рд╛рдо (рдмрдЪреНрдЪреЗ) рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рд╕рдордиреНрд╡рдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЪрд╛рдЗрд▓реНрдб рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдХреЗрд╡рд▓ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдХреНрд░рд┐рдп рдиреЛрдб (рдиреЛрдб 1) рдордзреНрдпрд╕реНрде рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдХреНрд░рд┐рдп рдиреЛрдб (рдиреЛрдб 2) рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреБрд╢ рдФрд░ рдкреБрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рд╕рдХреНрд░рд┐рдп-рд╕рдХреНрд░рд┐рдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреВрд░реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ, рдЗрд╕рд▓рд┐рдП SymmetricDS рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рджреЗрдЦреЗрдВ ред
SymmetricDS рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдпрд╣рд╛рдБ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЬрд╣рд╛рдБ рдЪрд╛рд╣реЗрдВ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ ред рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдкрди рд╕реНрдерд╛рди рдФрд░ рд╕рд┐рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рд╕рд╛рде рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд╕реНрдХрд░рдг, рд▓рд┐рдирдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг, рдЖрдИрдкреА рдкрддреЗ рдФрд░ рдкреЛрд░реНрдЯ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдПред
рдпрд╣рд╛рдВ рд╣рдо /usr/local/symmetric-server-3.9.20 рдореЗрдВ SymmetricDS рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рдФрд░ рдлрд╛рдЗрд▓реЗрдВ рд╡рд╣реАрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдВрдЧреАред рд╣рдо рдиреЗрд╕реНрдЯреЗрдб рдбрд╛рдпрд░реЗрдХреНрдЯрд░реАрдЬрд╝ рд╕реИрдВрдкрд▓ рдФрд░ рдЗрдВрдЬрди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдирдореВрдиреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдирдореВрдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ, рд╕рд╛рде рд╣реА рдкреНрд░рджрд░реНрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ SQL рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рд╣реЛрддреА рд╣реИрдВред
рдирдореВрдиреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рд╣рдо рдиреЛрдб рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рддреАрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ - рдирд╛рдо рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдпреЛрдЬрдирд╛ рдореЗрдВ рдиреЛрдб рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
corp-000.properties store-001.properties store-002.properties
SymmetricDS рдореЗрдВ 3-рдиреЛрдб рдмреЗрд╕ рд╕реНрдХреАрдорд╛ (рд╡рд┐рдХрд▓реНрдк 1) рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдФрд░ рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ 2-рдиреЛрдб рд╕реНрдХреАрдорд╛ (рд╡рд┐рдХрд▓реНрдк 2) рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Vm1 рд╣реЛрд╕реНрдЯ рдкрд░ рдирдореВрдиреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЗрдВрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛:
$> cat engines/corp-000.properties engine.name=corp-000 db.driver=com.mysql.jdbc.Driver db.url=jdbc:mysql://192.168.1.107:3306/replica_db?autoReconnect=true&useSSL=false db.user=root db.password=admin123 registration.url= sync.url=http://192.168.1.107:31415/sync/corp-000 group.id=corp external.id=000
SymmetricDS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЗрд╕ рдиреЛрдб рдХреЛ corp-000 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ mysql jdbc рдбреНрд░рд╛рдЗрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдКрдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рд▓реЙрдЧрд┐рди рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рдо replica_db рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдХреАрдорд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЯреЗрдмрд▓ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред Sync.url рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдиреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреА рд╕рд╛рдЗрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
Vm2 рд╣реЛрд╕реНрдЯ рдкрд░ рдиреЛрдб 2 рдХреЛ рд╕реНрдЯреЛрд░ -001 рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╢реЗрд╖ рдиреЛрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред Store-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 рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реНрдХреАрдорд╛ рдмрдирд╛рдПрдЧрд╛ред рдлрд┐рд░ рд╕рд┐рдореНрдбрдорд┐рди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХреНрд░рд┐рдПрдЯ-рд╕рд┐рдо-рдЯреЗрдмрд▓реНрд╕ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдЯреЗрдмрд▓ рдмрдирддреА рд╣реИ, рдЬрд╣рд╛рдВ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдирд┐рдпрдо рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рджрд┐рд╢рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдЧреАред рдЕрдВрдд рдореЗрдВ, рдирдореВрдирд╛ рдбреЗрдЯрд╛ рдХреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
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 рдФрд░ sale_return_line_item) рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ store-001 рд╕реЗ corp-000 рдореЗрдВ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм corp-000 рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП vm2 рд╣реЛрд╕реНрдЯ (store-001) рдкрд░ 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 рдХреИрдЯрд▓реЙрдЧ рдЯреЗрдмрд▓ рднреА рдмрдирд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рд╕рд┐рдо рд╕рд░реНрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдХреЙрд░реНрдк -режрежреж рд╕реЗ рд╕реНрдЯреЛрд░ -реирежрежрез рддрдХ рдбреЗрдЯрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдп рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╣рдо рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдкрд░ рд╕рднреА 4 рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕рдлрд▓ рд╣реИред рдпрд╛ рдЖрдк рдмреВрдЯ-рд░реИрдк рдХреЛ рд╕реНрдЯреЛрд░ -001 рдХреЛ рдХреЙрд░реНрдк -000 рд╕реЗ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
vm1$> ./symadmin --engine corp-000 reload-node 001
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╣реЛрд╕реНрдЯ рдХреЙрд░реНрдк-000 (рд╣реЛрд╕реНрдЯ: vm1) рдкрд░ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЖрдЗрдЯрдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдк рд╣реЛрд╕реНрдЯ рд╕реНрдЯреЛрд░ -001 (рд╣реЛрд╕реНрдЯ: v2) рдкрд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЗрд╕рдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдХреЙрд░реНрдк -режрежреж рд╕реЗ рд╕реНрдЯреЛрд░ -реирежрежрез рддрдХ рдбреЗрдЯрд╛ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдСрдкрд░реЗрд╢рди рджреЗрдЦрддреЗ рд╣реИрдВред
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)
Store-001 рд╕реЗ corp-000 рдкрд░ рдбреЗрдЯрд╛ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╢ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, sale_transaction рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдбрд╛рд▓реЗрдВ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐ рдкреВрд░реНрдг рд╣реИред
рдкрд░рд┐рдгрд╛рдоред
рд╣рдо MySQL рдФрд░ PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдмреАрдЪ рдирдореВрдирд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рджреЛ-рддрд░рдлрд╝рд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рд╕рдлрд▓ рд╕реЗрдЯрдЕрдк рджреЗрдЦрддреЗ рд╣реИрдВред рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░реЗрдВ: рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЗрдмрд▓ рдЯреА 1 рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдХреЙрд░реНрдк -режрежрежреж рд╕реЗ рд╕реНрдЯреЛрд░ -реирежрежрез рддрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред
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)
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рддрдм рдПрдХ рд╕реНрдХреАрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рд┐рдВрдХ-рдЯреНрд░рд┐рдЧрд░реНрд╕ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рд┐рдореНрдбрдорд┐рди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ, рдЬреЛ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред рд╕реНрдХреАрдорд╛-рд╕реНрдХреАрдорд╛ рдХреЛ рд╕реНрдЯреЛрд░-001 рдиреЛрдб рдореЗрдВ рд╕реНрдХреАрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ t1 рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЬрд╛рддреА рд╣реИред
vm1$> ./symadmin -e corp-000 --node=001 sync-triggers vm1$> ./symadmin send-schema -e corp-000 --node=001 t1
рд╕рдордорд┐рддрд┐ рдХреЗ рд▓рд╛рдн
рддреАрди рдпрд╛ рджреЛ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░реНрдХрд┐рдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рддреИрдпрд╛рд░ рд╕реЗрдЯ рд╕рд╣рд┐рдд рдЖрд╕рд╛рди рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред
рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрд╡рддрдВрддреНрд░рддрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕рд░реНрд╡рд░, рд▓реИрдкрдЯреЙрдк рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ, WAN рдпрд╛ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреЛрд╣рд░рд╛рдПрдВред
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдпрд╛ рдЖрд╕рд╛рди рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдХрдИ рд╣рдЬрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЙрддреНрдХреГрд╖реНрдЯ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрд╕реНрдХрд░рдгред
рд╕рдордорд┐рддреАрдп рдиреБрдХрд╕рд╛рди
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ SQL рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдореЛрдВ рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреА рджрд┐рд╢рд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдпрджрд┐ рдЖрдк SQL рдХрдерди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдердХрд╛рдК рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЙрдЧ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЧрд╣ рди рд▓реЗред
рд╕рдордорд┐рддрд┐ рд╕рд╛рд░
SymmetricDS рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдФрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ, рддреАрди, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдИ рд╣рдЬрд╛рд░ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рджреЛ-рддрд░рдлрд╝рд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрдиреВрдард╛ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрдИ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЛрдб рдкрд░ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рдмрд╛рдж рд╕реНрд╡рдд: рдбреЗрдЯрд╛ рд░рд┐рдХрд╡рд░реА, рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдХреБрд╢рд▓ рд╡рд┐рдирд┐рдордп, рдирд┐рдпрдореЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдВрдШрд░реНрд╖ рдкреНрд░рдмрдВрдзрди, рдЖрджрд┐ред рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдмреАрдЪ рд╕рдорд░реВрдкрддрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди, рдЕрдкрдЧреНрд░реЗрдб, рд╡рд┐рддрд░рдг, рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдбреЗрдЯрд╛ рд░реВрдкрд╛рдВрддрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдирдореВрдирд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ SymmetricDS рдХреНрд╡рд┐рдХ рд╕реНрдЯрд╛рд░реНрдЯ рдЧрд╛рдЗрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрд╛рдЗрдб SymmetricDS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рднрд┐рдиреНрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрддрд╛ рд╣реИред