MySQL рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рд┐рдВрдХ рдЕрд╡рд▓реЛрдХрди

рдЫрд╡рд┐

рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рдХрдо рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╡рд┐рдХрд╕рд┐рдд рдЙрддреНрдкрд╛рдж рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╣рдо рдХрд┐рд╕реА рднреА рд╕рдордп рдЙрддреНрдкрд╛рджрди рдХреЗ рдХрд┐рд╕реА рднреА рдЪрд░рдг рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рдеред рдРрд╕реЗ рдЙрдкрдХрд░рдг рдЬреЛ рд╣рдореЗрдВ рдЗрд╕рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдЬ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдирдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдмрд┐рдирд╛ рд╕рдлрд▓ рдЙрддреНрдкрд╛рджрди рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдЕрд╕рдВрднрд╡ рд╣реИред рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдЕрд╡рд╕рд░ рд╣реИрдВ рдЬрдм рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ? рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдореИрдВ рдЙрди рдореМрдЬреВрджрд╛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдореБрдЭреЗ рдЦреБрдж рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдирд╛ рдерд╛ред



1. PHP SQLDIFF, рдЙрд░реНрдл тАЛтАЛSQLDiff

( http://phpsqldiff.sourceforge.net/ )

рдПрдХ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдЖрдкрдХреЛ рджреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдХрд┐рд╕реА рднреА рдЯреЗрдмрд▓ рдХреЗ рдмреАрдЪ рдкреВрд░реНрдг рдЕрдВрддрд░ (рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдбреЗрдЯрд╛ рдореЗрдВ рджреЛрдиреЛрдВ) рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЙрдкрдХрд░рдг рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдпрд╛ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИ - рдХреЗрд╡рд▓ рджреГрд╢реНрдп рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЛрд╖ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (ssh рд╕реБрд░рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ)ред рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рдХрд╛рдо рдХреА рдзреАрдореА рдЧрддрд┐ (рдирд╛рд╢рдкрд╛рддреА-рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо, рдЬреЛ рдпрд╛ рддреЛ рдирд╡реАрдирддрд╛ рдпрд╛ рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдЪрдордХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░реЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЗрд╕рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рддреНрд╡рд░рд┐рдд рд╕реЗрдЯрдЕрдк рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ desync рдХреА рд╕рдордЭ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдкреЙрдХреЗрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд▓реНрдХрд┐ рдПрдХ рдЧрдВрднреАрд░ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

2. LIQUIBASE

( http://www.liquibase.org/ )

рдЬрд╛рд╡рд╛ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рд╡рд╛рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрд╣реБрдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдФрд░ рдЖрд╕рд╛рдиред рдореИрдВ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреНрд▓рд╕ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдЬреЗрдирдХрд┐рдВрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг (host1 рд╡рд╣ рд╕рд░реНрд╡рд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; host2 рд╡рд╣ рд╕рд░реНрд╡рд░ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕реНрдЯреНрд░рдХреНрдЪрд░ 1 рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

java -jar liquibase.jar --driver=com.mysql.jdbc.Driver \ --classpath=mysql-connector-java-5.1.xx-bin.jar \ --logFile=db.ExampleChangelog.xml \ --url="jdbc:mysql://host2" \ --defaultSchemaName=db_name \ --username=username \ --password="password" \ --referenceUrl=jdbc:mysql://host1 \ --referenceUsername=username \ --referencePassword="password" \ diffChangeLog > ChangeSet.xml 


Xml рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЖрдЧреЗ рдкреНрд░рд╡рд╛рд╕рди host2 рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ host1 рдХреЗ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИред

рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ:

 java -jar liquibase.jar --driver=com.mysql.jdbc.Driver \ --classpath=/path/to/classes \ --changeLogFile=ChangeSet.xml \ --url="jdbc:mysql://host2" \ --username=user \ --password="password" \ migrate 


рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рдмрд╛рдж, рдпрд╣ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдмрджрд▓рд╛рд╡ рдЦрд╛рд▓реА рд╣реИред
рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рди рдХреЗрд╡рд▓ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрдВрдбреЗрдХреНрд╕, рдЪрд╛рдмрд┐рдпрд╛рдБ рднреА рд╣реИрдВред рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ - рдореИрдВрдиреЗ рд╡рд╣ рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХреА рд╣реИред

рдЪреЗрдВрдЬрд╕реЗрдЯ рдХреЛ рдЕрдиреНрдп рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рднреА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - sql рдореЗрдВ, json рдореЗрдВ (рди рдХреЗрд╡рд▓ xml рдореЗрдВ)ред рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЧрдарди рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬрдм рдкреНрд░рд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

3. рд╕реНрдХреАрдорд╛рд╕рд┐рдВрдХ

( http://schemasync.org/ )

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдЬрдЧрд░ рдФрд░ mysql рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╢рд░рд╛рдмреА рдХреЗ рд╕рд╛рде рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░:
- рд╕реНрдХреАрдорд╛рд╕реНрдХреНрдпреВ рди рдХреЗрд╡рд▓ рдПрдХ рдЪреЗрдВрдЬрд╕реЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдлрд╛рдЗрд▓ рднреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рд╕рдмрд╕реЗ рдореВрд▓реНрдпрд╡рд╛рди рд▓рд╛рдн, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдмреИрдХрдЕрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)
- рд▓рд┐рдмрд╛рд╕ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдЪреЗрдВрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рднреА рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдПрдХ рд╣рддреНрдпрд╛рд░рд╛ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реИ

schemasync рдХреЗрд╡рд▓ sql рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдХреЛрдИ рдордзреНрдпрд╡рд░реНрддреА xml рдФрд░ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдирд╣реАрдВ рд╣реИ - рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЗрд╕ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рджреЛрдиреЛрдВ рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред
рдмрд╣реБрдд рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕, рдиреНрдпреВрдирддрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдСрдЯреЛ-рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди) рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ - рдПрдХ рдкреВрд░реНрдг рдкреНрд▓рд╕ред

рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:

 schemasync mysql://user:pass@dev-host:3306/dev_db mysql://user:pass@prod-host:3306/production_db 


4. MAATKIT рдбреЗрдЯрд╛ рд╕рд┐рдВрдХ

( http://www.maatkit.org/doc/ )
рдПрдордХреЗ-рдЯреЗрдмрд▓-рд╕рд┐рдВрдХ - рдЯреЗрдмрд▓ рдбреЗрдЯрд╛ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛ред рдореИрдВ рдЕрднреА рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛ рдХрд┐ рдорд╛рдИрдХрд┐рдЯ MySQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдореВрд▓ MySQL рдореЗрдВ рдирд┐рд╣рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдЙрддреНрдкрд╛рдж рдкреЗрд░рдХреЛрдирд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдирдХреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдПрдХ рд▓рд╛ рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рдЖрджреА рд╣реИрдВ "рд╣рдо MySQL рд▓реЗ рд▓реЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред"
рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдХреЛрдИ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдпрд╛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИ (рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдЪрд┐рдд рд╣реИ)ред
рдЗрд╕рдореЗрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдПрдХ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдорд╛рд╕реНрдЯрд░-рджрд╛рд╕, рдорд╛рд╕реНрдЯрд░-рдорд╛рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрджрд▓рд╛рд╡реЛрдВ рдХрд╛ рдПрдХ рд▓реЙрдЧ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкрд░ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрд╛ - рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдФрд░ рд╡реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдмрд╣реБрдд рд▓рдЪреАрд▓реА рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХрдИ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдореВрд▓ рдкреНрд░рд▓реЗрдЦрди (http://www.maatkit.org/doc/mk-table-sync.html) рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:

 mk-table-sync --verbose --print --charset=DB_CHARSET, h=host, P=port1, u=user1, p=password1, t=table1, D=db1 h=host2, P=port2, u=user2, p=password2, D=db2 > /__path__/ChangeLogQueries.sql 



рдЬреЛрдбрд╝ 1:

рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЯреВрд▓ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрд╛рдореА рд╣реИ, рдЬреЛ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдирд╛рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЦреБрдж рдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ - рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдХрд╛рд░реНрдп рдПрдХ рддрдВрддреНрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдерд╛ рдЬреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ "рдбреЗрд╡рд▓рдкрд░реНрд╕ - рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ - рдордВрдЪ - рдЙрддреНрдкрд╛рджрди" рдореЗрдВ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдЧрд╛ред рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рд╕реЗ рд╢реБрд░реВ (рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ) рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЛрдб рдиреНрдпреВрдирддрдо рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░рд╛рдд рдореЗрдВ рдЕрдкрдиреЗ рдЖрдк рдПрдХ рд╢реЗрдбреНрдпреВрд▓ рдкрд░ рдЪрд▓рддреА рд╣реИ, рддреЛ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧреЗ, рд▓реЗрдХрд┐рди рд▓реЛрдб рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдФрд░ рд╕реБрдмрд╣ рддрдХ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░рдирд╛ред рдпрджрд┐ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдирд┐рдпрдорд┐рдд рд╣реИ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╕реВрдЪрд┐рдпрд╛рдВ рдХрднреА рднреА рдЕрдзрд┐рдХ рдмрдбрд╝реА рдирд╣реАрдВ рд╣реЛрдВрдЧреА, рдФрд░ рд▓реЛрдб рдирдЧрдгреНрдп рд╣реЛрдЧрд╛ред рдПрдХ рдФрд░ рдмрд╛рдд рдЬрдм рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ рдЯреЗрд╕реНрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди, рдЬреЛ 1 рдШрдВрдЯреЗ рд▓реЗрддрд╛ рд╣реИ, рд╣рдореЗрд╢рд╛ рдореВрд░реНрдд рд╣реЛрдЧрд╛ рдФрд░ рдЕрд╕реБрд╡рд┐рдзрд╛ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ред рдЗрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдФрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдирдВрдмрд░ 5 рдХрд╛ рдПрдХ рд╕рд╛рдзрди рдкреНрд░реЗрд░рд┐рдд:

5. "рдЕрд░реНрдз-рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рдиред"


рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдореЗрдВ, рд╕рдордп рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо) рдЕрдВрддрд░ рдХреА рд╕реВрдЪреА рдХреЗ рдЧрдарди рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдЕрдВрддрд░ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ - рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛рдлреА рддреЗрдЬ рд╣реИ (рдлрд┐рд░ рд╕реЗ, рдПрдХ рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ)ред рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдВрддрд░ рдХреА рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рджреЛ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рдереЗ:
рдХ) рдХрд┐рд╕реА рднреА рдЙрддреНрдкрд╛рдж рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ - рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рд▓реЛрдХрдкреНрд░рд┐рдп рдлреНрд░реЗрдорд╡рд░реНрдХ рдпрд╛ рдЕрдкрдиреЗ рдШрд░ рдХрд╛ рдмрдирд╛ рдХрд░реНрдиреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ (рдпрджрд┐ рдХреЗрд╡рд▓ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд░реБрдЪрд┐ рд╣реИ - рдбреАрдбреАрдПрд▓, рдпрджрд┐ рдбреЗрдЯрд╛ рднреА рдЕрджреНрдпрддрди рд╣реИ рдФрд░ рд╣рдЯрд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдореЗрдВ;
рдЦ) рдпрджрд┐ рдЖрдкрдХреЗ рдврд╛рдВрдЪреЗ (рдФрд░ рдкрд╛рдк рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг) рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ рд╣реИрдВрдбрд▓рд░ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓реЙрдЧ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЙрдЧ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рд╕рднреА рд▓рдХреНрд╖реНрдп рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░) рдФрд░ рдЗрд╕ рд▓реЙрдЧ рд╕реЗ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВред

рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓реЙрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ "рдЕрд░реНрдз-рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди" рдХреЛ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдмрд╛рдж рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реНрдпреБрдХреНрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ (рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рд░рд╛рдд рдореЗрдВ рдПрдХ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рдорд╛рдирд╡ рдХрд╛рд░рдХ рдиреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдореЗрдВ рдЕрдкрдиреА рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛)ред

рдЬреЛрдбрд╝ 2:
(рдЕрджреНрдпрддрди)
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рд▓рдЧрднрдЧ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрд╛рдореА рд╣реИ (рдФрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрдИ рднреА рдкреНрд░рддрд┐рд╢реЛрдз рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ) - рдЙрди рд╕рднреА рдХреЛ tcp / ip рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рджреВрд░рд╕реНрде рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд╣реЛрд╕реНрдЯ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдФрд░ рд░рд┐рдореЛрдЯ рдПрдХреНрд╕реЗрд╕ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╕рд╛рдорд╛рдиреНрдп рдЕрднреНрдпрд╛рд╕ рд╣реИ, рдХреЗрд╡рд▓ рдЙрдкрд░реНрдпреБрдХреНрдд рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдкреЛрд░реНрдЯ рдЕрдЧреНрд░реЗрд╖рдг рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд╛рд░реНрдХрдмрд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж - рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рд╕рдлрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдФрд░ рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛!

Source: https://habr.com/ru/post/In178875/


All Articles