share facebook facebook twitter menu hatena pocket slack

2011.08.30 TUE

MySQLスレーブ側を作り直す

鈴木 宏康

WRITTEN BY 鈴木 宏康

何らかの問題で、マスターとスレーブの同期が取れなくなってしまうことがあります。
問題は色々なケースがありますが、このような場合に、スレーブの再構築を行う手順を復習のために書いておきます。

参考:MySQLのレプリケーション

DB(マスター側)

・内部IPを確認します。

[root@db1 mysql]# ifconfig

eth0 Link encap:Ethernet HWaddr 12:31:3E:00:2E:61
inet addr:10.162.48.139 Bcast:10.162.48.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:293449 errors:0 dropped:0 overruns:0 frame:0
TX packets:757109 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:27208339 (25.9 MiB) TX bytes:2059801268 (1.9 GiB)

上記より、10.162.49.139が内部IPとなります。

・マスターDB情報を確認します。

[root@db1 mysql]# less /var/lib/mysql/master.info
15
mysqld-bin.000006
106
ip-10-161-50-146.us-west-1.compute.internal
hoge
hogepass
3306
60
0

ここでユーザーパスを確認します。

hoge

hogepass

・現在のログファイルのポジションを確認します。

mysql> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| mysqld-bin.000291 | 106 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

・マスターのDBを止めます。

/etc/init.d/mysql stop

・MySQLデータをスレーブサーバに転送します。

rsync -avxz /home/mysql/ db2::mysql

※予めDB2(スレーブ)側ではrsyncdデーモンを立ち上げ、転送できるようにしておきます。

参考:CentOSで”rsync”のデーモンモード

・転送後はマスターのみ起動します。

/etc/init.d/mysql start

○DB(スレーブ側)

・MySQLを起動し、一度スレーブの機能を止めます。

mysql> STOP SLAVE;

・マスターの情報を書き換えます。

CHANGE MASTER TO
MASTER_HOST='10.162.49.139',
MASTER_USER='hoge',
MASTER_PASSWORD='hogepass',
MASTER_LOG_FILE='mysqld-bin.000291',
MASTER_LOG_POS=106;

・スレーブの機能を開始します。

mysql> START SLAVE;

・スレーブの状態を確認します。

mysql> SHOW SLAVE STATUSG
mysql> SHOW SLAVE STATUSG
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.162.48.139
Master_User: hoe
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqld-bin.000292
Read_Master_Log_Pos: 106
Relay_Log_File: mysqld-relay-bin.000021
Relay_Log_Pos: 252
Relay_Master_Log_File: mysqld-bin.000292
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

上記が共にYESになっていることを確認します。

/var/log/mysqld.log

そして、上記で、エラーが出ていないことも確認します。

こちらの記事はなかの人(kenjionsoku)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。