MYSQLのマスタスレーブとマスタコピーモード

8908 ワード

一、コピー紹介
MySQLは一方向、非同期レプリケーションをサポートし、レプリケーション中に1つのサーバがプライマリサーバとして機能し、1つ以上の他のサーバがセカンダリサーバとして機能します.プライマリ・サーバは、バイナリ・ログ・ファイルに書き込まれたインデックスを更新し、ログ・ループを追跡するためにファイルのインデックスを維持します.これらのログは、サーバから送信された更新を記録することができます.サーバからプライマリ・サーバに接続すると、プライマリ・サーバにサーバのログから最後に正常に更新された場所を通知します.その時から発生した更新をサーバから受信し、プライマリ・サーバが新しい更新を通知するのをブラックアウトして待機します.
レプリケーションを行う場合は、レプリケーション内のテーブルの更新はすべてプライマリ・サーバで行う必要があります.そうでない場合は、プライマリ・サーバ上のテーブルの更新と、サーバ上のテーブルからの更新との競合を回避するために注意する必要があります.
ワンウェイ・レプリケーションは、堅牢性、速度、システム管理に役立ちます.
•プライマリ・サーバ/サーバ設定から堅牢性が向上.プライマリ・サーバに問題が発生した場合は、サーバからのバックアップに切り替えることができます.
•プライマリ・サーバとセカンダリ・サーバの間でクライアント・クエリーの処理負荷を切り分けることで、より良いクライアント・レスポンス時間を得ることができます.SELECTクエリは、プライマリサーバのクエリ処理負荷を低減するためにサーバから送信することができる.ただし、データを変更する文は、プライマリ・サーバとセカンダリ・サーバが同期されるようにプライマリ・サーバに送信する必要があります.このロード・バランシング・ポリシーは、クエリーを主としない場合に有効ですが、一般的にはクエリーを更新します.
•レプリケーションを使用するもう1つの利点は、プライマリ・サーバに干渉することなく、サーバからバックアップを実行できることです.プライマリ・サーバは、バックアップ中に更新の処理を続行できます.
MySQLは、データベースの同期機能を提供しています.これは、事前のデータベースの災害対応、バックアップ、リカバリ、負荷分散などに役立ちます.
二、実験環境
オペレーティングシステム:RHEL 5.4 X 86
mysql:5.5.22バージョン
マスターマシン名:node 2 IP:192.168.1.252
slaveマシン名:node 1 IP:192.168.1151
三、MySQL主従モード
注意Mysqlデータベースのバージョンは、2つのデータベースのバージョンが同じか、slaveがmasterバージョンより低いことに注意してください.
3.1、ソースコードによるmysqlのインストール
ここでは、を参照してください.
3.2、Master端子:
3.2.1、ディレクトリの作成
1 [root@node2 ~]# mkdir -p /var/log/mysql         
2 [root@node2 ~]# chown -R mysql:mysql /var/log/mysql   //         mysql    

3.2.2、プロファイルの変更:
1 [root@node2 mysql]# vi my.cnf               //             
2 log-bin=mysql-bin                                  //          
3 binlog-do-db=node14 binlog-do-db=node2                                //                     ,       5 server-id = 1                                    //     ID6 log-bin=/var/log/mysql/updatelog          //    log   ,       mysql           mysql     7 binlog-ignore-db=mysql                   //    mysql    ,        

3.2.3、同期に使用するユーザーを作成する:
1 mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO 'replication'@'192.168.1.151' IDENTIFIED BY '123456'; 
2 Query OK, 0 rows affected (0.00 sec)      //       replication         
3 4 mysql> Grant ALL PRIVILEGES ON node1.* TO replication@'%' IDENTIFIED BY '123456';           //    replication,  123456,           node1,      
5 Query OK, 0 rows affected (0.00 sec)    
6 7 mysql> Grant ALL PRIVILEGES ON node2.* TO replication@'%' IDENTIFIED BY '123456';  
8 Query OK, 0 rows affected (0.00 sec)

