- UNDO LOG - MySQL Cluster undo logs every write access to the disk data tables. You can grow this resource online (ALTER .. ADD ..)
- REDO LOG - as for in-memory tables every write is REDO logged. You can grow the REDO log with a Rolling restart (NoOfFragmentLogFiles). The REDO LOG is shared between the disk data tables and the in-memory tables.
- REDO BUFFER - specified as RedoBuffer=32M or higher in config.ini. The REDO BUFFER is shared between the disk data tables and the in-memory tables.
- UNDO BUFFER - created from SharedGlobalMemory resource and is set at LOGFILE GROUP creation. WARNING!! Can not be changed at runtime! The LOGFILE GROUP must be recreated, and it requires that the table space (and all its data files) is dropped before.
- TABLESPACE - can be extended at runtime. ALTER .. ADD..
- DiskPageBufferMemory - like the innodb_buffer_pool. The bigger the better. Can be tuned with a Rolling Restart.
- Failed writes to the Disk Data tables.
- In worst case you can hit crashing bugs.
- Failed writes to the Disk Data tables. In worst case you can hit crashing bugs.
- Node recovery may not be possible - the recovering node will crash.
Severalnines has assisted a number of client to perform a number of recovery when this has been the case.
- If there is a Cluster crash due to a too small UNDO LOG you will most likely have to restore from backup.
- [NDBD DEFAULT] SharedGlobalMemory=1024M
Disk operation records and other meta data is allocated from this buffer. The more records you have in the disk data tables the bigger this buffer must be. 1024M is a good start.
- [NDBD DEFAULT] DiskPageBufferMemory=4096M
As large as you can (remember that in-memory tables, and for disk data tables, indexed attributes resides in DataMemory so you need to have enough DataMemory.
The important when tuning the DiskPageBufferMemory is to get a good hit ratio. If you use ClusterControl you will see the hit ratio (picture coming soon).
4096M is a good start.
- UNDO_BUFFER_SIZE=32M or 64M (same size as you have for the RedoBuffer)
This is specified in the CREATE LOGFILE GROUP ...
- UNDO LOG space should be 0.5 x NoOfFragmentLogFileSize x 4 x FragmentLogFileSize (this may take it to the extreme but better safe than sorry).
- [NDBD DEFAULT] DiskIoThreadPool=8 (2 is default)
- UndoIndexBuffer/UndoDataBuffer - those parameters are deprecated but still in the manual (I have grepped the 7.2.4 source and find no trace of it. It was a long time those were used. When LCP was done different in Cluster. So no need to set these.
- Put the Redo log + LCP on separate disk spindles ( A)
- Put the Undo log on separate disk spindles (FileSystemPathUndoFiles) (B)
- Put the Data files (table space) on separate disk spindles (FileSystemPathDataFiles) (C)