3306が解放されていない場合以下を実施
# vi /etc/sysconfig/iptables
+ -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
# service iptables restart
- [mysqld]以下に記述する事
# vi /etc/my.cnf
+ server_id = 1
# service mysql restart
- log_bin = /var/lib/mysql/mysql-binは予め設定済み(未設定の場合は設定)
- binlog_format = mixedは予め設定済み(未設定の場合は設定)
- read_onlyで設定
# vi /etc/my.cnf
+ server_id = 2
+ relay_log= mysql-relay-bin
+ log-slave-updates
+ read_only
# service mysql restart
- XXX.XXX.XXX.XXXのIPは各slaveのIPを設定すること
# mysql
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicator'@'XXX.XXX.XXX.XXX' IDENTIFIED BY 'replicator';
# mysql
mysql> show master status;
- XXX.XXX.XXX.XXXのIPは各masterのIPを設定すること
- mysql-bin.XXXXXXは「show master status」で取得したFileを設定すること
- YYYは「show master status」で取得したPositionを設定すること
# mysql
mysql> change master to
master_host = 'XXX.XXX.XXX.XXX',
master_user='replicator',
master_password='replicator',
master_port =3306,
master_log_file='mysql-bin.XXXXXX',
master_log_pos=YYY;
mysql> show processlist;
mysql> start slave;
mysql> show processlist;
- エラーとならないこと
- 2個のsystemuserが存在すること
mysql> show processlist;
- 1個のreplicatorが存在すること
mysql> show slave status\G
- Slave_IO_RunningがYesとなっていること
- Slave_SQL_RunningがYesとなっていること
# mysql
mysql> use test
mysql> show tables
- テーブルが存在しないこと
# mysql
mysql> use test
mysql> show tables;
- テーブルが存在しないこと
mysql> create table test(id int);
mysql> show tables;
mysql> select * from test;
- テーブルが作成出来、show tablesで表示されること
mysql> show tables;
mysql> select * from test;
- show tablesで表示されること
mysql> insert into test values(10);
mysql> select * from test;
- 10が出力されること
mysql> select * from test;
- 10が出力されること
- mysql-bin.XXXXXXは最新のファイルを指定する
# cd /var/lib/mysql
# cp mysql-bin.XXXXXX /tmp
# cd /tmp
# mysqlbinlog mysql-bin.XXXXXX > log.txt
# vi log.txt
- testテーブルの操作(create,insert)を確認
- mysql-relay.XXXXXXは最新のファイルを指定する
# cd /var/lib/mysql
# cp mysql-relay.XXXXXX /tmp
# cd /tmp
# mysqlbinlog mysql-relay.XXXXXX > log.txt
# vi log.txt
- testテーブルの操作(create,insert)を確認
$ git clone https://github.com/hironomiu/web-performance-tuning.git
$ cd web-performance-tuning/
$ vi Makefile
- DB_SCHEMA?=groupwork
+ DB_SCHEMA?=techtrain
Connection failed: SQLSTATE[HY000] [1045] Access denied for user 'demouser'@'localhost' (using password: YES) が出てOK
$ make install
httpdの設定
$ su -
# vi /etc/httpd/conf/httpd.conf
- DocumentRoot "/var/www/html"
+ DocumentRoot “/home/techtrain/web-performance-tuning/public_html"
- <Directory "/var/www/html">
+ <Directory "/home/techtrain/web-performance-tuning/public_html">
# service httpd restart
# exit
DB接続修正
$ vi ~/web-performance-tuning/app/config.php
- $mysqldConfig['database'] = 'groupwork';
- $mysqldConfig['user'] = 'demouser';
- $mysqldConfig['password'] = 'demopass';
+ $mysqldConfig['database'] = 'techtrain';
+ $mysqldConfig['user'] = 'techtrain';
+ $mysqldConfig['password'] = 'techtrain';
動作確認をブラウザですること(以下例)
http://133.242.227.244/chapter1/read
重要ログ削除
mysql> PURGE MASTER LOGS TO 'mysql-bin.000007';
確認 マスタースレーブともにtechtrainにuser、messageが存在すること
手際良く作業しないと確認出来ないので注意
mysql> update message set updated_at = now();
- master ターミナル1のSQLが完了したら実行する
# mysql
mysql> use test;
mysql> insert into test values(200);
- master ターミナル2のSQLが完了したら実行する
# mysql
mysql> use test;
mysql> select * from test;
- 200が出力されないこと
mysql> show slave status\G
- Seconds_Behind_Masterの数値がカウントアップされること
# ll /var/lib/mysql
- mysql-bin.XXXXXXのサイズを確認
# ll /var/lib/mysql
- mysql-bin.XXXXXXのサイズを確認
前で試験した内容をbinlog_formatをmixedからrowに変更して検証
# vi /etc/my.cnf
binlog_format = row
# service mysql restart
# mysql
mysql> show global variables like 'binlog_format%';
- rowが返ること
# vi /etc/my.cnf
binlog_format = row
# service mysql restart
# mysql
mysql> show global variables like 'binlog_format%';
- rowが返ること
# mysql
mysql> use groupwork;
mysql> update message set updated_at = now();
- master ターミナル1のSQLが完了したら実行する
# mysql
mysql> use test;
mysql> insert into test values(500);
- master ターミナル2のSQLが完了したら実行する
# mysql
mysql> use test;
mysql> select * from test;
- 500が出力されないこと
mysql> show slave status\G
- Seconds_Behind_Masterの数値がカウントアップされること
# ll /var/lib/mysql
- mysql-bin.XXXXXXのサイズを確認
# ll /var/lib/mysql
- mysql-bin.XXXXXXのサイズを確認
mixedのときのファイルサイズと比較すること
# su - demouser
$ cd sunrise
$ siege -c 10 http://localhost/mysql_insert_data
# mysql
mysql> use groupwork;
mysql> select count(*) from user;
# mysql
mysql> use groupwork;
mysql> select count(*) from user;
mysql> show slave status¥G
mysql_insert_dataを変更してmasterにinsert,slaveでinsertしたデータのselectを書いてみましょう 書いた後にsiegeでランニングさせつつ、実際にurlを叩いて挙動を確認しましょう。