Percona is glad to announce the release of Percona Server 5.6.26-74.0 on September 15, 2015. Download the latest version from the Percona web site or from the Percona Software Repositories.
Based on MySQL 5.6.26, including all the bug fixes in it, Percona Server 5.6.26-74.0 is the current GA release in the Percona Server 5.6 series. Percona Server is open-source and free – and this is the latest release of our enhanced, drop-in replacement for MySQL. Complete details of this release can be found in the 5.6.26-74.0 milestone on Launchpad.
New Features:
- TokuDB storage engine source has been merged into the Percona Server code. TokuDB storage engine
tokudb_version
variable now has the same value as the Percona Serverversion
variable. - TokuDB Hot Backup has been renamed to Percona TokuBackup and it is now open source. Source code has been integrated into Percona Server code as a git submodule. TokuDB Hot Backup plugin source code has been merged into Percona Server code.
- Tokutek Fractal Tree has been renamed to Percona FT and its source code has been integrated into Percona Server code as a git submodule.
- TokuDB tests for Percona Server 5.6 have been merged into Percona Server 5.6 code.
- Google SNAPPY compression/decompression algorithm is now available as TokuDB Compression table format.
- Percona Server now supports changing the
server_id
variable per session, by implementing the newpseudo_server_id
variable. This feature is also fixing upstream bug #35125. - Percona Server has temporarily disabled savepoints in triggers and stored functions. The reason is that even having fixed bug #1438990 and bug #1464468 we have found more cases where savepoints in triggers break binary logging and replication, resulting in server crashes and broken slaves. This feature will be disabled until the above issues are properly resolved.
LOCK TABLES FOR BACKUP
now flushes the current binary log coordinates to InnoDB. Thus, under activeLOCK TABLES FOR BACKUP
, the binary log coordinates in InnoDB are consistent with its redo log and any non-transactional updates (as the latter are blocked byLOCK TABLES FOR BACKUP
). It is planned that this change will enable Percona XtraBackup to avoid issuing the more invasiveLOCK BINLOG FOR BACKUP
command under some circumstances.innodb_stress
has been added to the list of default MTR suites. For most supported systems satisfying the newly added dependencies is straightforward, but on CentOS 5, the default Python is too old. Thuspython26
andpython26-mysqldb
packages should be installed there andpython26
should be made the default python for the testsuite environment.- Three new TokuDB variables,
tokudb_client_pool_threads
,tokudb_cachetable_pool_threads
, andtokudb_checkpoint_pool_threads
, have been implemented to improve the controlling of thread pool size. - Percona Server has implemented new
tokudb_enable_partial_eviction
option in TokuDB to allow disabling of partial eviction of nodes. - Percona Server has implemented new
tokudb_compress_buffers_before_eviction
option in TokuDB which allows the evictor to compress unused internal node partitions in order to reduce memory requirements as a first step of partial eviction before fully evicting the partition and eventually the entire node.
Bugs Fixed:
- Querying
GLOBAL_TEMPORARY_TABLES
table would crash threads working with internal temporary tables used byALTER TABLE
. Bug fixed #1113388. - Selecting from
GLOBAL_TEMPORARY_TABLES
table while running an onlineALTER TABLE
on a partitioned table in parallel could lead to a server crash. Bug fixed #1193264. - Kill Idle Transactions feature could cause an assertion on a debug build due to a race condition. Bug fixed #1206008.
libmylsqclient_16
symbols were missing in Percona Server shared library package on RHEL/CentOS 7. Bug fixed #1420691.- Prepared statements in stored procedures could crash Response Time Distribution plugin. Bug fixed #1426345.
- When variable
innodb_corrupt_table_action
is set toWarn/Salvage
then server could crash on updating table statistics during query execution on affected tables. Bug fixed #1426610. - A sequence of failing
TRUNCATE TABLE
, then insert to that table, andCHECK TABLE
would crash the server. Bug fixed #1433197. - When InnoDB change buffering was enabled and used, executing a
FLUSH TABLE ... FOR EXPORT
would cause a server hang andSHOW PROCESSLIST
would show that table in aSystem Lock
state. Bug fixed #1454441 (upstream #77011). FLUSH INDEX_STATISTICS
/FLUSH CHANGED_PAGE_BITMAPS
andFLUSH USER_STATISTICS
/RESET CHANGE_PAGE_BITMAPS
pairs of commands were inadvertently joined, i.e. issuing either command had the effect of both. The first pair, besides flushing both index statistics and changed page bitmaps, had the effect ofFLUSH INDEX_STATISTICS
requiringSUPER
instead ofRELOAD
privilege. The second pair resulted inFLUSH USER_STATISTICS
destroying changed page bitmaps. Bug fixed #1472251.- Enabling
super_read_only
together withread_only
inmy.cnf
would result in server crashing on startup. The workaround is to enablesuper_read_only
dynamically on a running server.Bug fixed #1389935 ( the fix was ported from Facebook patch #14d5d9). - Enabling
super_read_only
as a command line option would not enableread_only
. Bug fixed #1389935 ( the fix was ported from Facebook patch #14d5d9). - If a new connection thread was created while a
SHOW PROCESSLIST
command or aINFORMATION_SCHEMA.PROCESSLIST
query was in progress, it could have a negativeTIME_MS
value returned in thePROCESSLIST
output. Bug fixed #1379582. - With support for Fake Changes enabled, a write to an InnoDB table that would cause B-tree reorganization could lead to server assertion with the
unknown error code 1000
. Bug fixed #1410410. - Running
ALTER TABLE ... DISCARD TABLESPACE
with support for Fake Changes enabled would lead to a server assertion. Bug fixed #1372219. ALTER TABLE
did not allow to change a column toNOT NULL
if the column was referenced in a foreign key. Bug fixed #1470677 (upstream #77591).DROP TABLE IF EXISTS
which fails due to a foreign key presence could break replication if slave had replication filters. Bug fixed #1475107 (upstream #77684).- Enabling Log Archiving for XtraDB when
--innodb-read-only
option was enabled would cause server to crash. Bug fixed #1484432. - LRU manager thread flushing was being accounted to
buffer_flush_background
InnoDB metrics which was wrong and redundant. Bug fixed #1491420. - Fixed a typo in the cleaner thread loop where
n_flushed
is added to, instead of reset, by the idle server flushing. This may cause a cleaner thread sleep skip on a non-idle server. Bug fixed #1491435. - Running TokuDB for a long time with lots of file open and close operations could lead to a server crash due to server incorrectly setting a reserved value. Bug fixed #690.
- Fixed TokuDB memory leak due to data race in context status initialization. Bug fixed #697.
- Removed unnecessary calls to
malloc_usable_size()
function in PerconaFT library to improve the performance. Bug fixed #682.
Other bugs fixed: #1370002, #1464468, #1287299, #1472256, #867, #870, #878, #658, #661, #663, #665, #687, #696, #698, #870, #685, and #878.
Release notes for Percona Server 5.6.26-74.0 are available in the online documentation. Please report any bugs on the launchpad bug tracker .
When building 5.6.26-74.0 from source, I get the following compilation error:
[ 71%] Building CXX object plugin/password_validation/CMakeFiles/validate_password.dir/validate_password.cc.o
/usr/local/src/percona-server-PACKAGE/compile/percona-server-5.6.26-74.0/plugin/password_validation/validate_password.cc: In function ‘void read_dictionary_file()’:
/usr/local/src/percona-server-PACKAGE/compile/percona-server-5.6.26-74.0/plugin/password_validation/validate_password.cc:183:10: error: exception handling disabled, use -fexceptions to enable
catch (…) // no exceptions !
^
make[2]: *** [plugin/password_validation/CMakeFiles/validate_password.dir/validate_password.cc.o] Error 1
make[1]: *** [plugin/password_validation/CMakeFiles/validate_password.dir/all] Error 2
make: *** [all] Error 2
slackbuilder.sh: Make command ‘make’ failed in directory /usr/local/src/percona-server-PACKAGE/compile/percona-server-5.6.26-74.0
It appears that a try/catch block has been added to validate_password.cc between 5.6.25 and 5.6.26.
The default setting for my CMAKE_CXX_FLAGS included -fno-exceptions. When I removed -fno-exceptions, I was able to get past this compilation error.
The next compilation error occurs in manager.cc, because Valgrind cannot be found (I don’t have it installed on my system). The error is:
[ 71%] Building CXX object plugin/tokudb-backup-plugin/Percona-TokuBackup/backup/CMakeFiles/HotBackup.dir/manager.cc.o
/usr/local/src/percona-server-PACKAGE/compile/percona-server-5.6.26-74.0/plugin/tokudb-backup-plugin/Percona-TokuBackup/backup/manager.cc:57:31: fatal error: valgrind/helgrind.h: No such file or directory
#include
^
compilation terminated.
make[2]: *** [plugin/tokudb-backup-plugin/Percona-TokuBackup/backup/CMakeFiles/HotBackup.dir/manager.cc.o] Error 1
make[1]: *** [plugin/tokudb-backup-plugin/Percona-TokuBackup/backup/CMakeFiles/HotBackup.dir/all] Error 2
make: *** [all] Error 2
slackbuilder.sh: Make command ‘make’ failed in directory /usr/local/src/percona-server-PACKAGE/compile/percona-server-5.6.26-74.0
It appears that I have no choice to build without Valgrind, since the inclusion of is not wrapped in any conditional logic.
I am very happy that TokuDB has been added to Percona Server with this 5.6.26 release, but the source code quality is not up to Percona’s usual high standards.
The second issue is being tracked at at https://bugs.launchpad.net/percona-server/+bug/1494283 (and I see that Ken has already found it).
It was a major project to merge the source trees and we are still resolving some (hopefully minor) issues.
Regarding the first issue – yes, you’ll have to build with -fexceptions or just use defaults (I suppose you had -fno-exceptions added somewhere).
I have tried to build on ubuntu trusty with some defaults like “cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=RelWithDebInfo” and didn’t have that issue.
To Tomislav: Yes, I was building with -fno-exceptions, and once I removed that from my CMAKE_CXX_FLAGS, the compilation continued. I am puzzled as to why the authors felt the need to use a try/catch block in only one single place throughout all of the code. My understanding is that using exceptions increases code size by about 7%. If the code does not require them, it would be best to compile with -fno-exceptions. Is there a way to remove this one occurrence of try/catch?
To Laurynas: I noticed that the Valgrind issue was being tracked, and added my own comment to it. I can imagine how difficult it was to merge the two code bases, so I will temper my “code quality” comment above with the reality that this was a complicated process. Can you propose a workaround in order to get Percona Server to build? Am I forced to download and install a Valgrind package?
Thank you for your advice and assistance.
Ken –
If you don’t need the TokuDB backup plugin, just nuke plugin/tokudb-backup-plugin from your source tree before build.
Re. exceptions. I recall 5.6 source tree introducing and then removing try/catch blocks later. And this try block surrounds iostream handling, which is not really an exception-enabled part of C++ library anyway. So I’d suggest to log a report on bugs.mysql.com re. this, and maybe this will be get removed too.
Same workaround as with TokuDB backup plugin is available: if you don’t need the plugin, remove it from your source tree and -fno-exceptions should work again.
Hi Laurynas,
ty for your answer. Do you have any reference regarding removing try/catch from C++ source in mysql?
I’d like to open a bug-report, as this currently blocks building new debian/ubuntu packages.
Cheerr
B
Bjoern –
Sorry, I am unable to find them at the moment. If you file a bug, please post a link here. Thanks!