我试图启用二进制日志logging,以便我可以设置两个服务器之间的主从复制。 我正在处理一个有大量数据的现有服务器,我试图使用以下命令来转储数据:
mysqldump -u root -p --all-databases --master-data > masterdump.sql
但我得到的错误: mysqldump: Error: Binlogging on server not active 。
我已经按照各种关于如何启用二进制日志logging的教程,但没有任何工作。 我已经确定我已经将以下参数添加到my.cnf中:
server-id = 1 log_bin = /var/log/mysql/mysql-bin.log sync_binlog = 1
当我重新启动MySQL时,需要一段时间(我认为这是由于数据库的大小),大约60秒,但最终开始。 但是,当我检查/var/log/mysql/error.log ,我发现以下错误(重复数百次):
InnoDB: Unable to lock ./ibdata1, error: 11 InnoDB: Check that you do not already have another mysqld process
所以我通过运行pstree寻找所有的mysqld pstree ,我发现了以下内容:
root@my_server:~# pstree init---some stuff |-- |--mysqld---10*[{mysqld}] |-- |--sudo---mysqld---23*[{mysqld}]
这是我卡住的地方。 我不知道是否正常运行mysqld和sudo mysqld 。 服务器正在由ServerPilot维护,我认为它为我安装了MySQL。
这些证据是否指向二进制日志不能启用的任何原因?
它看起来像多个mysqld进程造成的问题。 由于这个问题的一些提示,我能够杀死sudo mysqld下的进程树,并立即开始二进制日志logging。 在此之后,主从复制的其余部分工作非常快,这要归功于这个非常棒的教程 。