MySQLのHAをセットアップするために [〜#〜] prm [〜#〜] を使用しています。
時々、MySQLスレーブはいくつかのエラーで停止しました:
Error executing row event: 'Table 'reportingdb.tvc_ads_tag_date' doesn't exist'
[Warning] Slave SQL: Could not execute Update_rows event on table reportingdb.7k_banner_channel_tmp; Can't find record in '7k_banner_channel_tmp', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000854, end_log_pos 859094925, Error_code: 1032
120828 0:36:13 [Warning] Slave SQL: Could not execute Write_rows event on table reportingdb.7k_bookings_ver; Duplicate entry '1518' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.001022, end_log_pos 509479, Error_code: 1062
Error 'Error in list of partitions to DROP' on query. Default database: 'reportingdb'. Query: 'ALTER TABLE v3_ban_date_cpm7k DROP PARTITION pcurrent_201298'
そしてその mysql.sock
がありませんが、MySQLプロセスはまだ存在しています。以下のエラーのため、Pacemakerを再起動できません:
InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
TCP(-h 127.0.0.1
)MySQLを最初に停止してから、corosync
にMySQLを再起動させます。
要約すると、問題は次のとおりです。
mysql.sock
行方不明ですか? Pacemakerでこの状況をより適切に処理するにはどうすればよいですか?何百も飛ばさない方がいい。 1つずつループするだけです。
until mysql -e "show slave status\G;" | grep -i "Slave_SQL_Running: Yes";do
mysql -e "stop slave; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave;";
sleep 1;
done
使用しているスレーブを停止するだけです
mysql> stop slave;
次に、グローバル変数sql_slave_skip_counter
を1
に設定します。次に例を示します。
mysql> set global sql_slave_skip_counter=1;
次に、スレーブを起動します。
mysql> start slave;
次に、スレーブが機能しているかどうかを確認します。
mysql> show slave status \G;
それでもエラーが解決しない場合は、sql_slave_skip_counter
に次のように大きな値を設定します。
mysql> set global sql_slave_skip_counter=1000;
もう一度、スレーブのステータスを確認します。
スレーブステータスでskip_sql
の値がゼロ以外であることがわかった場合は、スレーブを再度停止して次のようにします。
mysql> set global sql_slave_skip_counter=0;
mysql> start slave;