「Mysql/レプリケーション」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「マスターipが192.168.1.2 スレーブipが192.168.1.3 として解説 ==master側設定== $ sudo vi /etc/my.cnf [mysqld] # バイナリログの出力先設定...」) |
|||
行17: | 行17: | ||
スレーブからアクセスするための権限をマスターに追加(パスは適宜変更) | スレーブからアクセスするための権限をマスターに追加(パスは適宜変更) | ||
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@192.168.1.3 IDENTIFIED BY 'password'; | mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@192.168.1.3 IDENTIFIED BY 'password'; | ||
− | |||
− | |||
− | |||
マスターのポジションidを確認しておく | マスターのポジションidを確認しておく | ||
行50: | 行47: | ||
MASTER_LOG_POS=120; # マスターのポジションidを入れる | MASTER_LOG_POS=120; # マスターのポジションidを入れる | ||
mysql> start slave; | mysql> start slave; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
mysql> show slave status; # ポジションidが同じか確認 | mysql> show slave status; # ポジションidが同じか確認 | ||
行84: | 行71: | ||
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT | -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT | ||
$ sudo /etc/rc.d/init.d/iptables restart | $ sudo /etc/rc.d/init.d/iptables restart | ||
+ | |||
+ | ==レプリーケーション設定を変更する場合はslaveを一旦止める== | ||
+ | mysql> stop slave; |
2016年1月11日 (月) 20:12時点における版
マスターipが192.168.1.2 スレーブipが192.168.1.3 として解説
目次
master側設定
$ sudo vi /etc/my.cnf
[mysqld] # バイナリログの出力先設定 log_bin = /var/lib/mysql/mysql-bin # レプリケーションサーバーIDの指定 server-id = 2
再起動
$ sudo /sbin/service mysqld start
スレーブからアクセスするための権限をマスターに追加(パスは適宜変更)
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@192.168.1.3 IDENTIFIED BY 'password';
マスターのポジションidを確認しておく
mysql> show master status; | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 120 | | | |
slave側設定
$ sudo vi /etc/my.cnf
[mysqld] # バイナリログの出力先設定 log_bin = /var/lib/mysql/mysql-bin # レプリケーションサーバーIDの指定 server-id = 3 # リレーログの出力先設定 relay-log=/var/lib/mysql/mysql-relay-bin
再起動
$ sudo /sbin/service mysqld start
レプリーケーション設定実行
mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.2', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', # マスターのbinを入れる MASTER_LOG_POS=120; # マスターのポジションidを入れる mysql> start slave;
mysql> show slave status; # ポジションidが同じか確認
サンプル
マスター側で実行
create database repl_test default character set utf8; create table users(id int unsigned primary key auto_increment, name varchar(127)); insert into users(name) values('taro');
スレーブ側で参照
select * from users; +----+--------+ | id | name | +----+--------+ | 1 | taro | +----+--------+
うまくいかないとき
スレーブのdbからマスターのdbに入れるか確認する mysql -urepl -p -h 192.168.1.2
mysqlで入れないときはマスター側のファイアウォールが邪魔してないか確認する
$ sudo vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT $ sudo /etc/rc.d/init.d/iptables restart
レプリーケーション設定を変更する場合はslaveを一旦止める
mysql> stop slave;