メモ > サーバ > サービス: AWS > RDSを使わずにMySQLのレプリケーションを設定
■RDSを使わずにMySQLのレプリケーションを設定
レプリケーションの設定については、サーバメモの「Etcetera.txt」も参照
■DBサーバ1 DB Master
203.0.113.4
MySQL root パスワード LkXhg9Yja2
GRANT ALL PRIVILEGES ON test.* TO dbmaster@localhost IDENTIFIED BY 'qazwsxedc';
GRANT ALL PRIVILEGES ON test.* TO dbmaster@203.0.113.2 IDENTIFIED BY 'qazwsxedc';
GRANT ALL PRIVILEGES ON test.* TO dbmaster@203.0.113.3 IDENTIFIED BY 'qazwsxedc';
外部サーバのMySQLに接続を試すの巻
http://blog.trippyboy.com/2010/mysql/%E5%A4%96%E9%83%A8%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AEmysql%E3%...
■DBサーバ2 DB Slave
203.0.113.5
■レプリケーションを設定(データベースの多重化)
※CHANGE MASTER の際に MASTER_LOG_FILE と MASTER_LOG_POS を指定する
※各DBサーバのファイヤーウォールを設定する
SELECT Host, User, Password FROM mysql.user;
SHOW BINARY LOGS;
SHOW SLAVE STATUS\G;
Slave_IO_Running、Slave_SQL_RunningがYesになっていればOK。
MySQL レプリケーションのセットアップ手順
http://wadslab.net/wiki/index.php?MySQL%20%A5%EC%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A4%CE%A5%...
EC2でMySQL(リージョン間レプリケーション編)
http://memocra.blogspot.jp/2011/08/ec2mysql_16.html
MySQLのレプリケーション設定とエラー時のメモ
http://takuan93.blog62.fc2.com/blog-entry-72.html
SQL_SLAVE_SKIP_COUNTERについて教えてもらったよ
http://zentoo.hatenablog.com/entry/20120116/1326734086
SQL_SLAVE_SKIP_COUNTER がまずいもう一つの理由
https://yakst.com/ja/posts/14
DBサーバ1とDBサーバ2のファイヤーウォールを設定する(相互にアクセスできるようにする)
□DBサーバ1
# vi /etc/my.cnf
□DBサーバ2
[mysqld]
log-bin=mysql-bin
server-id = 1001
# service mysqld restart
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@203.0.113.2 IDENTIFIED BY 'qazwsxedc';
FLUSH PRIVILEGES;
SELECT host,user FROM mysql.user;
SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 1686 | | |
+------------------+----------+--------------+------------------+
# vi /etc/my.cnf
■レプリケーションを開始
□DBサーバ1
[mysqld]
server-id=1002
CHANGE MASTER TO
MASTER_HOST='203.0.113.3',
MASTER_USER='repl',
MASTER_PASSWORD='qazwsxedc',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=355;
MASTER_LOG_FILE ... 「SHOW MASTER STATUS」の「File」
MASTER_LOG_POS ... 「SHOW MASTER STATUS」の「Position」
FLUSH PRIVILEGES;
# service mysqld restart
□DBサーバ2
# service mysqld restart
START SLAVE;
■WordPress
WordPressの場合、HyperDBというプラグインを使えば、マスター/スレーブのデータベースを参照させることができる
たった30分でWordPressを冗長化する方法 - (っ´∀`)っ ゃー
https://nullpopopo.blogcube.info/2012/08/%E3%81%9F%E3%81%A3%E3%81%9F30%E5%88%86%E3%81%A7wordpress%E3...
HyperDB でお手軽に WP の MySQL サーバを複数分散 | dogmap.jp
https://dogmap.jp/2013/10/28/wordpress-with-hyperdb/
■memcached
Cache用にサーバを用意する
以下はmemcached用の設定
# yum install memcached php-pecl-memcache
# vi /etc/php.ini
/etc/php.d/memcache.iniを編集
#以下の2行をコメントアウト(先頭に;を付与)
session.save_handler = files
session.save_path = "/var/lib/php/session"
# vi /etc/php.d/memcache.ini
セッションを扱うPHPプログラムで動作確認をする
#以下の行のコメントアウトを外す(先頭の;を除去)
;session.save_handler=memcache
#以下の行のコメントアウトを外す。?以下は除去
;session.save_path="tcp://localhost:11211?*******"
#こんな感じになる。,以降にもう一台のサーバのアドレスを指定する
session.save_path="tcp://localhost:11211"
# service httpd restart #Apacheを再起動
# service memcached start #memcacheを起動
# vi /etc/php.d/memcache.ini
memcacheとmemcachedは別物。memcachedの方が早くシンプルなので多く使われるらしい
memcachedの場合、tcp:// は付けないらしい
ファイヤーウォールの設定を忘れずに
session.save_handler=memcache
session.save_path="tcp://cacheinstance.example.cfg.apne1.cache.amazonaws.com:11211"
;session.save_path="tcp://cacheinstance.example.cfg.apne1.cache.amazonaws.com:11211"
session.save_path="tcp://cacheinstance-multi.example.cfg.apne1.cache.amazonaws.com:11211"