各務 洋
kagam****@outwa*****
2015年 5月 19日 (火) 20:34:49 JST
お世話になります、各務です。 > Error 'Data truncated for column 't_date' at row 1' > 'でSQLスレッド止まる件が全然再現しなくて困って(?)ます(´?ω?`) > ↑のやつ、sql_mode= STRICT_ALL_TABLESにしてもワーニングで収まっちゃうんですね。 > Handlerレイヤーのワーニングだからかしら。むーん。 ありゃ、「groonga-dev,03232」でお送りした方は最初の報告とは別環境で、 新規に作成した小さい検証環境なのですが、replication が切れるのはどちら でも再現してますねぇ。(今も発生しました) あと小さい検証環境側は、 slave_exec_mode = STRICT のままでした。 (設定忘れていました) ほとんどデフォルトから変更していませんが、念のため my.cnf の記述も添付します。 ---------------------------------------------------------------------- [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 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 # server-id = 2 ############################## [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysqldump] quick max_allowed_packet = 32M ---------------------------------------------------------------------- >> 確認した事項: >> >> replication は Slave側が 最初の Error 'Duplicate entry '10001' for key 'a_id'' >> on query. Default database: 'db_test'. >> Query: 'INSERT INTO tbl_test_pat_0005 (a_id, t_text) VALUES (10001,'t10001')' > > マスター側は並列で突っ込んでくるので、 > Mroongaさんのマルチスレッドアンセーフな部分ですり抜けて(?)NSERTが成功しそうですが、 > スレーブ側ではバイナリーログ上にシリアライズされて1クエリーずつ実行されるので > 本来マスターでも期待される通りユニークキー制約に引っかかっています。 > > > これ、Data truncated for .. のやつとは別件ですよね。。(´?ω?`) > (最近あんまり時間が取れてなくて。。) tbl_test_pat_0005 の方は別件なのかなぁ。エラーで切れる(切れないでよ!) というところは一緒ですが。それ以外だと、 tbl_test_pat_0001: スレーブ側にデーターが入る。 (ちょっと型範囲からはおかしいけど、マスターと同じで期待通り) tbl_test_pat_0005: スレーブ側にデーターは入らない。 (主キー重複だから。マスターと違うが期待通り) あれ?……う〜ん。 そうだ、tbl_test_pat_0005 は innodb でもテストしたのですが、mroonga の テストが先だったので、その時点で replication は切れていたのです。 replication 戻して、innodb でどうなるか試してみますね。 >> >> LOCK TABLES tbl_test_pat_0002 WRITE; >> > >> > (^-^; さ、最後の武器に取っておいてよいですか? >> >> はい! > > get_lock関数という手もありますよ! :) > https://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html#function_get-lock ありがとうございます! Postgres での advisory lock っぽく使えるかなぁ。 ---- 各務 kagam****@outwa*****