ワードプレスを複数サーバで同期

Mysqlレプリケーションして、画像を同期させる方法でやる

ワードプレス同期方法

■マスターサーバ側
1.my.cnfを編集

vi /etc/my.cnf

[mysqld]
#バイナリログをとる
log-bin

#識別ID、スレーブとユニークじゃなきゃダメ
server-id=1

バイナリログとは、クエリを保存してるファイル
詳しく知りたければこちら
http://open-groove.net/mysql/mysql-binlog/


2.再起動
/etc/init.d/mysqld restart


3.mysqlにログイン

$ mysql -u root -p


4.レプリケーション用ユーザを製作

GRANT REPLICATION SLAVE ON *.* TO repl@192.XXX.XXX.XXX IDENTIFIED BY 'passwd';


5.マスターのステータスを記録

SHOW MASTER STATUS;

 +-----------------+----------+--------------+------------------+
 | File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |
 +-----------------+----------+--------------+------------------+
 | data-bin.000001 |      105 |              |                  |
 +-----------------+----------+--------------+------------------+
 1 row in set (0.00 sec)

※後で使うので上の「data-bin.000001」「105」をメモっておく


6.DBの同期をしてなかったらする
また、必要であればテーブルロックしたりする
http://d.hatena.ne.jp/susan-style/20120520/1337499011


■スレーブサーバ側

7.my.cnfにサーバIDと更新するDB&テーブルを定義する

vi /etc/my.cnf

[mysqld]
#識別ID、マスターとユニークじゃなきゃダメ
server-id=2

# レプリケーション対象テーブル
replicate-do-table=wordpress.wp_postmeta
replicate-do-table=wordpress.wp_posts
replicate-do-table=wordpress.wp_term_relationships
replicate-do-table=wordpress.wp_terms
replicate-do-table=wordpress.wp_term_taxonomy

#URLを変えている場合は
replicate-do-table=wordpress.wp_options

分かると思うけど
replicate-do-table=[データベース名].[テーブル名]


8.再起動
/etc/init.d/mysqld restart



9.mysqlにログイン

$ mysql -u root -p

mysql> CHANGE MASTER TO
MASTER_HOST='XXX.XXX.XXX.XXX',
MASTER_USER='repl',
MASTER_PASSWORD='passwd',
MASTER_LOG_FILE='data-bin.000001',
MASTER_LOG_POS=105;

MASTER_HOST マスターのIPアドレス


MASTER_USER 4で設定したユーザ名


MASTER_PASSWORD 4で設定したパスワード


MASTER_LOG_FILE 5でメモったログファイル


MASTER_LOG_POS 5でメモったログポス


10.最後に開始してOK

mysql> START SLAVE;

奴隷開始!