自宅がiDC?

自宅がiDC?

自宅に普通のPCを置いてレンタルサーバ?いえ、iDCです。

自宅がiDC? RSS Feed
 
 
 
 

CentOSにMySQLレプリケーションをインストール

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加


今回も枯れたネタでしかもインストールするだけですw
ネタはMySQLレプリケーションです。
技術的なちょっと深いのもやりたいけど、めんどくせーw

さて備忘録程度の手順を以下に。

今回の構築した環境はCentOS5.4(x64)にMySQL-5.1.48を使いました。
そしてRPMを使ってインストールをしていきます。

大雑把な手順は下記の通りです。

①RPM一式をダウンロード
②RPMをインストール
③MySQLの初期設定and起動
④DBを初期化してレプリケーションの準備
⑤Active側のデータ領域をごっそりStanby側へ
⑥レプリケーションスタート

では、詳細の手順に移ります。
①RPM一式をダウンロード
インストールに必要なRPMは下記のものです。
MySQLの公式サイトからダウンロードしましょう。
MySQL-client-5.1.48-1.glibc23.x86_64.rpm
MySQL-devel-5.1.48-1.glibc23.x86_64.rpm
MySQL-server-5.1.48-1.glibc23.x86_64.rpm
MySQL-shared-5.1.48-1.glibc23.x86_64.rpm

②RPMをインストール
ダウンロードしたら一気にインストールしましょう。
Active機、Standby機ともにインストールします。

# rpm -ivh <RPMパッケージ>

③MySQLの初期設定and起動
続いてインストールが完了したら初期設定をします。
今回設定ファイルは
/etc/my.cnf
として、データ領域は
/var/data
としています。

Active機のmy.cnfは以下の物だけいじりました。

[mysqld]
# vi /etc/my.cnf
skip-name-resolve <--名前解決しないように。
server-id       = 1 <--Standby機は「2」を指定。
log-error = /var/log/mysql/db01.error.log <--ログ出力大事。

そしてDBの初期化。

db01# su - mysql
$ /usr/bin/mysql_install_db --datadir=/var/data/mysql
$ exit
# /etc/initi.d/mysql start

次はレプリケーション専用のユーザ作成。

db01# mysql -u root
mysql> GRANT REPLICATION SLAVE ON *.* TO 'dbrep'@'Standby機のIP/255.255.255.0' IDENTIFIED BY 'PASSWORD';

⑤Active側のデータ領域をごっそりStanby側へ
次はごっそりとActive機からStandby機へデータ領域をコピーしちゃいます。

db01# mysql -u root
mysql> FLUSH TABLES WITH READ LOCK;
mysql>exit
 
db01# cd /var/data/mysql
db01# tar zcvf /tmp/db01_mysql.tar.gz ./*
db01# scp -p /tmp/db01_mysql.tar.gz tfi-dev@Stanby機のIP:/tmp
db01# mysql -u root
mysql> FLUSH LOGS;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |      106 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
※このファイル名をメモしておく。
 
mysql> UNLOCK TABLES; <--実はStanby機の作業が終わるまでこれは待つのがいいかも。。。
msyql> exit

Stanby機にログインして以下からStanby機で作業をしていきます。

db02# /etc/init.d/mysql stop
db02# cd /var/data/mysql
db02# rm ./* -rf
db02# tar zxvf /tmp/db01_mysql.tar.gz
db02# /etc/init.d/mysql start

次はマスターへの接続設定をします。

db02# mysql -u root
mysql> CHANGE MASTER TO MASTER_HOST='Active機のIP',MASTER_PORT=3306,MASTER_USER='dbrep',MASTER_PASSWORD='PASSWORD',MASTER_LOG_FILE='mysql-bin.000004';
※MASTER_LOG_FILE=の指定はdb01でメモしたものを指定。

⑥レプリケーションスタート
さぁいよいよレプリケーションのスタート。

db02# mysql -u root
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS;
※いろいろ出力が出てくるけど、下記のパラメータがONになっていればOK。
 Slave_IO_Running yes
 Slave_SQL_Running yes

以上で完了です。運用方法や困ったことはググると沢山出てきます。
バイナリログの自動削除やレプリケーションの復旧などなど。
マルチマスターなんてのも簡単にできたりします。

これだけだとただの複製なので、HA構成にするには自前スクリプトかHeartbeatが必要です。
MySQLの死活監視にはmysql pingを使うといいと思います。
ただ、データは非同期なのでTPOに合わせて使いましょうw

関連記事

2 Responses to “CentOSにMySQLレプリケーションをインストール”

  1. 1
    Tweets that mention CentOSにMySQLレプリケーションをインストール | 自宅がiDC? -- Topsy.com:

    [...] This post was mentioned on Twitter by gadget, せいりゅー. せいりゅー said: 超手抜きでブログ更新w 「CentOSにMySQLレプリケーションをインストール」http://bit.ly/9mQJxt [...]

  2. 2
    匿名:

    [...] [...]

Leave a Reply

Additional comments powered by BackType

TopHatenar

あわせて読みたいブログパーツ