āĻāĻŽāĻŋ āĻ¸āĻāĻā§āĻˇā§āĻĒā§ PostgreSQL āĻāĻŦāĻ MySQL-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻā§āĻ°āĻ¸-āĻ°āĻŋāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻāĻ āĻĻā§āĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻā§āĻ°āĻ¸-āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤ āĻā§āĻ°āĻ¸-āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻā§āĻ¤ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¸āĻŽāĻāĻžāĻ¤ā§āĻ¯āĻŧ āĻĄā§āĻāĻžāĻŦā§āĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻāĻāĻŋ RDBMS āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻ āĻ¨ā§āĻ¯ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĨ¤
PostgreSQL āĻāĻŦāĻ MySQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻā§āĻ˛āĻŋāĻā§ āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤āĻāĻžāĻŦā§ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¤āĻžāĻ°āĻž NoSQL āĻā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻŽā§āĻ¨ā§āĻ āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§ PostgreSQL āĻāĻŦāĻ MySQL āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻŦāĨ¤
āĻāĻŽāĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻŦ āĻ¨āĻž, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŽā§āĻ˛āĻŋāĻ āĻ¨ā§āĻ¤āĻŋāĻā§āĻ˛āĻŋ, āĻ¯āĻžāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°, āĻ¸ā§āĻŦāĻŋāĻ§āĻž, āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤, āĻĻā§āĻāĻŋ āĻ āĻāĻŋāĻ¨ā§āĻ¨ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻšāĻ¯āĻŧ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻŽā§āĻĄā§ āĻŦāĻž āĻāĻāĻāĻ¨ āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° (āĻāĻ°āĻĢā§ āĻĒā§āĻ°āĻāĻžāĻļāĻ, āĻŽāĻžāĻ¸ā§āĻāĻžāĻ°, āĻŦāĻž āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ) āĻāĻŦāĻ āĻāĻāĻāĻ¨ āĻ¸ā§āĻ˛ā§āĻ (āĻ¸āĻžāĻŦāĻ¸ā§āĻā§āĻ°āĻžāĻāĻŦāĻžāĻ°, āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŦāĻžāĻ āĻŦāĻž āĻĒā§āĻ¯āĻžāĻ¸āĻŋāĻ) āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ āĻšāĻ˛ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŦāĻžāĻ āĻ¸āĻžāĻāĻĄā§ āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻāĻāĻŋ āĻ°āĻŋāĻ¯āĻŧā§āĻ˛-āĻāĻžāĻāĻŽ āĻāĻĒāĻŋ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻžāĨ¤ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻĄā§āĻāĻž āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻ¸ā§āĻ˛ā§āĻā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ āĻ°ā§āĻĨāĻžā§, āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻĨā§āĻā§ āĻĒā§āĻ¯āĻžāĻ¸āĻŋāĻ, āĻāĻžāĻ°āĻŖ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻĻāĻŋāĻā§ āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ¯āĻŧ āĻĻāĻŋāĻ āĻĨā§āĻā§ āĻĻā§āĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¯āĻžāĻ¤ā§ āĻĄā§āĻāĻž āĻāĻāĻāĻŋ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ-āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻ¸ā§āĻ˛ā§āĻ āĻĨā§āĻā§ āĻŽāĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻāĻžāĻā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻā§āĻ¯āĻžāĻ¸āĻā§āĻĄāĻŋāĻ āĻ°ā§āĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻš āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻŋāĻā§āĻ āĻĻā§āĻ āĻŦāĻž āĻ¤āĻ¤ā§āĻ§āĻŋāĻ āĻ āĻāĻŋāĻ¨ā§āĻ¨ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻŽā§āĻāĻŦāĨ¤ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ-āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻŦāĻž āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ-āĻĒā§āĻ¯āĻžāĻ¸āĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§, āĻŽā§āĻ˛ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻĒā§āĻ°āĻžāĻĒā§āĻ¯āĻ¤āĻž āĻŦāĻž āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻāĻŋāĻāĻ¨āĻŋāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻŦāĻ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻŦāĻžāĻŖāĻŋāĻā§āĻ¯ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĨ¤ -āĻ āĻĢ
āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻŽā§āĻāĻŦāĨ¤ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋāĻā§ āĻ āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻā§āĻ¤ āĻĄā§āĻāĻž āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻ¨āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻā§āĻ¤ āĻĄā§āĻāĻžāĻ° āĻ°āĻŋāĻ¯āĻŧā§āĻ˛-āĻāĻžāĻāĻŽ āĻ¸ā§āĻ¨ā§āĻ¯āĻžāĻĒāĻļāĻāĻā§āĻ˛āĻŋ āĻ§āĻ°ā§ āĻ°āĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ MySQL āĻāĻŦāĻ PostgreSQL āĻāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻāĻ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻŦāĻž āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻĒāĻā§āĻˇā§āĻ° āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ āĻĢāĻžāĻ° āĻāĻ°ā§, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻ˛āĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ, āĻĄāĻŋāĻ¸ā§āĻ āĻ˛āĻ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻāĻŽā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻ¸āĻžāĻ°āĻŋ āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
MySQL āĻāĻŦāĻ PostgreSQL-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻā§āĻ°āĻ¸-āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻ āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻāĻāĻžāĻ˛ā§āĻ¨ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻā§āĻ˛āĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ˛āĻŋāĻā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤ āĻĄā§āĻāĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧā§āĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ°ā§āĻĨā§, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻŦāĻšāĻŋāĻ°āĻžāĻāĻ¤ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¯ā§āĻŽāĻ¨ pg_chameleonāĨ¤
pg_chameleon āĻāĻŋ
pg_chameleon āĻšāĻ˛ Python 3-āĻ MySQL āĻĨā§āĻā§ PostgreSQL-āĻ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĨ¤ āĻāĻāĻŋ āĻŽāĻžāĻāĻāĻ¸āĻāĻŋāĻāĻāĻ˛-āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻĒāĻžāĻāĻĨāĻ¨ā§āĻāĨ¤ āĻ¸āĻžāĻ°āĻŋ āĻāĻŋāĻ¤ā§āĻ°āĻā§āĻ˛āĻŋ MySQL āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ PostgreSQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ JSONB āĻ āĻŦāĻā§āĻā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° pl/pgsql āĻĢāĻžāĻāĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĄāĻŋāĻā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ PostgreSQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻĒā§āĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
pg_chameleon āĻāĻ° āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯
āĻāĻāĻ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻāĻāĻžāĻ§āĻŋāĻ MySQL āĻ¸ā§āĻāĻŋāĻŽāĻž āĻāĻ āĻĨā§āĻā§ āĻāĻāĻžāĻ§āĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻš āĻāĻāĻāĻŋ āĻāĻāĻ PostgreSQL āĻāĻžāĻ°ā§āĻā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻā§āĻ¸ āĻāĻŦāĻ āĻ˛āĻā§āĻˇā§āĻ¯ āĻ¸ā§āĻāĻŋāĻŽāĻžāĻ° āĻ¨āĻžāĻŽ āĻāĻāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¨āĻžāĨ¤
āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¤āĻĨā§āĻ¯ āĻāĻāĻāĻŋ MySQL āĻā§āĻ¯āĻžāĻ¸āĻā§āĻĄāĻŋāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻĒ āĻĨā§āĻā§ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ¯ā§ āĻā§āĻŦāĻŋāĻ˛āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻŦāĻž āĻ¤ā§āĻ°ā§āĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¨āĻž āĻ¸ā§āĻā§āĻ˛āĻŋ āĻŦāĻžāĻĻ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§ˇ
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻĄā§āĻŽāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤
YAML āĻāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°ā§āĻ¨āĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖ
āĻ¨āĻŋāĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖāĻāĻ°ā§āĻ¤āĻž
vm1
vm2
āĻāĻāĻ¸ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
CentOS Linux 7.6 x86_64
CentOS Linux 7.5 x86_64
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
MySQL 5.7.26
PostgreSQL 10.5
āĻĄāĻŋāĻŦāĻŋ āĻĒā§āĻ°ā§āĻ
3306
5433
āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž
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
āĻŽāĻžāĻāĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻ¨ā§āĻĄā§:
$> psql -p 5433 -U usr_replica -h 192.168.56.106 db_replica
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¤āĻŋāĻ¨āĻāĻŋ pg_chameleon (āĻāĻŋāĻ°āĻāĻŋāĻāĻŋ) āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°ā§, āĻā§āĻ¸ āĻ¯ā§āĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻĒ āĻļā§āĻ°ā§ āĻāĻ°ā§āĨ¤ Pg_chameleon-āĻ create_replica_schema āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻāĻāĻāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻ¸ā§āĻāĻŋāĻŽāĻž (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
āĻļā§_āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻžāĻ¸ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¤ā§āĻ°ā§āĻāĻŋāĻā§āĻ˛āĻŋ āĻļā§_āĻāĻ°āĻ°āĻ¸ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻĻāĻŋāĻ¯āĻŧā§ āĻĻā§āĻāĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻŽāĻ°āĻž āĻāĻā§āĻ āĻŦāĻ˛ā§āĻāĻŋ, āĻĄā§āĻŽāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°ā§āĨ¤ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻĻā§āĻāĻ¤ā§, Linux ps āĻāĻŽāĻžāĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻžāĻ°āĻŖā§āĻāĻŋ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°ā§āĻ¨, āĻ¯ā§āĻŽāĻ¨āĻāĻŋ āĻ¨ā§āĻā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻ¨ā§āĻā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻŽāĻ°āĻž āĻ°āĻŋāĻ¯āĻŧā§āĻ˛ āĻāĻžāĻāĻŽā§ āĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻ¨āĻž āĻāĻ°āĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ, āĻŽāĻžāĻāĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻĄā§āĻŽāĻ¨ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ¸āĻš āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻ¤ā§ 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 āĻāĻŽāĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ā§āĻ° āĻļā§āĻˇ āĻšāĻŦā§āĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ°ā§āĻā§āĻ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸āĻžāĻ°āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻ¯āĻžāĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻāĻāĻŋāĻ¤, āĻ¯āĻžāĻ° āĻĢāĻ˛ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻāĻžāĻŦā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ PostgreSQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¯āĻžāĻ° āĻā§āĻ¸ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŦāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¸ā§āĻāĻŋāĻŽ (sch_chameleon) āĻāĻ° āĻā§āĻ¨ā§ āĻāĻ˛ā§āĻ˛ā§āĻ āĻ¨ā§āĻāĨ¤
$> chameleon stop_replica --config default --source mysql
$> chameleon detach_replica --config default --source mysql --debug
āĻāĻĒāĻ¨āĻŋ āĻāĻā§āĻāĻŋāĻāĻāĻžāĻŦā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻŽāĻžāĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻŽā§āĻ˛ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¸ā§āĻāĻŋāĻŽāĻž āĻŽā§āĻā§ āĻĢā§āĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
$> chameleon drop_source --config default --source mysql --debug
$> chameleon drop_replica_schema --config default --source mysql --debug
pg_chameleon āĻāĻ° āĻāĻĒāĻāĻžāĻ°āĻŋāĻ¤āĻž
āĻ¸āĻšāĻ āĻ¸ā§āĻāĻāĻĒ āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĨ¤
āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻ¤ā§āĻ°ā§āĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻš āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻŦāĻ āĻ
āĻ¸āĻā§āĻāĻ¤āĻŋ āĻ¸āĻ¨āĻžāĻā§āĻ¤āĻāĻ°āĻŖāĨ¤
āĻŦāĻžāĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¨āĻž āĻāĻ°ā§ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻĒāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ¤ā§ āĻ
āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻŦāĻŋāĻļā§āĻˇ āĻā§āĻŦāĻŋāĻ˛ āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻžāĻ§āĻŋāĻ āĻ¸ā§āĻ°ā§āĻ¸ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ, āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ āĻŦāĻž āĻāĻāĻžāĻ§āĻŋāĻ MySQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§ āĻāĻāĻāĻŋ PostgreSQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻĄā§āĻāĻž āĻŽāĻžāĻ°ā§āĻ āĻāĻ°ā§āĻ¨ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻā§āĻŦ āĻ¸āĻšāĻāĨ¤
āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻŋāĻ¤ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¨āĻž āĻāĻ°āĻž āĻŦā§āĻā§ āĻ¨āĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
pg_chameleon āĻāĻ° āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž
āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° MySQL 5.5 āĻāĻŦāĻ āĻ¤āĻžāĻ° āĻāĻĒāĻ°ā§ āĻā§āĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻŦāĻ PostgreSQL 9.5 āĻāĻŦāĻ āĻ¤āĻžāĻ° āĻāĻĒāĻ°ā§ āĻāĻžāĻ°ā§āĻā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤āĨ¤
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻŦāĻž āĻ
āĻ¨āĻ¨ā§āĻ¯ āĻā§ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§, āĻ
āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻā§āĻŦāĻŋāĻ˛āĻā§āĻ˛āĻŋ init_replica āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¤ā§ āĻāĻ°āĻŽā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤
āĻāĻāĻŽā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ - āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° MySQL āĻĨā§āĻā§ PostgreSQL āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤āĨ¤ āĻ
āĻ¤āĻāĻŦ, āĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ-āĻĒā§āĻ¯āĻžāĻ¸āĻŋāĻ āĻ¸ā§āĻāĻŋāĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĻ¤āĨ¤
āĻāĻ¤ā§āĻ¸āĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ MySQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻ¤ā§āĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻāĻŋ PostgreSQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻāĻŦāĻ āĻ¸ā§āĻŽāĻŋāĻ¤ (āĻāĻ°ā§ āĻāĻžāĻ¨ā§āĻ¨
pg_chameleon āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻŽā§āĻ
MySQL āĻĨā§āĻā§ PostgreSQL-āĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ pg_chameleon-āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤āĨ¤ āĻŦāĻĄāĻŧ āĻ¨ā§āĻ¤āĻŋāĻŦāĻžāĻāĻ āĻĻāĻŋāĻ āĻšāĻ˛ āĻ¯ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻŽā§āĻā§, āĻ¤āĻžāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒā§āĻļāĻžāĻĻāĻžāĻ°āĻ°āĻž āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ āĻāĻžāĻĄāĻŧāĻž āĻ āĻ¨ā§āĻ¯ āĻāĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻ¨āĻžāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŽā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻāĻ°ā§āĻāĻāĻŋ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻ˛ - āĻ¸āĻŋāĻŽā§āĻā§āĻ°āĻŋāĻāĻĄāĻŋāĻāĻ¸ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ā§ āĻāĻ°āĻ āĻĒāĻĄāĻŧā§āĻ¨
SymmetricDS āĻāĻ° āĻāĻāĻžāĻ°āĻāĻŋāĻ
SymmetricDS āĻšāĻ˛ āĻāĻāĻāĻŋ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻ˛ āĻ¯āĻž āĻ¯ā§āĻā§āĻ¨ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻā§ āĻ āĻ¨ā§āĻ¯ āĻ¯ā§āĻā§āĻ¨ā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§: Oracle, MongoDB, PostgreSQL, MySQL, SQL āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°, MariaDB, DB2, Sybase, Greenplum, Informix, H2, Firebird āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻā§āĻ˛āĻžāĻāĻĄ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻĻāĻžāĻšāĻ°āĻŖ, āĻ¯ā§āĻŽāĻ¨ Redshift, āĻāĻŦāĻ Azure, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯: āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻŦāĻ āĻĢāĻžāĻāĻ˛ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻā§āĻļāĻ¨, āĻŽāĻžāĻ˛ā§āĻāĻŋ-āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ°ā§āĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨, āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻĄ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻā§āĻļāĻ¨, āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻĢāĻ°ā§āĻŽā§āĻļāĻ¨ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻāĻž āĻā§āĻ˛ āĻāĻŦāĻ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ°āĻŋāĻ˛āĻŋāĻ JRE āĻŦāĻž JDK (āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ 8.0 āĻŦāĻž āĻāĻā§āĻāĻ¤āĻ°) āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻŋ āĻā§āĻ¸ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻā§āĻ°āĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻĄā§āĻāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻŦā§āĻ¯āĻžāĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻāĻžāĻ°ā§āĻā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻ¸āĻŋāĻŽā§āĻā§āĻ°āĻŋāĻ āĻĄāĻŋāĻāĻ¸ āĻā§āĻˇāĻŽāĻ¤āĻž
āĻā§āĻ˛āĻāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻ¸ā§āĻŦāĻžāĻ§ā§āĻ¨, āĻ¯āĻžāĻ° āĻ
āĻ°ā§āĻĨ āĻĻā§āĻ āĻŦāĻž āĻ¤āĻ¤ā§āĻ§āĻŋāĻ āĻāĻŋāĻ¨ā§āĻ¨ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĄā§āĻāĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻā§āĻ˛āĻŋ āĻĄā§āĻāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°ā§ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĢāĻžāĻāĻ˛ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻĄā§āĻāĻžāĻŦā§āĻ¸āĻā§āĻ˛āĻŋ āĻĢāĻžāĻāĻ˛ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤
āĻ¨āĻŋāĻ¯āĻŧāĻŽā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻĒā§āĻļ āĻāĻŦāĻ āĻĒā§āĻ˛ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĻā§āĻŦāĻŋ-āĻŽā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĨ¤
āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻŦāĻ āĻāĻŽ āĻŦā§āĻ¯āĻžāĻ¨ā§āĻĄāĻāĻāĻĨ āĻ¸āĻš āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§ āĻĄā§āĻāĻž āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨ āĻ¸āĻŽā§āĻāĻŦāĨ¤
āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻ°ā§āĻĨāĻ¤āĻž āĻāĻŦāĻ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻĻā§āĻŦāĻ¨ā§āĻĻā§āĻŦ āĻ°ā§āĻā§āĻ˛āĻŋāĻāĻļāĻ¨ā§āĻ° āĻĒāĻ°ā§ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻ
āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ°āĨ¤
āĻā§āĻ˛āĻžāĻāĻĄ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻāĻŦāĻ āĻĻāĻā§āĻˇ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ APIsāĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖ
SymmetricDS āĻĻā§āĻāĻŋ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
āĻāĻāĻāĻŋ āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° (āĻ
āĻāĻŋāĻāĻžāĻŦāĻ) āĻ¨ā§āĻĄ āĻ¯āĻž āĻā§āĻ¨ā§āĻĻā§āĻ°ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻĻā§āĻāĻŋ āĻ¸ā§āĻ˛ā§āĻ (āĻļāĻŋāĻļā§) āĻ¨ā§āĻĄā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĄā§āĻāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¸āĻŽāĻ¨ā§āĻŦāĻ¯āĻŧ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻžāĻāĻ˛ā§āĻĄ āĻ¨ā§āĻĄā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĄā§āĻāĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻŋāĻ¤āĻžāĻŽāĻžāĻ¤āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻāĻāĻŋ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¨ā§āĻĄ (āĻ¨ā§āĻĄ 1) āĻŽāĻ§ā§āĻ¯āĻ¸ā§āĻĨāĻ¤āĻžāĻāĻžāĻ°ā§ āĻāĻžāĻĄāĻŧāĻžāĻ āĻ
āĻ¨ā§āĻ¯ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¨ā§āĻĄā§āĻ° (āĻ¨ā§āĻĄ 2) āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻāĻ¯āĻŧ āĻŦāĻŋāĻāĻ˛ā§āĻĒā§, āĻĒā§āĻļ āĻāĻŦāĻ āĻāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĄā§āĻāĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻ°āĻž āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ-āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŦāĨ¤ āĻĒā§āĻ°ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¤ā§āĻ¯ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻā§āĻŦ āĻĻā§āĻ°ā§āĻ, āĻ¤āĻžāĻ āĻ
āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°ā§āĻ¨
SymmetricDS āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻ¸āĻšāĻ: āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻāĻŋāĻĒ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨
āĻ¨āĻŋāĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖāĻāĻ°ā§āĻ¤āĻž
vm1
vm2
āĻāĻāĻ¸ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
CentOS Linux 7.6 x86_64
CentOS Linux 7.6 x86_64
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
MySQL 5.7.26
PostgreSQL 10.5
āĻĄāĻŋāĻŦāĻŋ āĻĒā§āĻ°ā§āĻ
3306
5832
āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž
192.168.1.107
192.168.1.112
āĻ¸āĻŋāĻŽā§āĻā§āĻ°āĻŋāĻāĻĄāĻŋāĻāĻ¸ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
SymmetricDS 3.9
SymmetricDS 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
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 āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻŦāĻžāĻāĻŋāĻāĻŋ āĻ¨ā§āĻā§āĻ° 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
āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻāĻā§āĻŽ āĻāĻŦāĻ āĻāĻāĻā§āĻŽ_āĻŦāĻŋāĻā§āĻ°āĻ¯āĻŧ_āĻŽā§āĻ˛ā§āĻ¯ āĻ¸āĻžāĻ°āĻŖā§āĻā§āĻ˛āĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ corp-000 āĻĨā§āĻā§ āĻ¸ā§āĻā§āĻ°-001-āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻŦāĻŋāĻā§āĻ°āĻ¯āĻŧ āĻā§āĻŦāĻŋāĻ˛āĻā§āĻ˛āĻŋ (sale_transaction āĻāĻŦāĻ sale_return_line_item) āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¸ā§āĻā§āĻ°-001 āĻĨā§āĻā§ āĻāĻ°ā§āĻĒ-000-āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻ¨ āĻšā§āĻ¸ā§āĻ vm2 (store-001) āĻāĻ° āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻŋāĻŽāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯āĻžāĻ¤ā§ āĻāĻāĻŋ āĻāĻ°ā§āĻĒ-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 āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻā§, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻāĻāĻāĻĒā§āĻā§āĨ¤ Sym āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻāĻ¨ āĻ¸ā§āĻā§āĻ°-001 āĻ¨ā§āĻĄā§ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
vm2$> cd /usr/local/symmetric-server-3.9.20/bin
vm2$> sym 2>&1 &
āĻāĻĒāĻ¨āĻŋ vm2 āĻšā§āĻ¸ā§āĻā§ sym āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻ˛āĻžāĻ˛ā§, āĻāĻāĻŋ PostgreSQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§āĻ SymmetricDS āĻā§āĻ¯āĻžāĻāĻžāĻ˛āĻ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻāĻ¯āĻŧ āĻ¨ā§āĻĄā§ āĻ¸āĻŋāĻŽ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻ˛āĻžāĻ¨, āĻ¤āĻžāĻ°āĻž āĻāĻ°ā§āĻĒ-000 āĻĨā§āĻā§ āĻ¸ā§āĻā§āĻ°-001-āĻ āĻĄā§āĻāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻ¤ā§ āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽāĻ¨ā§āĻŦāĻ¯āĻŧ āĻāĻ°āĻŦā§āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ¯āĻŧā§āĻ āĻ¸ā§āĻā§āĻ¨ā§āĻĄ āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻ¯āĻŧ āĻĒāĻā§āĻˇā§āĻ° 4āĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸āĻŦāĻāĻāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻ°āĻŋ, āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦ āĻ¯ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻāĻŋ āĻ¸āĻĢāĻ˛ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ āĻĨāĻŦāĻž āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨ā§āĻā§āĻ¤ āĻāĻŽāĻžāĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ corp-001 āĻĨā§āĻā§ store-000-āĻ āĻŦā§āĻāĻ¸ā§āĻā§āĻ°ā§āĻ¯āĻžāĻĒ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
vm1$> ./symadmin --engine corp-000 reload-node 001
āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§, āĻ¨ā§āĻĄ āĻāĻ°ā§āĻĒ-000 (āĻšā§āĻ¸ā§āĻ: vm1) āĻāĻ° MySQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻāĻā§āĻŽ āĻā§āĻŦāĻŋāĻ˛ā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ°ā§āĻāĻ°ā§āĻĄ āĻĸā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¨ā§āĻĄ āĻ¸ā§āĻā§āĻ°-001 (āĻšā§āĻ¸ā§āĻ: vm2) āĻ āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻŽāĻ°āĻž 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 āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻŋāĨ¤ āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻāĻ°ā§āĻĒ-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 āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻ¯āĻž āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸āĻāĻā§āĻāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻŽā§āĻ˛ā§ āĻā§āĻ°āĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤ āĻ¸ā§āĻā§āĻ°-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 āĻ¸ā§āĻā§āĻāĻŽā§āĻ¨ā§āĻā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻāĻŦāĻ āĻĻāĻŋāĻ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¯āĻž āĻ
āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻā§āĻ˛āĻžāĻ¨ā§āĻ¤āĻŋāĻāĻ° āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻāĻĒāĻ¨āĻŋ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻŦāĻŋāĻŦā§āĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨ āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻāĻŦāĻ āĻĻāĻŋāĻ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§āĨ¤
āĻ˛āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ
āĻ¨ā§āĻ āĻŦā§āĻļāĻŋ āĻ¤āĻĨā§āĻ¯ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻ˛āĻ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻžāĻ¤ā§ āĻāĻāĻŋ āĻā§āĻŦ āĻŦā§āĻļāĻŋ āĻāĻžāĻ¯āĻŧāĻāĻž āĻ¨āĻž āĻ¨ā§āĻ¯āĻŧāĨ¤
SymmetricDS āĻāĻ° āĻ¸āĻžāĻ°āĻžāĻāĻļ
SymmetricDS āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻŦāĻ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻĻā§āĻ, āĻ¤āĻŋāĻ¨ āĻŦāĻž āĻāĻŽāĻ¨āĻāĻŋ āĻāĻ¯āĻŧā§āĻ āĻšāĻžāĻāĻžāĻ° āĻ¨ā§āĻĄā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĻā§āĻŦāĻŋāĻŽā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ āĻ¨āĻ¨ā§āĻ¯ āĻ¸āĻ°āĻā§āĻāĻžāĻŽ āĻ¯āĻž āĻ¨āĻŋāĻā§ āĻĨā§āĻā§āĻ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°ā§, āĻ¯ā§āĻŽāĻ¨ āĻāĻāĻāĻŋ āĻ¨ā§āĻĄā§ āĻĻā§āĻ°ā§āĻ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻĒāĻ°ā§ āĻĄā§āĻāĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻž, HTTPS-āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻāĻŦāĻ āĻĻāĻā§āĻˇ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ, āĻ¨āĻŋāĻ¯āĻŧāĻŽā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻāĻāĻ°ā§āĻˇ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤ SymmetricDS āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§ āĻ¯ā§āĻā§āĻ¨ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§, āĻ¤āĻžāĻ, āĻāĻāĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻŖā§āĻ° āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°, āĻāĻĒāĻā§āĻ°ā§āĻĄ, āĻŦāĻŋāĻ¤āĻ°āĻŖ, āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻ āĻāĻŦāĻ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻā§āĻĄāĻŧā§ āĻĄā§āĻāĻž āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ¸āĻšāĨ¤
āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤āĻāĻŋ āĻāĻ°ā§āĻŽāĻāĻ°ā§āĻ¤āĻžāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§
āĻāĻ¤ā§āĻ¸: www.habr.com