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のテーブルを更新してみてテストしてみて下さい。
iptablesでmysqlを許可
ここが一番はまった罠。
まずは設定値を確認します。
# 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です。