MySQL简单复制问题:“显示主状态”产生“空集”吗?


10

我一直按照以下说明忠实地设置MySQL主复制(在Debian 6.0.1上):http : //www.neocodesoftware.com/replication/

我到目前为止:

mysql > show master status;

不幸的是,这产生了以下内容,而不是任何有用的输出:

Empty set (0.00 sec)

错误日志位于/var/log/mysql.err一个空文件,因此没有任何提示。

有任何想法吗?

这就是我/etc/mysql/my.cnf在一台服务器上放置的内容(已针对另一台服务器进行了适当修改):

server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
master-host = 10.0.0.3
master-user = <myusername>
master-password = <mypass>
master-connect-retry = 60
replicate-do-db = fruit
log-bin = /var/log/mysql-replication.log
binlog-do-db = fruit

我已经设置了用户,可以使用上面的用户名/密码/ ipaddress从服务器A上的MySQL连接到服务器B上的数据库。


我还尝试按照以下更简单的说明进行操作:howtoforge.com/mysql_database_replication(仅在一台服务器上),然后再次show master status访问Empty set。莫名其妙!

重新启动服务并检查。如果重新启动后生成任何错误日志,则也将其粘贴。

Answers:


7

有趣的是,我的PC上运行的是mysql,未启用二进制日志。我做了以下事情:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.5.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show master status;
Empty set (0.00 sec)

mysql> show binary logs;
ERROR 1381 (HY000): You are not using binary logging

mysql>

如图所示,由于MySQL对SHOW MASTER STATUS显示“空集”;因为未启用二进制日志记录。考虑到我的配置,这很明显。

您应该做的第一件事是确保错误日志具有特定的文件夹

[mysqld]
log-error=/var/log/mysql/mysql.err
log-bin = /var/log/mysql/mysql-replication.log

然后运行以下命令:

service mysql stop
mkdir /var/log/mysql
chown -R mysql:mysql /var/log/mysql
service mysql start

然后在mysql客户端中运行这些SQL命令

SHOW MASTER STATUS;
SHOW BINARY LOGS;

如果获得与以前相同的输出,则MySQL无法将二进制日志写入指定的文件夹。您的难题变成了MySQL无法写入/ var / log的原因。

这不是一个完整的答案,但我希望这会有所帮助。


将/ var / log设置为递归拥有并与一组mysql一起使用将严重破坏linux系统。我强烈建议人们不要这样做。相反,应在mysql尝试写入的日志文件上专门运行该文件,如果没有,请先触摸它。
约翰·亨特2015年

你知道吗,@ JohnHunt?你是对的。我将更改文件夹。
RolandoMySQLDBA 2015年


0

您的设置log-bin不正确,因此MySQL无法编写二进制日志。它不是文件名,而是部分文件名模式, MySQL会在该文件名之前添加目录并附加序列号和扩展名。通常的设置是这样的

log-bin=log-bin

检查手册。


--log-bin=file_namedev.mysql.com/doc/refman/5.7/en/…)。什么手册指出它不是文件名?
斯蒂芬·维肯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.