スタッフブログ

ローハイドのスタッフが、日常のこと、ネットで見つけた便利な情報、仕事に役立つとっておきのテクニックを紹介します。

Fight! the Rawhide

2007年6 月6日12:32

MySQL4.1.20でのレプリケーション

STAFF BLOG

よこはま

ndbクラスタがまだこわいので、とりあえず安定稼働が見込める段階になるまで、レプリケーションで対応しようとおもい、とりあえずMySQL4.1.20x2台でレプリケーションを実装してみました。僕はびびりです。。。

なので、手順を記録します。
既にうちの環境の場合、1台のサーバでMySQL4.1.20が稼働しているので、このマシーンをマスターにし、2代目のマシーンにスレーブの設定をすることにしました。最終的に以下のような構成にします。
hoge1 マスター
hoge2 スレーブ (バックアップとしても使う)

【手順】
・hoge1のmy.cnfに以下の設定がされているか確認をします。もしされていなければ、以下の一行を[mysqld]セクションに追加しmysqldを再起動してください。
[mysqld]
log-bin

・hoge1のデータベースのスナップショットをとります。
hoge1$ mysql -u -p

mysql >FLUSH TABLES WITH READ LOCK; #テーブルをロックする
mysql > exit;
hoge1$ cd $MYSQL_DATA_DIR
hoge1$ tar zcf mysql.tar.gz .
hoge1$ mysql -u -p

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

・hoge1のmy.cnfに以下の設定をします。設定をしたらmysqldを再起動してください。
[mysqld]
server-id=1

・以下のコマンドを実行し内容を控えておいてください。
hoge1$ mysql -u -p

mysql> SHOW MASTER STATUS;
+—————–+———-+—————+——————–+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————–+———-+—————+——————–+
| db1-bin.000004 | 158304 | | |
+—————–+———-+—————+——————–+
★Fileと、Positionの値を保存しておいてください。

・ここで作成したmysql.tar.gzをhoge2へ移し、データディレクトリに展開します。
hoge2$ cd $MYSQL_DATA_DIR
hoge2$ tar zxf mysql.tar.gz
hoge2$ chown -R mysql.mysql .

・hoge2のmy.cnfに以下の設定をします。
[mysqld]
server-id=2 #以降スレーブサーバを追加する際には、それぞれのサーバのmy.cnfのここの部分を3,4,5と増やしていってください。

・hoge2のサーバを起動します。
hoge2$ service mysqld start

・hoge2にスレーブとしての設定を行います。
hoge2$ mysql -u -p

mysql> CHANGE MASTER TO
-> MASTER_HOST=’マスターサーバのURL’,
-> MASTER_USER=’接続ユーザ’,
-> MASTER_PASSWORD=’ユーザのパスワード’,
-> MASTER_LOG_FILE=’Fileの内容’,
-> MASTER_LOG_POS=Positionの内容;

・レプリケーションを開始します。
hoge2$ mysql -u -p

mysql> START SLAVE;
mysql> quit;

・これでレプリケーションの設定は完了です。実際にマスターDBに何か書き込みを行い、その内容がスレーブに反映されているか、確認をとってみてください。

コメントをどうぞ