рдбреЗрдмрд┐рдпрди рд▓реЗрди рдкрд░ рдПрд╕рдПрд╕рдПрд▓ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ MySQL рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреИрд╕реЗ рдХрд░реЗрдВ

рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ SSL рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ MySQL рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред

MySQL рдкреНрд░рддрд┐рдХреГрддрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдЯреАрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдкрд░ рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрдкрдбреЗрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рджреВрд╕рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рджреЛрд╣рд░рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд▓реЗрдЦ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ server1.example.com рд╕рд░реНрд╡рд░ (ip рдПрдбреНрд░реЗрд╕ 192.168.0.100) рд╕реЗ server2.example.com рд╕рд░реНрд╡рд░ (рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ 192.168.0.101) рдПрд╕рдПрд╕рдПрд▓ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ



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

рдпрджрд┐ MySQL рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рджреНрд╡рд┐рддреАрдпрдХ рд╕рд░реНрд╡рд░ рдкрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдВ:

aptitude install mysql-server mysql-client
      
      





рдЖрдкрдХреЛ рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рджреНрд╡рд┐рддреАрдпрдХ рд╕рд░реНрд╡рд░ рдкрд░, MySQL рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм MySQL рдХреЗ рд╕рд╛рде SSL рдХрдиреЗрдХреНрд╢рди рд╕рдорд░реНрдерди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП MySQL рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ MySQL рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:

 mysql -u root -p mysql> show variables like '%ssl%'; +---------------+----------+ | Variable_name | Value | +---------------+----------+ | have_openssl | DISABLED | | have_ssl | DISABLED | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_key | | +---------------+----------+ 7 rows in set (0.00 sec) mysql>quit;
      
      





рдпрджрд┐ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ MySQL рдПрд╕рдПрд╕рдПрд▓ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╣реИрд╢реЛрдкрд▓ рдбрд┐рд╕реИрдмреНрд▓рдб рдЯреЗрдмрд▓ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ has_ssl DISABLED рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИред



SSL рд╕рдорд░реНрдерди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ my.cnf рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ / etc / mysql / рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ

 vi /etc/mysql/my.cnf
      
      





* рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рдлреАрдЪрд░реНрд╕ рд▓рд╛рдЗрдиреНрд╕ рдвреВрдВрдвреЗрдВ рдФрд░ ssl рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ

 [...] # * Security Features # # Read the manual, too, if you want chroot! # chroot = /var/lib/mysql/ # # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". ssl # ssl-ca=/etc/mysql/cacert.pem # ssl-cert=/etc/mysql/server-cert.pem # ssl-key=/etc/mysql/server-key.pem [...]
      
      





MySQL рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ:

 /etc/init.d/mysql restart
      
      





рдФрд░ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ ssl рд╕рдкреЛрд░реНрдЯ рд╕рдХреНрд░рд┐рдп рд╣реИ рдпрд╛ рдирд╣реАрдВ

 mysql -u root -p show variables like '%ssl%'; mysql> show variables like '%ssl%'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_key | | +---------------+-------+ 7 rows in set (0.00 sec) mysql>quit;
      
      





рдЖрдЙрдЯрдкреБрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ ssl рд╕рдХреНрд╖рдо рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП MySQL рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, / bc -mysql/my.cnf рдореЗрдВ рд▓рд╛рдЗрди рдмрд╛рдЗрдВрдб-рдПрдбреНрд░реЗрд╕ = 127.0.0.1 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реБрдП:

server1:

 vi /etc/mysql/my.cnf [...] # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 [...]
      
      





MySQL рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

 /etc/init.d/mysql restart
      
      





рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ рдХреНрдпрд╛ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ:

 netstat -tap | grep mysql server1:~# netstat -tap | grep mysql tcp 0 0 *:mysql *:* LISTEN 3771/mysqld server1:~#
      
      





рдЬрд╛рд╣рд┐рд░ рд╣реИ, MySQL рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдЕрдм рд╣рдореЗрдВ SSL рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП CA, рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ / etc / mysql / newcerts рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрдирд╛рддрд╛ рд╣реВрдВ

рдирдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ:

 mkdir /etc/mysql/newcerts && cd /etc/mysql/newcerts
      
      





рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ OpenSSL рд╕реНрдерд╛рдкрд┐рдд рд╣реИ:

 aptitude install openssl
      
      





CA рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдирд╛рдПрдВ:

 openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem
      
      





рдЕрдЧрд▓рд╛, рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдПрдВ ...:

 openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
      
      





рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП:

 openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
      
      





рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 ls -l server1:/etc/mysql/newcerts# ls -l total 32 -rw-r--r-- 1 root root 1346 2010-08-18 20:13 ca-cert.pem -rw-r--r-- 1 root root 1675 2010-08-18 20:13 ca-key.pem -rw-r--r-- 1 root root 1099 2010-08-18 20:14 client-cert.pem -rw-r--r-- 1 root root 1675 2010-08-18 20:14 client-key.pem -rw-r--r-- 1 root root 956 2010-08-18 20:14 client-req.pem -rw-r--r-- 1 root root 1099 2010-08-18 20:14 server-cert.pem -rw-r--r-- 1 root root 1679 2010-08-18 20:14 server-key.pem -rw-r--r-- 1 root root 956 2010-08-18 20:14 server-req.pem server1:/etc/mysql/newcerts#
      
      





рдЕрдм рд╣рдореЗрдВ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ ca-cert.pem, client-cert.pem рдФрд░ client-key.pem рдХреЛ рджреВрд╕рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ:

server2:

 mkdir /etc/mysql/newcerts
      
      





рдЪрд▓рд┐рдП рд╕рд░реНрд╡рд░ 1 рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:

server1:

 scp /etc/mysql/newcerts/ca-cert.pem root@192.168.0.101:/etc/mysql/newcerts scp /etc/mysql/newcerts/client-cert.pem root@192.168.0.101:/etc/mysql/newcerts scp /etc/mysql/newcerts/client-key.pem root@192.168.0.101:/etc/mysql/newcerts
      
      





рдЕрдЧрд▓рд╛, server1 /etc/mysql/my.cnf рдЦреЛрд▓реЗрдВ рдФрд░ рд▓рд╛рдЗрдиреЛрдВ ssl-ca, ssl- рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдФрд░ ssl-key рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдХреЗ * рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рдлреАрдЪрд░реНрд╕ рдПрд░рд┐рдпрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ:

 vi /etc/mysql/my.cnf [...] # * Security Features # # Read the manual, too, if you want chroot! # chroot = /var/lib/mysql/ # # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". ssl ssl-ca=/etc/mysql/newcerts/ca-cert.pem ssl-cert=/etc/mysql/newcerts/server-cert.pem ssl-key=/etc/mysql/newcerts/server-key.pem [...]
      
      





MySQL рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ:

 /etc/init.d/mysql restart
      
      





рдЕрдм рд╣рдо рдкреНрд░рддрд┐рдХреГрддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ slave_user рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд░реНрд╡рд░ 1 рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ 2 рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

 mysql -u root -p GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'slave_password' REQUIRE SSL;
      
      





REQUIRE SSL рд▓рд╛рдЗрди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ slave_user рдХреЛ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдФрд░ рдЧреИрд░-рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдПрдЧреАред рдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХреЗрд╡рд▓ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХрдиреЗрдХреНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрдЧреАред



(рдпрджрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╣реА рдмрдирд╛рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ SSL рдХрдиреЗрдХреНрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 GRANT USAGE ON *.* TO 'slave_user'@'%' REQUIRE SSL;
      
      





)

 FLUSH PRIVILEGES; quit;
      
      





рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ MySQL рдХреЛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд▓реЙрдЧ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣ рднреА рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреМрди рд╕рд╛ рд╕рд░реНрд╡рд░ рдореБрдЦреНрдп рд╣реИ рдФрд░ рдХреМрди рд╕рд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╣реИ:

 vi /etc/mysql/my.cnf [...] # The following can be used as easy to replay backup logs or for replication. # note: if you are setting up a replication slave, see README.Debian about # other settings you may need to change. server-id = 1 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M binlog_do_db = exampledb [...]
      
      





MySQL рдкреБрдирд░рд╛рд░рдВрдн

 /etc/init.d/mysql restart
      
      





рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдХрдИ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

1. рд╕рд░реНрд╡рд░ 1 рдкрд░ рдкрд░реАрдХреНрд╖рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░реЗрдВ

2. рдорд╛рд╕реНрдЯрд░ рд╕реНрдерд┐рддрд┐ рд╕рд░реНрд╡рд░ 1 рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ

3. SQL рдкрд░реАрдХреНрд╖рд┐рдд (рд╕рд░реНрд╡рд░ 2 рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП) рдХрд╛ рдПрдХ рдбрдВрдк рдмрдирд╛рдПрдБ

4. рд╣рдорд╛рд░реЗ рдЖрдзрд╛рд░ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░реЗрдВ

 mysql -u root -p USE exampledb; FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 98 | exampledb | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) mysql>
      
      





