各務 洋
kagam****@outwa*****
2015年 6月 11日 (木) 13:37:27 JST
お世話になります、各務です。 Mroonga のストレージモードでレプリケーションが切断される件の再現手順を まとめてみました。 ---------------------------------------------------------------------- 現象: Mroonga のストレージモードでレプリケーションが切断される。 発生頻度は毎回。 ---------------------------------------------------------------------- 環境: CentOS 6.5 http://vault.centos.org/6.5/isos/x86_64/CentOS-6.5-x86_64-minimal.iso groonga-libs.x86_64 5.0.4-1.el6 @groonga groonga-normalizer-mysql.x86_64 1.1.0-1.el6 @groonga groonga-release.noarch 1.1.0-1 @/groonga-release-1.1.0-1.noarch mysql-community-mroonga.x86_64 5.03-2.el6 @groonga mysql-community-server.x86_64 5.6.25-2.el6 @mysql56-community ストレージモード マスター/スレーブの2台構成(但し仮想環境)です。 (Mroonga 5.02でも発生しています) ---------------------------------------------------------------------- 再現手順: # Master 側 IP Address # 192.168.xx.131 # Slave 側 IP Address # 192.168.xx.132 # 下記全て root で実行 ## 前準備 vi /etc/resolv.conf vi /etc/selinux/config SELINUX=disabled vi /etc/sysconfig/network-scripts/ifcfg-eth0 vi /etc/sysconfig/network-scripts/ifcfg-eth1 chkconfig iptables off chkconfig ip6tables off shutdown -r now ## 前準備終わり yum install -y http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm yum install -y http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm yum makecache yum install -y mysql-community-server /etc/rc.d/init.d/mysqld start yum install -y mysql-community-mroonga /etc/rc.d/init.d/mysqld stop # Master 側 サーバー [mysqld] セクションに下記を追加 vi /etc/my.cnf + transaction_isolation = READ-COMMITTED + mroonga_lock_timeout = 30000 + innodb_lock_wait_timeout = 50 + expire_logs_days = 5 + max_allowed_packet = 32M + + # Master + log-bin = mysql-bin + binlog_format = mixed + server-id = 1 # Slave 側 サーバー [mysqld] セクションに下記を追加 vi /etc/my.cnf + transaction_isolation = READ-COMMITTED + mroonga_lock_timeout = 30000 + innodb_lock_wait_timeout = 50 + expire_logs_days = 5 + max_allowed_packet = 32M + + # Slave + server-id = 2 /etc/rc.d/init.d/mysqld start # Master / Slave 共に mysql -uroot GRANT REPLICATION SLAVE ON *.* TO mysql****@192***** IDENTIFIED BY 'hogehoge'; GRANT REPLICATION SLAVE ON *.* TO mysql****@192***** IDENTIFIED BY 'hogehoge'; # Master 側で SHOW MASTER STATUS; # Slave 側で CHANGE MASTER TO MASTER_HOST='192.168.xx.131', MASTER_USER='mysqlrepl', MASTER_PASSWORD='hogehoge', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=120; START SLAVE; # Master 側で CREATE DATABASE db_test; USE db_test; CREATE TABLE `tbl_test_pat_0001` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `t_key` VARCHAR(255) NOT NULL, `t_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`), UNIQUE KEY `uidx_tbl_test_t_key_t_date` (`t_key`,`t_date`) ) ENGINE=mroonga DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO tbl_test_pat_0001 (t_key, t_date) VALUES ('test1', '0000-00-00'); -- ↑ここで Replication が切れる # Slave 側で SELECT * FROM tbl_test_pat_0001; -- ↑ 値は入っている。 ---------------------------------------------------------------------- 期待する動作: レプリケーション状態を続行して欲しい。 ---------------------------------------------------------------------- 確認した事項: INSERT の際は Warning が発生する。 mysql> SHOW WARNINGS; +-------+------+---------------------------------------------+ | Level | Code | Message | +-------+------+---------------------------------------------+ | Error | 1265 | Data truncated for column 't_date' at row 1 | +-------+------+---------------------------------------------+ ENGINE が innodb, またはラッパーモードだと Warning も Replication の切 断も発生しない。 ---- 各務 kagam****@outwa*****