MySQL使ってますか?
近年はMariaDBとかMongoDBとかNoSQLとかがでてきていろいろにぎやかになっているDB業界ですが、
「わたしのことは嫌いになってもMySQLのことは嫌いにならないでください!」
MySQLの5.5使ってマルチマスターレプリケーション組むとこまでを久々にやったので書いてみます。
CentOS6.5にMySQL5.5を入れる
以下のコマンドでまずはリポジトリ追加しましょう。
## EpelとRemiを入れる
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
そのあとyumでRemiリポジトリ指定でMySQL関連のソフトを一気にいれます。
## MySQLの5.5をremiから
yum --enablerepo=remi install mysql-server mysql mysql-libs mysql-devel
これでインストールは終わりです。もっと何かしたかったですか? ゴメンナサイ! これだけです!
レプリケーションの設定
じゃあさっそくレプリケーションを組んでいきましょう。
今回はマルチマスターを作りたかったので、マルチマスターレプリケーションを作ります。セミシンクロナイズ(準同期)レプリケーションについてはまた別記事で書きますね。
マスター1側
マスター1側のmy.cnfは以下。
[mysqld]
server-id = 101
log-bin = /var/lib/mysqllogs/bin-log
auto_increment_increment=5
auto_increment_offset=1
マスター2側
次にマスター2のmy.cnfは以下
[mysqld]
server-id = 102
log-bin = /var/lib/mysqllogs/bin-log
auto_increment_increment=5
auto_increment_offset=2
マスターホストの指定方法
ちなみ普通CentOSでyumでMySQLいれると5.1系が入りますが、5.1系でレプリケーション組むことになれちゃっているひとは5.5、5.6にしたら注意です。
5.5以降から設定ファイルに
master-host= [もう一台のサーバのIP]
master-port=3306
master-user=[スレーブ用のユーザ]
master-password=[パスワード]
を書けなくなりました。
MySQL起動後にchange master to〜〜〜を使います。
CHANGE MASTER TO
MASTER_HOST = '{MASTERHOSTNAME}',
MASTER_USER = '{MASTERUSERNAME}',
MASTER_PASSWORD = '{MASTERPASSWORD}'
MASTER_PORT={CONNECTPORT};
共通コマンド
以下を実行します。
## スレーブユーザの登録
GRANT REPLICATION SLAVE ON *.* TO 'slave-user'@'%' IDENTIFIED BY 'slave-password';
## マスターの指定
CHANGE MASTER TO MASTER_HOST = '[IPADDRESS]', MASTER_USER = '[USER]', MASTER_PASSWORD = '[PASSWORD]',MASTER_PORT=3306;
## スレーブの開始
start slave;
これでレプリケーションが開始されます。
確認方法
片方でテーブル作成、もう片方でinsertなどをやってみるとよいと思います。あとどうしてもpositionがずれるとかそういうトラブルがある場合は、一度データ移動して「reset slave」をかけるとうまく行きます。またその際はコピーされるDBの更新処理をとめるのも忘れずに。
では楽しいMySQLライフを!