mysqldump: функция "INFORMATION_SCHEMA.SESSION_VARIABLES" отключена
Когда я пытаюсь запустить mysqldump на Percona Server 5.7.17-12, я получаю эту ошибку:
# 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 пытается использовать эту устаревшую переменную? Есть ли способ исправить это кроме включения show_compatibility_56
(Я бы предпочел не делать этого, а также не перезагружать сервер)
1 ответ
This is a bug of Percona Server 5.7:
This was introduced as part of our work in porting Facebook MySQL MyRocks engine to Percona Server 5.7. The use of I_S over P_S was not caught during the merge of this feature from 5.6 to 5.7
Непосредственный обходной путь - изменить show_compatibility_56 обратно на значение по умолчанию ON, которое предоставит необходимые таблицы в I_S. См. https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html для получения подробной информации.
Альтернативно, двоичный файл mysqldump из предыдущей установки может использоваться вместо того, который упакован с последним выпуском.
Я ожидаю, что это будет исправлено в следующей версии Percona Server 5.7
https://bugs.launchpad.net/percona-server/+bug/1676401
ИСПРАВЛЕНО: Ошибка была исправлена с выпуском Percona Server 5.7.17-13.