当我试图检查二进制日志时:
SHOW BINARY LOGS;
我收到此错误:
错误 1381 (HY000):您没有使用二进制日志记录。
如何解决这个问题?有人可以帮忙吗?
在 MySQL 配置文件中设置log-bin
变量,然后重新启动 MySQL。
一个示例my.cnf
(在 Linux/unix 上)或my.ini
(在 Windows 上)如下所示:
[client]
...
[mysqld]
...
log-bin=mysql-bin
---
一旦重新启动,MySQL 会自动创建一个新的二进制日志(每次重新启动时都会这样做)。您可能还希望查看以下变量:
server-id = 1
expire_logs_days = 4
sync_binlog = 1
线
log-bin=mysql-bin
必须放在以下行之上:
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
您需要在启动时激活二进制日志记录
在 [mysqld] 部分下的 /etc/my.cnf 中添加以下行
[mysqld]
log-bin=mysql-bin
expire-logs-days=7
然后,运行这个
service mysql restart
下次登录 mysql 时,您将看到一个二进制日志列表,并将在 7 天后轮换。
二进制日志的默认位置将是/var/lib/mysql
或定义 datadir 的位置。如果您在 binlog 名称之前指定一个文件夹,则该文件夹就是位置。
例如
[mysqld]
log-bin=/var/log/mysql-bin
expire-logs-days=7
请按如下方式重启mysql并告诉我们二进制登录是否开启
service mysql restart --log-bin=mysql-bin
要启用二进制日志,请使用 --log-bin[=base_name] 选项启动服务器。
如果未给出 base_name 值,则默认名称是 pid-file 选项的值(默认为主机名称),后跟 -bin。
如果给出了基本名称,则服务器将文件写入数据目录,除非基本名称带有前导绝对路径名以指定不同的目录。建议您指定一个基本名称。
或者你可以直接使用:
log-bin=mysql-bin
然后重启你的mysql服务。然后将生成二进制文件。如果你在 Linux 机器上使用 Lampp,那么你会在 /lampp/var/mysql/mysql-bin.000001 中找到这个文件
FWIW,在我尝试设置my.cnf.master和my.cnf.slave文件并将它们分别符号链接到my.cnf的主服务器和从服务器后,我遇到了同样的问题。这个想法是能够轻松地将机器从主机切换到从机,然后再切换回来。
事实证明,mysqld 根本没有按预期处理符号链接。硬链接文件有效(ln my.cnf.master my.cnf)。如果您这样做,请小心,因为覆盖其中一个硬链接文件名可能会破坏链接并创建两个单独的文件(取决于您使用的软件所采用的重写方法)。
我发现即使 my.cnf 配置正确,日志记录也不会发生,因此您也可以尝试重新创建日志文件夹。
如果日志处于奇数状态,这可能是必要的。(就我而言,我只是停止登录 my.cnf 然后重新启用它,但什么也没发生,可能是因为现有文件不是最新更新?)。
像这样的东西应该工作:
sudo service mysql stop
sudo mv /var/log/mysql /tmp/mysqlold # or rm -fr if you're brave
mkdir /var/log/mysql
chown -R mysql:mysql /var/log/mysql
sudo service mysql start
强制性警告:显然,删除数据库服务器上的任何内容时要小心。这将破坏/破坏/破坏使用此数据库作为主数据库的任何复制(尽管您可以恢复复制作为从属)。也就是说,我相信这应该是安全的,因为它不会删除数据库本身。
在运行 Debian 的 MySQL 5.5 master 上,我对这个问题失去了理智。以上都没有奏效。最后,我重新启动了服务器并启用了日志记录。
删除部分 [mysqld_safe] 并替换为 [mysqld]。这个对我有用。