1、MySQL版本
5.7.14-log
2、问题分析
mysqldump -uxxx -pxxx db_nale
一般来讲上述命令主要是用于MySQL的逻辑备份,用来备份某个数据的全部表,但是我在执行该命令的时候却发生报错。报错如下:
Couldn't execute 'SHOW VARIABLES LIKE 'gtid\_mode''
[root@bak tmp]# mysqldump -uroot -p123 --databases test mysqldump: [Warning] Using a password on the command line interface can be insecure. -- MySQL dump 10.13 Distrib 5.7.14, for Linux (x86_64) --
-- Host: localhost Database: test -- ------------------------------------------------------
-- Server version 5.7.14-log /*!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 */; mysqldump: Couldn't execute 'SHOW VARIABLES LIKE 'gtid\_mode'': Unknown error 1146 (1146)
经过万能的百度,大家都说需要添加【--set-gtid-purged=OFF】参数。该参数是由于GTID导致的,mysqldump会试图去查询这个系统变量,具体原因还未查清楚,但是我添加该参数后发现仍有报错,报错如下:
Couldn't execute 'SHOW VARIABLES LIKE 'ndbinfo\_version''
[root@bak tmp]# mysqldump -uroot -p123 --databases test --set-gtid-purged=OFF Warning: Using a password on the command line interface can be insecure. -- MySQL dump 10.13 Distrib 5.6.26, for Linux (x86_64) --
-- Host: localhost Database: test -- ------------------------------------------------------
-- Server version 5.7.14-log /*!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 */; mysqldump: Couldn't execute 'SHOW VARIABLES LIKE 'ndbinfo\_version'': Unknown error 1146 (1146)
emmm....问题仍然没有解决,说明问题不是GTID的问题。
最后在找到了一个解决方法,有好心人回复说,这是由于MySQL服务器升级的原因导致的,所以我们应该升级MySQL服务。
[root@bak tmp]# mysql_upgrade -u root -p123 --force mysql_upgrade: [Warning] Using a password on the command line interface can be insecure. Checking server version. Running queries to upgrade MySQL server. Checking system database. mysql.columns_priv OK mysql.db OK mysql.engine_cost OK ..... ..... zabbix.users OK zabbix.users_groups OK zabbix.usrgrp OK zabbix.valuemaps OK Upgrade process completed successfully. Checking if update is needed.
在升级完成MySQL服务之后重启MySQL,然后重新执行mysqldump命令。
[root@bak ~]# mysqldump -uroot -p123 --databases test >a.sql Warning: Using a password on the command line interface can be insecure.
问题解决~
具体参考如下:
https://stackoverflow.com/questions/33270703/error-1142-select-command-denied-on-session-variables-table-with-mysqldump