mysqldump:“INFORMATION_SCHEMA.SESSION_VARIABLES”function被禁用

当我尝试在Percona服务器5.7.17-12上运行mysqldump时,出现这个错误:

# mysqldump -u backups -pxxxx -h 127.0.0.1 --single-transaction --quick dbname mysqldump: [Warning] Using a password on the command line interface can be insecure. -- MySQL dump 10.13 Distrib 5.7.17-12, for debian-linux-gnu (x86_64) -- -- Host: 127.0.0.1 Database: dbname -- ------------------------------------------------------ -- Server version 5.7.17-12 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; /*!50112 SELECT COUNT(*) INTO @is_rocksdb_supported FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='rocksdb_bulk_load' */; /*!50112 SET @save_old_rocksdb_bulk_load = IF (@is_rocksdb_supported, 'SET @old_rocksdb_bulk_load = @@rocksdb_bulk_load', 'SET @dummy_old_rocksdb_bulk_load = 0') */; /*!50112 PREPARE s FROM @save_old_rocksdb_bulk_load */; /*!50112 EXECUTE s */; /*!50112 SET @enable_bulk_load = IF (@is_rocksdb_supported, 'SET SESSION rocksdb_bulk_load = 1', 'SET @dummy_rocksdb_bulk_load = 0') */; /*!50112 PREPARE s FROM @enable_bulk_load */; /*!50112 EXECUTE s */; /*!50112 DEALLOCATE PREPARE s */; mysqldump: Couldn't execute 'SELECT COUNT(*) FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE 'rocksdb\_skip\_fill\_cache'': The 'INFORMATION_SCHEMA.SESSION_VARIABLES' feature is disabled; see the documentation for 'show_compatibility_56' (3167) 

为什么mysqldump试图使用这个被弃用的variables? 有什么办法来解决它旁边启用show_compatibility_56 (我宁愿不这样做,也不重新启动服务器)

这是Percona Server 5.7的一个bug:

这是我们将Facebook MySQL MyRocks引擎移植到Percona Server 5.7的一部分。 在从5.6到5.7的这个特性合并期间,没有捕获到使用I_S而不是P_S

一个直接的解决方法是将show_compatibility_56改回到缺省值ON,这将暴露I_S中所需的表。 有关详细信息,请参阅https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_show_compatibility_56

或者,可以使用先前版本安装的mysqldump二进制代替最近版本打包的二进制文件。

我希望在下一个版本的Percona Server 5.7中解决这个问题

https://bugs.launchpad.net/percona-server/+bug/1676401


修复 :这个错误已经被Percona Server 5.7.17-13的版本修复了。