web-dev-qa-db-ja.com

これにより、XtraDBクラスターがハングしますか?

2番目のノードのエラーログで以下を確認した後:

_121003  7:16:06 [Note] WSREP: Member 0 (joiner) synced with group.
121003  7:16:06 [Note] WSREP: Shifting JOINED -> SYNCED (TO: 0)
121003  7:16:06 [Note] WSREP: Synchronized with group, ready for connections
121003  7:16:06 [Note] WSREP: wsrep_notify_cmd is not defined, skipping notification.
121003  7:17:08 [Note] WSREP: Skipping empty log_xid: COMMIT
121003  7:17:08 [Note] WSREP: ignoring DDL failure: 0 ALTER TABLE bigdata_queue_campaigns DISABLE KEYS
121003  7:17:08 [Note] WSREP: Skipping empty log_xid: COMMIT
121003  7:17:08 [Note] WSREP: ignoring DDL failure: 0 ALTER TABLE bigdata_queue_campaigns ENABLE KEYS

...
_

_121003 7:31:33 [ERROR] Slave SQL: Error 'Table 'reportingdb.norep_zonebannertmp_bk' doesn't exist' on query. Default database: 'reportingdb'. Query: 'TRUNCATE TABLE norep_zonebannertmp_bk', Error_code: 1146_

_121003  7:31:33 [Warning] WSREP: RBR event 1 Query apply warning: 1, 1141
_

121003 7:31:33 [Warning] WSREP: Ignoring error for TO isolated action: source: 84dcb35c-0ce4-11e2-0800-4568aec9a7f3 version: 2 local: 0 state: APPLYING flags: 65 conn_id: 1106 trx_id: -1 seqnos (l: 1196, g: 1141, s: 1140, d: 1140, ts: 1349224295344525000)

最初のノードにログインできない_mysql -u root -p_がハングします。このノードのエラーログには何も表示されません。

Percona-XtraDB-Cluster-server-5.5.27-23.6.356.rhel5を使用しています。

さらに情報が必要な場合はお知らせください。

3
quanta

テーブルreportingdb.norep_zonebannertmp_bkがクラスター内のいずれかのノードに存在しない場合、これが問題の原因である可能性があります。どうして? TRUNCATE TABLEはDDLです。これにより、書き込みセット操作中にPXCが持っている現在のトランザクションが閉じます。これはロールバックできません。 TRUNCATE TABLEにより暗黙のCOMMITが発生するため、COMMITにPXC通信の問題が発生するはずです(2011年5月12日のStackOverflowの投稿を参照) 。クラスタのすべてのノードにテーブルreportingdb.norep_zonebannertmp_bkが存在していた場合、TRUNCATE TABLEはエラーなしで実行されます。これに関するBugReportsを確認する必要があります。おそらくこれを質問としてPerconaに提出してください。

これを解決するために2つの方法があります。

方法#1

テーブルが欠落しているPXC(Percona XtraDB Cluster)でテーブルを再作成できます

  • Step01)Nodeまだテーブルがある)でSHOW CREATE TABLE reportingdb.norep_zonebannertmp_bk\Gを実行
  • ステップ02)そのクエリをコピーして/root/Fix.sqlに貼り付けます
  • ステップ03)CREATE TABLECREATE TABLE IF NOT EXISTS/root/Fix.sqlに変更します
  • ステップ04)テーブルを持たないPXCノードで/root/Fix.sqlを実行します

方法#2

他のテーブルが同期していない場合は、完全なSSTを実行する必要があります。これを行う最も積極的な方法は次のとおりです。

cd /var/lib/mysql
service mysql stop
rm -f /var/lib/mysql/galera.cache /var/lib/mysql/grastate.dat
service mysql start

/var/lib/mysql/galera.cacheがないため、ISTを実行できません。 SSTが開始されます。

1
RolandoMySQLDBA