2017年01月29日

このエントリーをはてなブックマークに追加
MySQLではレプリケーション機能があります。
マスター / スレーブですね。

ということで、以下の方法で構築しました。

1. マスター / スレーブで Server-id の設定
マスター: server-id=1
スレーブ: server-id=2

マスター側では一緒に log-bin も入れておきます。
log-bin

2. レプリケーションユーザーの作成(マスター)
phpmyadmin で行ってしまいました。

select Host, User, Password from mysql.user;
+-------------+------+-------------------------------------------+
| Host | User | Password |
+-------------+------+-------------------------------------------+
| X.X.X.% | repl | XXXX

とりあえず、/24 の範囲で許可しておきます。

3. データのコピーを行う
・マスター側作業
テーブルをロックし、更新されないようにする
FLUSH TABLES WITH READ LOCK;

ログのポジションを確認する(Change Masterコマンドで利用します)
SHOW MASTER STATUS;

バックアップの取得(パスワードなどは適宜指定)
# mysqldump --all-databases --master-data > dbdump.db

テーブルのロックを解除する
mysql> UNLOCK TABLES;

上記で取得したバックアップファイルを、スレーブ側にコピー。

・スレーブ側作業
データインポート
mysql < fulldb.dump

以下のコマンドを実行し、マスターに接続するように設定する
CHANGE MASTER TO
MASTER_HOST='X.X.X.X',
MASTER_USER='repl',
MASTER_PASSWORD='XXXXXXX',
MASTER_LOG_FILE='mysqld-bin.000001',
MASTER_LOG_POS=344; ※上記で確認したログのポジション

スレーブの開始
mysql> START SLAVE;

状態の確認
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: X.X.X.X
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqld-bin.000001
Read_Master_Log_Pos: 1661
Relay_Log_File: mysqld-relay-bin.000005
Relay_Log_Pos: 420
Relay_Master_Log_File: mysqld-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:

とりあえず以下の行が出力されていればOKのようです。
Slave_IO_State: Waiting for master to send event


参考
MySQL レプリケーションの設定
MySQL入門 レプリケーション編


stock_value at 15:05│Comments(0)TrackBack(0)技術 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