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

今回も枯れたネタでしかもインストールするだけです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
7月 20th, 2010 at 22:13
[...] This post was mentioned on Twitter by gadget, せいりゅー. せいりゅー said: 超手抜きでブログ更新w 「CentOSにMySQLレプリケーションをインストール」http://bit.ly/9mQJxt [...]
7月 21st, 2010 at 05:16
[...] [...]