Handle full tables more gracefully
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Percona XtraDB Cluster moved to https://jira.percona.com/projects/PXC | Status tracked in 5.6 | |||||
5.5 |
Confirmed
|
Undecided
|
Unassigned | |||
5.6 |
Incomplete
|
Critical
|
Unassigned |
Bug Description
Setup 3 node PXC cluster
Config node 1 and node 2:
[mysqld]
datadir=
innodb_
wsrep_provider = /usr/lib/
wsrep_sst_
wsrep_sst_
wsrep_cluster_
wsrep_cluster_
The config on node 3 has one setting changed:
innodb_
Now start to insert data on node 1 of the cluster.
When the ibdata1 file on node 3 gets full this will be printed in the error log:
131112 10:54:28 [ERROR] /usr/sbin/mysqld: The table 'test1' is full
131112 10:54:29 [ERROR] Slave SQL: Error 'The table 'test1' is full' on query. Default database: 'test1'. Query: 'insert into test1(name) select name from test1', Error_code: 1114
131112 10:54:29 [Warning] WSREP: RBR event 2 Query apply warning: 1, 200
131112 10:54:29 [ERROR] WSREP: Failed to apply trx: source: 68577052-
131112 10:54:29 [ERROR] WSREP: Failed to apply app buffer: seqno: 200, status: WSREP_FATAL
at galera/
at galera/
131112 10:54:29 [ERROR] WSREP: Node consistency compromized, aborting...
PXC Version: 5.5.34-
One possible solution: If a tables is (almost) full then stop certification which will prevent the client from inserting more data. The cluster will keep to function as readonly setup.
The second option: Just kick the node out of the cluster (maybe just put it in desync). To make it easier for the admin to connect to the server and fix the issue.
When fixing this issue Galera used SST on this node instead of IST, which should have been possible.
Please also note that XtraBackup for SST will also check the actual file size of ibdata1 and the maximum in the config file, which may not match and will cause SST to fail.
@Daniel,
Regarding your first solution, yes, we are looking at handling ENOSPC more gracefully on Percona Server side (which should apply to PXC as well). I will link to the appropriate blueprint/bug later on.