mysql:5787
From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Fri, 12 Jul 2002 09:14:34 +0900
Subject: [mysql 05787] MySQL 3.23.51 のレプリケーションがタイムアウトする
とみたです。
MySQL 3.23.51 で、レプリケーションを行なうと、30秒毎に次のようなメッセー
ジがエラーファイルに出てきます。
020711 21:20:41 Error reading packet from server: (server_errno=1159)
020711 21:21:41 Slave: Failed reading log event, reconnecting to retry, log 'master-bin.001' position 114
020711 21:21:41 Slave: reconnected to master 'repl@master:3306',replication resumed in log 'master-bin.001' at position 114
レプリケーション自体はうまくできているのですが、エラーが鬱陶しいです。
mysqladmin variables で見ると slave_net_timeout は 3600 になっているの
に、それが効いてなくて、net_read_timeout の 30 が有効になっているみた
いです。
net_read_timeout を 3600 にしたとしても、マスタ側で更新がかからなけれ
ば、結局一時間毎にエラーが出てしまうので、根本的な解決にはなってないよ
うな…。
ソースを見てみたところ、3.23.49 では slave.cc は次のようになっていて、
タイムアウトは無視するようになっていたのですが、
while (!abort_loop && !abort_slave && len == packet_error &&
read_errno == EINTR )
{
len = mc_net_safe_read(mysql);
read_errno = errno;
}
3.23.51 では単純に
len = mc_net_safe_read(mysql);
だけになっていて、タイムアウトエラー状態のまま次の処理にいくのが問題み
たいです。
わざわざ変更したってことは何か意味があるんだと思うんですが、その意図が
わかりません…。
とりあえず 3.23.49 を使うことにしました。
--
とみたまさひろ <tommy@xxxxxxxxxx>
日本MySQLユーザ会 http://www.mysql.gr.jp
-> 5787 2002-07-12 09:14 [とみたまさひろ <tomm] MySQL 3.23.51 のレプリケーションがタイムアウトする 5949 2002-08-17 22:39 ┗[とみたまさひろ <tomm]