*MySQLBackUp [#afc6d9bc]

RIGHT:更新日&lastmod();

**レプリケーションを利用したバックアップ [#z4b6eb29]
マスターでの更新情報をバイナリログとしてスレーブに転送、これをSQLに変換しスレーブで実行しデータ同期を行うようだ。バイナリログは逐次スレーブ側に転送される?~

BackUpをとるには同じDBを作製しておく必要がある。

***マスター [#wf204aff]

''/etc/my.cnf''

 [mysqld]
 
 ## REPLICATION MASTER SETTING
 
 ## user = mysql
 server-id = 1
 log-bin
 character-set-server = utf8

設定内容~
SLAVE IP :10.1.4.142~ 
User :repl~

 mysql> GRANT REPLICATION SLAVE ON *.* TO repl@10.1.4.142 IDENTIFIED BY '*****';

***現在のバイナリログの状態を確認 [#l5187035]
マスタのバイナリログのどの時点からレプリケートを開始すればよいかスレーブにはわからないからないので、場所を決定するに必要となる。この場所がFileとPosition。

(Master側でDBをLock) &color(red){<=変更が多くないときは不要かもでも安全のため};
 mysql> FLUSH TABLES WITH READ LOCK;

''logファイルと、logポジションを表示''

  mysql> SHOW MASTER STATUS;   <=(1)
 +------------------+----------+--------------+------------------+
 | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
 +------------------+----------+--------------+------------------+
 | mysql-bin.000024 |       98 |              |                  |
 +------------------+----------+--------------+------------------+
 1 row in set (0.01 sec)


DBをBackUpしてスレーブ側にコピーしてからUnLock

 mysql> UNLOCK TABLES;


***スレーブ [#m88db59e]

''/etc/my.cnf''

 [mysqld]
 
 ## REPLICATION SLAVE SETTING
 
 server-id = 2
 character-set-server = utf8
 read-only   <=アプリケーションからの変更禁止

&color(red){以下のCHANGE MASTER TO と STOP/START SLAVE;はDBを追加するごとに必要};

一度CHANGE MASTER TO は実行すればOK
 mysql> CHANGE MASTER TO 
     -> MASTER_HOST='10.99.99.202', 
     -> MASTER_PORT=3306, 
     -> MASTER_USER='repl', 
     -> MASTER_PASSWORD='*******', 
     -> MASTER_LOG_FILE='mysql-bin.000024', <=MASTER側で表示したSTATUSの結果を記入
     -> MASTER_LOG_POS=98;  <=MASTER側で表示したSTATUSの結果を記入
 
 Query OK, 0 rows affected (0.04 sec)


''スレーブの起動''
 mysql> START SLAVE;
 Query OK, 0 rows affected (0.01 sec)

''スレーブの状態の表示''
 mysql> show slave status\G;
 
 *************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                 Master_Host: 10.99.99.202
                 Master_User: repl
                 Master_Port: 3306
               Connect_Retry: 60
             Master_Log_File: mysql-bin.000024
         Read_Master_Log_Pos: 98
               Relay_Log_File: localhost-relay-bin.000002
               Relay_Log_Pos: 235
       Relay_Master_Log_File: mysql-bin.000024
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
             Replicate_Do_DB:
         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: No
          Master_SSL_CA_File:
          Master_SSL_CA_Path:
             Master_SSL_Cert:
           Master_SSL_Cipher:
              Master_SSL_Key:
       Seconds_Behind_Master: 0
 1 row in set (0.00 sec)
 
 ERROR:
 No query specified


''スレーブの停止''
 mysql> STOP SLAVE;
 Query OK, 0 rows affected (0.01 sec)

CHANGE MASTER TO を実行すると以下のファイルができるので、その情報でその後再起動は問題なく動作する。
 # less /var/lib/mysql/master.info
 14
 mysql-bin.000024
 98
 10.99.99.202
 repl
 ******
 3306
 60
 0

 # less /var/lib/mysql/relay-log.info
 ./localhost-relay-bin.000002
 235
 mysql-bin.000024
 98

***その他の指定 [#u74a6373]

''レプリケーションを作製するDBやテーブルの指定''~
Slaveのmy.cnfに指定

[mysqld]
|replicate-do-db |対象となるデータベース名 |  |
|replicate-ignore-db |対象外となるデータベース名 |  |
|replicate-do-table |対象となるテーブル名 |指定方法:データベース名.テーブル名 |
|replicate-ignore-table |対象外となるテーブル名 |指定方法:データベース名.テーブル名 |

複数あるときは~
replicate-do-db = db1~
replicate-do-db = db2~

のように併記する。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS