このテーブルの目的は、複数の統計 (name
列で指定) を分単位で収集することです。次に、名前で分数の合計 ( ) を時間数にロールアップし、時間数の合計 ( ) をロールアップする SQL を作成しました。日などに。
テーブル構造は次のとおりです。
CREATE TABLE IF NOT EXISTS `stats` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`time` varchar(19) NOT NULL,
`name` varchar(16) NOT NULL,
`value` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `time_name` (`time`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=32060002 ;
「show slave status」によって表示されるエラーの 1 つを次に示します。
Last_SQL_Error: Error 'Duplicate entry '32189722' for key 'PRIMARY'' on query. Default database: 'quip_mailer'. Query: 'replace into stats select NULL, date_format( execute_time, '%Y-%m-%d %H:%i' ), 'sent', count(*) as v from queue as q where execute_time > '2013-07-13 16:17:00' group by date_format( execute_time, '%Y-%m-%d %H:%i' ) order by date_format( execute_time, '%Y-%m-%d %H:%i' )'
エラーは主キーですが、渡された主キーは NULL です。
それでは、実際に「置換」を実行してデータを置換しないのはなぜでしょうか? 私には意味がありません。
スレーブでその正確な sql コマンドをコピーして貼り付けて実行すると、問題なく動作します。問題が発生するのは、レプリケーションからダウンしている場合のみです。