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

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

我一直严格遵循以下说明设置 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

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

答案1

有趣的是,我的电脑上运行着 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。

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

答案2

如果 Mysql 版本大于 5.0,您的复制设置 master-host、master-user、master-password 和 my.cnf 中的其他一些设置将被忽略。使用 CHANGE MASTER TO 进行初始复制设置。

比较http://dev.mysql.com/doc/refman/5.1/en/replication-howto-slaveinit.html

答案3

您的设置log-bin不正确,因此 MySQL 无法写入二进制日志。它不是文件名,而是部分文件名图案,MySQL 将在其中添加目录并附加序列号和扩展名。通常的设置类似于

log-bin=log-bin

查看手册。

答案4

bin_log如果您使用的是 Amazon RDS 或 Aurora,请记住在应用集群参数后重新启动写入器实例。

这需要手动完成。重新启动写入器实例也会导致读取副本重新启动。

重新启动之前您将获得Empty set

相关内容