- 追加された行はこの色です。
- 削除された行はこの色です。
*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~
のように併記する。