日向夏特殊応援部隊

俺様向けメモ

FedoraCore6でMySQL5.0のレプリケーション設定

と言うかiptablesではまったの巻。

master側の設定

masterにしたいDB側で、とりあえず下記の設定を/etc/my.cnfに入れておく。

log-bin=mysql-bin
server-id = 1

次にreplication用のユーザーを追加しておきます。

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.%' IDENTIFIED BY 'hogehoge';

さらにmaster dataのdumpデータを取ります。

$ mysqldump --all-databases --master-data > /tmp/mysql_dump.sql
$ scp /etc/mysql_dump.sql root@slave01:/tmp
$ scp /etc/mysql_dump.sql root@slave02:/tmp

slave側の設定

/etc/my.cnfに下記のような設定を入れておきます。
設定値は環境に応じてアレンジして下さい。

server-id = 2
master-host = master
master-user = repl
master-password = hogehoge
read_only
skip_slave_start = 1

この状態でslaveのdbを起動して、

$ mysql -u root < /tmp/mysql_dump.sql

そして、slaveにログインして、

mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G

ここで

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

って出てれば大体動いてます。w
masterのテーブルを更新してみてテストしてみて下さい。

iptablesmysqlを許可

ここが一番はまった罠。
まずは設定値を確認します。

# iptables -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination         
1    ACCEPT     all  --  anywhere             anywhere            
2    ACCEPT     icmp --  anywhere             anywhere            icmp any 
3    ACCEPT     esp  --  anywhere             anywhere            
4    ACCEPT     ah   --  anywhere             anywhere            
5    ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns 
6    ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp 
7    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp 
8    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
9    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
10   REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

mysqlを全開放するには、

# iptables -I RH-Firewall-1-INPUT 10 -p tcp -d 0/0 --dport 3306 -s 0/0 -j ACCEPT

でOKです。