MySQL5.1でDB単位でのレプリケーション
2011年2月12日(土) 02:47 JST
閲覧数 15,918
Linux-HA環境を作ったので、次はMySQLのレプリケーションを試してみた。
DRBDでMySQLのデータを丸ごと同期でもいいのですが、MySQLは待機系で別アプリも動かしたかったので、DB単位でのレプリケーションにしてみました。
MySQLのレプリケーションは、非同期で実施可能なので深く考えなくても気軽に試せます。
待機系が死んでても稼動系では問題なくコミットされてくれるので、ほんと気軽です。
今回試した環境は、Slackware 13.1、MySQL 5.1になります。
(1)Master側設定
Slave側がアクセスするためのレプリケーションユーザーを作成し権限を設定します。
ここでは、replユーザを作成しています。ユーザ名はなんでも良い。
server-idは他のサーバとかぶらない様に設定する必要があります。
(2)Slave側設定
設定ファイル(/etc/my.cnf)にレプリケーションの設定を追加。
レプリケーション対象をテーブル単位にするなど指定も出来るので、使うアプリによって設定を変えてみると良い。
データベース丸ごとコピーしてくれば問題ない。
(3)起動スクリプト修正
Slackware13.1で試していた僕は、始め悩んでしまいました。
Masterの3306ポートに繋がらないと思ったら、そもそもLISTENしてませんでした。
よくよく見てみると起動スクリプトに「--skip-networking」オプションが仕込まれてました。
これを外すのをお忘れなく。(Master側だけで問題ありません、Firewallで必要なIPに対してだけ開けましょう。)
(4)確認
知っておけばいいコマンドはこの程度だろうか。
Slaveの確認は、「show slave status¥G」とした方が見やすいですが。。。
DRBDでMySQLのデータを丸ごと同期でもいいのですが、MySQLは待機系で別アプリも動かしたかったので、DB単位でのレプリケーションにしてみました。
MySQLのレプリケーションは、非同期で実施可能なので深く考えなくても気軽に試せます。
待機系が死んでても稼動系では問題なくコミットされてくれるので、ほんと気軽です。
今回試した環境は、Slackware 13.1、MySQL 5.1になります。
(1)Master側設定
Slave側がアクセスするためのレプリケーションユーザーを作成し権限を設定します。
ここでは、replユーザを作成しています。ユーザ名はなんでも良い。
mysql> grant file on *.* to repl;Slace側のIPアドレスからアクセスするユーザに権限「file」と「replication slave」を与え、パスワードを設定します。
mysql> grant file,replication slave on *.* to repl@192.168.1.100 IDENTIFIED BY 'p@ssw0rd';ログを作成する様に設定ファイル(/etc/my.cnf)を変更します。
server-idは他のサーバとかぶらない様に設定する必要があります。
server-id=1001 log-bin=mysql-bin
(2)Slave側設定
設定ファイル(/etc/my.cnf)にレプリケーションの設定を追加。
レプリケーション対象をテーブル単位にするなど指定も出来るので、使うアプリによって設定を変えてみると良い。
[mysqld] server-id=1002 master-host=MasterのIPアドレス master-user=レプリケーション・ユーザー名 master-password=レプリケーション・ユーザーのパスワード replicate-do-db=レプリケーションを行うデータベース名レプリケーション開始前の状態のデータベースをMasterからコピー。
データベース丸ごとコピーしてくれば問題ない。
項目 | 内容 | |
master-host | MasterのIPアドレスやホスト名 | |
master-port | MasterのPort | |
master-user | Replicationユーザ名 | |
master-password | Replicationユーザのパスワード | |
replicate-do-db | 対象となるデータベース名 | |
replicate-ignore-db | 対象外となるデータベース名 | |
replicate-do-table | 対象となるテーブル名 | 指定方法:データベース名.テーブル名 |
replicate-ignore-table | 対象外となるテーブル名 |
(3)起動スクリプト修正
Slackware13.1で試していた僕は、始め悩んでしまいました。
Masterの3306ポートに繋がらないと思ったら、そもそもLISTENしてませんでした。
よくよく見てみると起動スクリプトに「--skip-networking」オプションが仕込まれてました。
これを外すのをお忘れなく。(Master側だけで問題ありません、Firewallで必要なIPに対してだけ開けましょう。)
(4)確認
知っておけばいいコマンドはこの程度だろうか。
Slaveの確認は、「show slave status¥G」とした方が見やすいですが。。。
コマンド | 機能 |
SLAVE START | レプリケーションの開始/再開 |
SLAVE STOP | レプリケーションの停止 |
RESET SLAVE | Slaveの状態をリセット |
SHOW MASTER STATUS | Masterの状態表示 |
SHOW SLAVE STATUS | Slaveの状態表示 |