8.3 データベース(MySQL)を冗長化稼働する(初期化時の再稼働方法)

対応パッケージ
LAMP Web

本サービスで提供される冗長化済みMySQLを含む仮想サーバを再初期化した場合、同期設定が解除されるため、以下のように同期設定を再設定します。



また、再初期化されたMySQL仮想サーバは単独稼働する設定で構築されているため、これをマスターDB側・スレーブDB側ともにレプリケーション稼働に切り替える必要があります。

補 足

マスターDB側の設定にスレーブDB側が合わせる形のため、作業はマスター側から実施します。

MySQLデータベースのマスターDB化

マスターDB側のMySQLをマスターDBとして再構築するために、マスターDB側で以下の2つの作業を実施します。

補 足

マスターDB自体は構成済みです。

1.SSHクライアントを使用して、マスターDBが稼働している仮想サーバにログインします。
2.マスターDBの構成を確認します。

# ifconfig eth1

eth1 Link encap:Ethernet HWaddr 02:02:87:AD:4F:1F

inet addr:10.160.2.71 Bcast:10.160.255.255 …(省略)


# mysql -uroot -phogehoge mysql (設定したパスワードでアクセス)

(省略)

mysql> show master status;

+-------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+-------------------+----------+--------------+------------------+

| mysqld-bin.000005 | 98 | | |

+-------------------+----------+--------------+------------------+

1 row in set (0.00 sec)


mysql> \q

Bye

#

表示された以下のパラメータをメモします。

inet addr 10.160.2.71
File mysqld-bin.000005
Position 98
3.マスターDBの複製(バックアップ)をマスターDBサーバ上の/var/lib/mysql.tar.gzに作成します。

# service mysqld stop

Stopping mysqld: [ OK ]

# tar zcf /var/lib/mysql.tar.gz -C /var/lib mysql

# service mysqld start

Starting mysqld: [ OK ]

MySQLデータベースのスレーブDB化

次はスレーブDB側のMySQLをスレーブDBとして再構築するために、マスターDB側で以下の2つの作業を実施します。


ここでは、マスターDBの構成が以下のように設定されている場合のスレーブDB側の操作を説明します。

inet addr 10.160.2.71
File mysql-bin.000005
Position 98

また、マスターDBの複製(バックアップファイル)は、「10.160.2.71:/var/lib/mysql.tar.gz」に保存されているものとします。

1.SSHクライアントを使用して、スレーブDBが稼働している仮想サーバにログインします。
2.スレーブ側へのマスターDB(複製)をコピーして、展開します。

# service mysqld stop (作業前に停止する)

Stopping mysqld: [ OK ]

# scp 10.160.2.71:/var/lib/mysql.tar.gz /var/lib

# mv /var/lib/mysql /var/lib/mysql.back

# tar zxpvf /var/lib/mysql.tar.gz -C /var/lib (展開する)

# service mysqld start (作業後は再稼働する)

Starting MySQL: [ OK ]

3.展開したデータベースをスレーブ化し、動作状況を確認します。

# mysql -u root

mysql> CHANGE MASTER TO MASTER_HOST='10.160.2.71',

MASTER_USER='replication', MASTER_PASSWORD='', MASTER_LOG_FILE='mysqld-bin.000005', MASTER_LOG_POS=98;

Query OK, 0 rows affected (0.02 sec)


mysql> START SLAVE;

Query OK, 0 rows affected (0.00 sec)


mysql> SHOW SLAVE STATUS\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 10.160.2.71

Master_User: replication

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysqld-bin.000006

Read_Master_Log_Pos: 287

Relay_Log_File: mysqld-relay-bin.000004

Relay_Log_Pos: 425

Relay_Master_Log_File: mysqld-bin.000006

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

...(「Slave_IO_Running」と「Slave_SQL_Running」が「Yes」と表示されることを確認する)...


mysql> \q

Bye

#