рдЕрдм mysql рдХрдВрд╕реЛрд▓ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ (рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЙрдХ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рд╣рдо рдмреИрдХрдЕрдк рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ 2 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ

server1:

 cd /tmp mysqldump -u root -pyourrootsqlpassword --opt exampledb > snapshot.sql scp snapshot.sql root@192.168.0.101:/tmp
      
      





рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж, рдЖрдк рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдирд▓реЙрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

server1:

 UNLOCK TABLES; quit;
      
      





рдпрд╣ server1 рдХреЗ рд╕реЗрдЯрдЕрдк рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдорд╛рдВрд╕рдкреЗрд╢рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдЦреЛрд▓рдХрд░ рд╕рд░реНрд╡рд░ 2 рд╕реЗрдЯ рдХрд░реЗрдВ:

server2:

 vi /etc/mysql/my.cnf
      
      





рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ (рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝реЗрдВ):

 [...] server-id=2 master-connect-retry=60 replicate-do-db=exampledb [...]
      
      





рд╕рд░реНрд╡рд░-рдЖрдИрдбреА = 2 рдХрд╛ рдореВрд▓реНрдп рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ рдФрд░ рдпрд╣ рд╕рд░реНрд╡рд░ 1 рдкрд░ рдореМрдЬреВрдж рдореВрд▓реНрдп рд╕реЗ рднрд┐рдиреНрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП



MySQL рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ:

 /etc/init.d/mysql restart
      
      





рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЦрд╛рд▓реА рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдПрдБ:

 mysql -u root -p CREATE DATABASE exampledb; quit;
      
      





рдЕрдм рдЖрдк server2 рдкрд░ рд╕реНрдиреИрдкрд╢реЙрдЯ.sql рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдбрдВрдк рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

 /usr/bin/mysqladmin --user=root --password=yourrootsqlpassword stop-slave cd /tmp mysql -u root -pyourrootsqlpassword exampledb < snapshot.sql
      
      





рд╣рдо MySQL рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╕рд░реНрд╡рд░ 2 рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рд╕рд░реНрд╡рд░ рд╣реЛ, рдФрд░ рд╕рд░реНрд╡рд░ 1 рдХреЛ рдкреНрд░рд╛рдердорд┐рдХ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 mysql -u root -p CHANGE MASTER TO MASTER_HOST='192.168.0.100', MASTER_USER='slave_user', MASTER_PASSWORD='slave_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98, MASTER_SSL=1, MASTER_SSL_CA = '/etc/mysql/newcerts/ca-cert.pem', MASTER_SSL_CERT = '/etc/mysql/newcerts/client-cert.pem', MASTER_SSL_KEY = '/etc/mysql/newcerts/client-key.pem';
      
      





* MASTER_HOST - рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдИрдкреА рдкрддрд╛ рдпрд╛ рд╣реЛрд╕реНрдЯ рдирд╛рдо рдЖрдИрдкреА рд╣реИ

* MASTER_USER - рдкреНрд░рд╛рдердорд┐рдХ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреГрддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛

* MASTER_PASSWORD - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╕рд╡рд░реНрдб

* MASTER_LOG_FILE - рд╣рдордиреЗ рдЬреЛ рд╕реАрдЦрд╛ рд╕рд░реНрд╡рд░ 1 рдкрд░ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдорд╛рди, SHOW MASTER STATUS рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛;

* MASTER_LOG_POS - SHOW MASTER STATUS рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп;

* MASTER_SSL - SSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рджреНрд╡рд┐рддреАрдпрдХ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИ

* MASTER_SSL_CA - рдкрде рд╕реЗ CA рдкреНрд░рдорд╛рдгрдкрддреНрд░ (server2)

* MASTER_SSL_CERT - рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХрд╛ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ (рд╕рд░реНрд╡рд░ 2)

* MASTER_SSL_KEY - рдХреНрд▓рд╛рдЗрдВрдЯ-рдХреА.рдкреЗрдо рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ (рд╕рд░реНрд╡рд░ 2) рдХрд╛ рд░рд╛рд╕реНрддрд╛



рдФрд░ рдЕрдВрдд рдореЗрдВ

 START SLAVE;
      
      





рдЕрдм server2 рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ

 SHOW SLAVE STATUS \G mysql> SHOW SLAVE STATUS \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.0.100 Master_User: slave_user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 98 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 235 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: exampledb Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 98 Relay_Log_Space: 235 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: Yes Master_SSL_CA_File: /etc/mysql/newcerts/ca-cert.pem Master_SSL_CA_Path: Master_SSL_Cert: /etc/mysql/newcerts/client-cert.pem Master_SSL_Cipher: Master_SSL_Key: /etc/mysql/newcerts/client-key.pem Seconds_Behind_Master: 0 1 row in set (0.00 sec) mysql>
      
      





рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк MySQL рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

 quit;
      
      





рдпрд╣реА рд╣реИ, рд╕рд░реНрд╡рд░ рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдЪрд╛рд▓реВ рд╣реИред



рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

PS рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдХрд╛рдЧрдЬ рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рдпрд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдкреАрдПрдо рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВред



All Articles