Mysql复制转储没有停机时间?空的sql文件

时间:2013-12-26 12:29:02

标签: mysql sql mysqldump database-replication

我尝试创建dump作为复制主数据并使用follow命令创建dump,但sql文件只包含参数,并且没有数据和结构。命令是:

mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A > bckp.sql.gz 

sql文件的内容是:

-- MySQL dump 10.13  Distrib 5.1.41, for debian-linux-gnu (x86_64)
--
-- Host: xxx.xxx.xxx.xxx    Database: XXX
-- ------------------------------------------------------
-- Server version       5.1.72-0ubuntu0.10.04.1-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 */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2013-12-26  8:56:27

为什么会出现此问题?

2 个答案:

答案 0 :(得分:0)

如果用户凭据mysqldump尝试仅使用USAGE权限,则会发生这种情况,这是一项特权,基本上允许您连接到服务器,如果您没有,则不执行任何其他操作获得了任何更细粒度的特权。

shell> mysql -e 'SHOW GRANTS;'

如果你没有将用户名和密码传递给mysqldump,那么上面的命令将告诉你你正在进行身份验证的用户,以及用户拥有的权限......或者,如果你将用户名和密码传递给mysqldump ,然后将它们添加到上面的命令并检查输出。当然,修复可能是将适当的用户名和密码作为参数传递给mysqldump,如果你还没有这样做的话。

默认安装包括具有访问“测试”数据库权限的匿名用户,如果您尚未删除该用户,则可能是该帐户;您可能希望删除该用户(如果有用户),您可以手动或使用mysql_secure_installation删除该用户。据推测,您必须已经删除了测试数据库,否则如果我的诊断准确无误,它将包含在转储文件中。

答案 1 :(得分:0)

我发现了问题。问题是--flush-log选项。我不知道为什么会导致这个问题,但删除选项后mysqldump可以正常工作。