MySQLデータベース2台のホストが同時に実戦


MySQLは一方向、非同期レプリケーションをサポートし、レプリケーション中に1つのサーバがプライマリサーバとして機能し、1つ以上の他のサーバがセカンダリサーバとして機能します.プライマリ・サーバは、バイナリ・ログ・ファイルに書き込まれたインデックスを更新し、ログ・ファイルのインデックスを維持してログ・ループを追跡します.
サーバからプライマリ・サーバに接続すると、プライマリ・サーバにログから最後に正常に更新された場所を通知します.その時から発生した更新をサーバから受信し、プライマリ・サーバが次の更新を通知するのをブラックアウトして待機します.
実际のプロジェクトでは、2台の离れたホストにMySQLデータベースがインストールされています.2台のサーバーは互いに准备されています.お客様は、1台の机械が故障した场合、もう1台はサーバー上のアプリケーションを引き継ぐことができます.これは、2台のデータベースのデータが実际に一致する必要があります.ここではMySQLの同期机能を使用して、2台の同期コピーを実现します.
次の操作例を示します.
  1、       

        :RedHat Enterprise Linux 5

       :MySQL Ver 14.12 Distrib 5.0.22

    :MySQL       

             :

  ServA:10.240.136.9

  ServB:10.240.136.149

  1.1       

   ServA     ServB       :

  MySQL>GRANT all privileges ON *.* TO tongbu@'10.240.136.149' IDENTIFIED BY '123456';

   ServB     ServA       :

  MySQL>GRANT all privileges ON *.* TO tongbu@'10.240.136.9' IDENTIFIED BY '123456';

  1.2        

  1、 root    ServA,  ServA my.cnf  

  vi /etc/my.cnf

   [MySQLd]           :

  1 default-character-set=utf82 3 log-bin=MySQL-bin4 5 relay-log=relay-bin6 7 relay-log-index=relay-bin-index8 9 server-id=110 11 master-host=10.240.136.14912 13 master-user=tongbu14 15 master-password=12345616 17 master-port=330618 19 master-connect-retry=3020 21 binlog-do-db=umsdb22 23 replicate-do-db=umsdb24 25 replicate-ignore-table=umsdb.boco_tb_menu26 27 replicate-ignore-table=umsdb.boco_tb_connect_log28 29 replicate-ignore-table=umsdb.boco_tb_data_stat30 31 replicate-ignore-table=umsdb.boco_tb_log_record32 33 replicate-ignore-table=umsdb.boco_tb_workorder_record

  2、 root    ServB,  ServB my.cnf  

  vi /etc/my.cnf

   [MySQLd]           :

  1 default-character-set=utf82 3 log-bin=MySQL-bin4 5 relay-log=relay-bin6 7 relay-log-index=relay-bin-index8 9 server-id=210 11 master-host=10.240.136.912 13 master-user=tongbu14 15 master-password=12345616 17 master-port=330618 19 master-connect-retry=3020 21 binlog-do-db=umsdb22 23 replicate-do-db=umsdb24 25 replicate-ignore-table=umsdb.boco_tb_menu26 27 replicate-ignore-table=umsdb.boco_tb_connect_log28 29 replicate-ignore-table=umsdb.boco_tb_data_stat30 31 replicate-ignore-table=umsdb.boco_tb_log_record32 33 replicate-ignore-table=umsdb.boco_tb_workorder_record

  1.3          

     ServA     , ServB   MySQL:

  service MySQLd restart

   ServB  root    MySQL,  :

  MySQL> stop slave;

  MySQL> load data from master;

  MySQL> start slave;

   ServA   MySQL:

  service MySQLd restart

  1.4          

   MySQL        :

  MySQL> show slave status\G

            ,    ,       slave    ,    yes    ;            ,           :

  1 *************************** 1. row ***************************2 3 Slave_IO_State: Waiting for master to send event4 5 Master_Host: 10.21.2.906 7 Master_User: tongbu8 9 Master_Port: 330610 11 Connect_Retry: 3012 13 Master_Log_File: localhost-bin.00000514 15 Read_Master_Log_Pos: 3975388216 17 Relay_Log_File: localhost-relay-bin.00006218 19 Relay_Log_Pos: 982666320 21 Relay_Master_Log_File: localhost-bin.00000522 23 Slave_IO_Running: Yes24 25 Slave_SQL_Running: Yes26 27 Replicate_Do_DB: bak,umsdb28 29 Replicate_Ignore_DB:30 31 Replicate_Do_Table:32 33 Replicate_Ignore_Table: umsdb.boco_tb_connect_log,umsdb.boco_tb_menu,umsdb.boco_tb_workorder_record,

  umsdb.boco_tb_data_stat,umsdb.boco_tb_log_record34 35 Replicate_Wild_Do_Table:36 37 Replicate_Wild_Ignore_Table:38 39 Last_Errno: 040 41 Last_Error:42 43 Skip_Counter: 044 45 Exec_Master_Log_Pos: 3975388246 47 Relay_Log_Space: 982666348 49 Until_Condition: None50 51 Until_Log_File:52 53 Until_Log_Pos: 054 55 Master_SSL_Allowed: No56 57 Master_SSL_CA_File:58 59 Master_SSL_CA_Path:60 61 Master_SSL_Cert:62 63 Master_SSL_Cipher:64 65 Master_SSL_Key:66 67 Seconds_Behind_Master:

  3、       

             ,            , ServA        ,  ServB        ,         。

    ServB      ,   ServA         ,     ServB     ,   ServB          ,    show slave status\G    Slave_IO_Running    No,            ,       ServB  。       ?          。            ,             :

  --slave-net-timeout=seconds

      : slave       log     ,               。

               ,   60 

  slave-net-timeout=60

    MySQL      ,     。

  4、           

            ,      slave               master       , slave     :

  MySQL> show slave status\G

           :

  1 *************************** 1. row ***************************2 3 Slave_IO_State: Waiting for master to send event4 5 Master_Host: 10.21.3.2406 7 Master_User: tongbu8 9 Master_Port: 330610 11 Connect_Retry: 3012 13 Master_Log_File: MySQL-bin.00000114 15 Read_Master_Log_Pos: 36016 17 Relay_Log_File: localhost-relay-bin.00000318 19 Relay_Log_Pos: 49720 21 Relay_Master_Log_File: MySQL-bin.00000122 23 Slave_IO_Running: Yes24 25 Slave_SQL_Running: Yes26 27 Replicate_Do_DB: bak28 29 Replicate_Ignore_DB:30 31 Replicate_Do_Table:32 33 Replicate_Ignore_Table:34 35 Replicate_Wild_Do_Table:36 37 Replicate_Wild_Ignore_Table:38 39 Last_Errno: 040 41 Last_Error:42 43 Skip_Counter: 044 45 Exec_Master_Log_Pos: 36046 47 Relay_Log_Space: 49748 49 Until_Condition: None50 51 Until_Log_File:52 53 Until_Log_Pos: 054 55 Master_SSL_Allowed: No56 57 Master_SSL_CA_File:58 59 Master_SSL_CA_Path:60 61 Master_SSL_Cert:62 63 Master_SSL_Cipher:64 65 Master_SSL_Key:66 67 Seconds_Behind_Master: 0  Master_Log_File    master        。

   master           :

  MySQL> show master logs;

           :

  +----------------------+-----------+

  | Log_name | File_size |

  +----------------------+-----------+

  | localhost-bin.000001 | 495 |

  | localhost-bin.000002 | 3394 |

  +----------------------+-----------+

    slave       Master_Log_File      master        , slave                   :

  MySQL> start slave;

    master             ,      master         ,       。

   slave     :

  MySQL> stop slave;

   master     :

  MySQL> stop slave;

   slave     :

  MySQL> load data from master;

  MySQL> reset master;

  MySQL> start slave;

   master     :

  MySQL> reset slave;

  MySQL>start slave;

    :LOAD DATA FROM MASTER         MyISAM           。