レプリケーションの設定をするには、まずコピー元であるマスターとコピー先であるスレーブにマシンを分けて考えます。マスター、スレーブ、それぞれに別の設定が必要です。
その設定は以降に書きます。
マスターのマシンで以下のSQL文でユーザを追加する。
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@"192.168.1.0/255.255.0.0" IDENTIFIED BY 'pass';
更にマスターのマシンで、次のSQLを実行してユーザ権限を反映させる。
mysql> FLUSH PRIVILEGES
ここでは、マスターに USER: repl , PASS: pass としてユーザを作成した。
192.168.0.0/255.255.0.0 の部分は、スレーブの属するネットワークに設定しましょう。
次に、マスター,スレーブの my.cnf(MySQLの設定ファイル) を開きます。
マスタのmy.cnfには、次のように追記します。
log-bin = /var/db/repl/binary-log
server-id = 1
server-id はMySQLサーバの重複のしないIDを指定します。
log-bin は、サーバでのSQLトランザクションをバイナリ形式で保存します。
保存できるように、指定パスのディレクトリがない場合は作成する必要があります。
出力されたバイナリログは mysqlbinlog コマンドで表示することが出来ます。
スレーブのmy.cnfには、次のように追記します。
server-id = 2
master-host = マスタのホスト名(master-db.example.co.jp)
master-user = repl
master-password = pass
master-port = 3306
server-id はMySQLサーバの重複のしないIDを指定します。
master-hostにはホスト名、master-user,password には、マスターで作成したmysqlのユーザID、パスを指定します。master-port にはマスターのmysqlサーバのポート番号を指定します。
これで先にマスタのmysqldを再起動し、次にスレーブのmysqldを再起動する。
再起動は次のコマンドで実行できる
$ mysqladmin -u root shutdown
$ mysqld_safe &
マスターが既に運用済みの場合で、スレーブにデータをコピーしたい場合は、
マスターのデータをバックアップしてスレーブにデータを移す。
データ量が少なく、スレーブ上でコピーしたい場合は、
マスターの repl ユーザに RELOAD , SUPER , SELECT 権限を付与し、次のコマンドを実行することでマスターのデータを一括コピーできる。
mysql> use データベース名;
mysql> LOAD TABLE テーブル名 FROM MASTER;
スポンサードリンク