3.2.4、データベースへのデータのコピー:
 1 mysql> create database node1; 2 Query OK, 1 row affected (0.00 sec) 3  4 mysql> create database node2; 5 Query OK, 1 row affected (0.00 sec) 6  7 mysql> use node1; 8 Database changed 9 mysql> create table node1 (id char) engine=myisam;10 Query OK, 0 rows affected (0.01 sec)11 12 mysql> insert into node1 values(1);13 Query OK, 1 row affected (0.00 sec)14 15 mysql> commit;16 Query OK, 0 rows affected (0.00 sec)17 18 mysql> exit;19 Bye20 [root@node2 app]# service mysql stop;21 Shutting down MySQL...                                     [  OK  ]22 23 [root@node2 data]# tar -cvf db.tar node1 node224 node1/25 node1/node1.MYI26 node1/db.opt27 node1/node1.frm28 node1/node1.MYD29 node2/30 node2/db.opt31 [root@node2 data]# ll32 total 3014033 -rw-r--r-- 1 root  root     20480 Nov 13 19:29 db.tar34 35 [root@node2 data]# scp db.tar node1:/app/mysql/data/36 db.tar                                                                 100%   20KB  20.0KB/s   00:00    37 38 [root@node2 data]# service mysql start39 Starting MySQL..                                           [  OK  ]40 41 [root@node2 data]# mysql42 Welcome to the MySQL monitor.  Commands end with ; or \g.43 Your MySQL connection id is 144 Server version: 5.5.22-log Source distribution45 46 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.47 48 Oracle is a registered trademark of Oracle Corporation and/or its49 affiliates. Other names may be trademarks of their respective50 owners.51 52 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.53 54 mysql> show master status;55 +------------------+----------+--------------+------------------+56 | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |57 +------------------+----------+--------------+------------------+58 | updatelog.000001 |      107 | node1,node2  | mysql            |59 +------------------+----------+--------------+------------------+60 1 row in set (0.00 sec)

 
3.3、Slave端:
3.3.1、構成ファイルの変更:
 1 [root@node1 data]# vi ../my.cnf 2 server-id       = 2                           //    ID   
 3 #master_host=192.168.1.152        //       
 4 #master_user=replication              //                     
 5 #master_password=123456           //    
 6 #master-port=3306                        //      
 7 #master-connect-retry=60               //             
 8 replicate-ignore-db=mysql              //   mysql    ,        
 9 replicate-do-db=node1                         //         
10 replicate-do-db=node211 ----  5.3     master_host   ,      change master to   

3.3.2、プライマリ・サーバ・データベースのマウント:
[root@node1 data]# tar -xvf db.tar
node1/node1/node1.MYI
node1/db.opt
node1/node1.frm
node1/node1.MYD
node2/node2/db.opt[root@node1 data]# chown -R mysql:mysql node1[root@node1 data]# chown -R mysql:mysql node2[root@node1 data]# service mysql restart
Starting MySQL                                             [  OK  ]

3.3.3、データの同期:
mysql> slave stop    -> ;
Query OK, 0 rows affected (0.01 sec)

mysql> change master to master_host='192.168.1.152', master_user='replication', master_password='123456';
Query OK, 0 rows affected (0.01 sec)

mysql> slave start;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.152
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: updatelog.000001
          Read_Master_Log_Pos: 107
               Relay_Log_File: node1-relay-bin.000002
                Relay_Log_Pos: 253
        Relay_Master_Log_File: updatelog.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: node1,node2
          Replicate_Ignore_DB: mysql
           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: 107
              Relay_Log_Space: 409
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 11 row in set (0.00 sec)

ERROR: 
No query specified

mysql> use node1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;+-----------------+| Tables_in_node1 |+-----------------+| node1           |+-----------------+1 row in set (0.00 sec)

mysql> select * from node1;+------+| id   |+------+| 1    |+------+1 row in set (0.00 sec)

3.4、テストデータ
----     mysql> use node1;Database changed
mysql> insert into node1 values(2);
Query OK, 1 row affected (0.01 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> use node2;Database changed
mysql> create table node2 (id char);
Query OK, 0 rows affected (0.01 sec)----     mysql> select * from node1;+------+| id   |+------+| 1    || 2    |+------+2 rows in set (0.00 sec)

mysql> use node2;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;+-----------------+| Tables_in_node2 |+-----------------+| node2           |+-----------------+1 row in set (0.00 sec)

四、MySQLマスターモード:
考え方は、互いに相手のスレーブサーバであり、各サーバは相手のプライマリサーバであり、また相手のスレーブサーバである.
ここでは省略します!