当我尝试检查二进制日志时:
SHOW BINARY LOGS;
我收到此错误:
ERROR 1381(HY000):您没有使用二进制日志记录。
如何解决这个问题?有人可以帮忙吗?
答案 0 :(得分:13)
在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
阅读MySQL documentation的详细信息。如果您正在进行复制设置(使用二进制日志的主要原因),请查看Replication configuration checklist。
答案 1 :(得分:5)
行
log-bin=mysql-bin
必须放在以下行上:
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
答案 2 :(得分:3)
您需要在启动时激活二进制日志记录
在[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
答案 3 :(得分:0)
要启用二进制日志,请使用--log-bin [= base_name]选项启动服务器。
如果没有给出base_name值,则默认名称是pid-file选项的值(默认情况下是主机的名称),后跟-bin。
如果给出了基本名称,则服务器会将该文件写入数据目录,除非基本名称带有前导绝对路径名以指定其他目录。建议您指定基名。
或者您可以直接使用:
log-bin=mysql-bin
然后重启你的mysql服务。然后将生成二进制文件。如果您在Linux机器上使用lampp,那么您将在/lampp/var/mysql/mysql-bin.000001
中找到此文件答案 4 :(得分:0)
FWIW,在我尝试设置 my.cnf.master 和 my.cnf.slave 文件以及符号链接他们分别为主人和奴隶 my.cnf 。我们的想法是能够将机器从主机切换到从机并轻松返回。
事实证明,mysqld根本没有按预期处理符号链接。 硬链接文件有效( ln my.cnf.master my.cnf )。如果你做这样的事情,请小心,因为覆盖其中一个硬链接文件名可能会破坏链接并创建两个单独的文件(取决于您使用的软件所使用的重写方法)。
答案 5 :(得分:0)
我发现即使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
强制警告:显然,删除数据库服务器上的任何内容时要小心。这将破坏/破坏/破坏使用此数据库作为主服务器的任何复制(尽管您可以作为从服务器恢复复制)。也就是说,我认为这应该是安全的,因为它不会删除数据库本身。
答案 6 :(得分:0)
我在运行Debian的MySQL 5.5 master上无意中遇到了这个问题。以上都不起作用。最后,我重新启动了服务器并启用了日志记录。
答案 7 :(得分:-1)
删除[mysqld_safe]部分并替换为[mysqld]。 它对我有用。