Memo

メモ > サーバ > サービス: 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
[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 | | | +------------------+----------+--------------+------------------+
□DBサーバ2
# vi /etc/my.cnf
[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;
■レプリケーションを開始 □DBサーバ1
# 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
#以下の2行をコメントアウト(先頭に;を付与) session.save_handler = files session.save_path = "/var/lib/php/session"
/etc/php.d/memcache.iniを編集
# vi /etc/php.d/memcache.ini
#以下の行のコメントアウトを外す(先頭の;を除去) ;session.save_handler=memcache #以下の行のコメントアウトを外す。?以下は除去 ;session.save_path="tcp://localhost:11211?*******" #こんな感じになる。,以降にもう一台のサーバのアドレスを指定する session.save_path="tcp://localhost:11211"
# service httpd restart #Apacheを再起動 # service memcached start #memcacheを起動
セッションを扱うPHPプログラムで動作確認をする
# vi /etc/php.d/memcache.ini
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"
memcacheとmemcachedは別物。memcachedの方が早くシンプルなので多く使われるらしい memcachedの場合、tcp:// は付けないらしい ファイヤーウォールの設定を忘れずに

Advertisement