现在,为了再次设置复制,我添加了binlog语句到服务器。 但是当我重新启动时遇到这个问题:
sudo mysqld
(唯一的方法来看到MySQL的启动错误)
我得到这个错误:
/usr/sbin/mysqld: File '/etc/mysql/var/log-bin.index' not found (Errcode: 13)
因为确实,这个文件不存在! (我删除它,而试图build立一个新的复制系统)嗯,如果我改变configuration行:
log-bin-index = log-bin.index
我得到一个不同的错误:
[ERROR] Can't generate a unique log-filename /etc/mysql/var/bin.(1-999) [ERROR] MSYQL_BIN_LOG::open failed to generate new file name. [ERROR] Aborting
我第一次在这个系统上设置复制,我不需要创build这个文件。 我做了同样的事情 – 添加引用到以前不存在的文件,并创build它。 跟继电器logging一样
我不知道为什么mysql坚持尝试读取旧的文件夹。
我应该重新安装整个包吗? 这似乎是矫枉过正。
我my.cnf:
[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp skip-external-locking bind-address = IP key_buffer = 16M max_allowed_packet = 16M thread_stack = 192K thread_cache_size = 8 myisam-recover = BACKUP table_cache = 64 sort_buffer =64K net_buffer_length =2K query_cache_limit = 1M query_cache_size = 16M slow_query_log_file = /etc/mysql/var/mysql-slow.log long_query_time = 1 log-queries-not-using-indexes expire_logs_days = 10 max_binlog_size = 100M server-id = 3 log-bin = /etc/mysql/var/bin.log log-slave-updates log-bin-index = /etc/mysql/var/log-bin.index log-error = /etc/mysql/var/error.log relay-log = /etc/mysql/var/relay.log relay-log-info-file = /etc/mysql/var/relay-log.info relay-log-index = /etc/mysql/var/relay-log.index auto_increment_increment = 10 auto_increment_offset = 3 master-host = HOST master-user = USER master-password=PWD replicate-do-db = DBNAME collation_server=utf8_unicode_ci character_set_server=utf8 skip-character-set-client-handshake [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] #no-auto-rehash [myisamchk] key_buffer_size = 16M sort_buffer_size = 8M [mysqlhotcopy] interactive-timeout !includedir /etc/mysql/conf.d/
更新:将binlog&中继日志语句中的所有/ etc / mysql / var / xxxpath更改为本地已经解决了问题。
我原以为这是造成它,但是当我添加/ etc / mysql / * rw,apparmor的configuration,并重新启动它,仍然无法读取完整的path。
首先,重新安装MySQL不是一个真正的解决scheme。 特别是如果你的意思是删除和安装软件包 – 这将不会触及你的数据目录中的文件,你的问题不会改变。
其次,你不应该碰到磁盘上的binlog文件 – 从文件系统中删除它们不是正确的方式来pipe理它们。 有在MySQL的命令将删除旧的日志。 MySQL也必须维护索引文件,因此磁盘上的文件与它保存的现有binlog的列表相匹配。 请参阅清除二进制日志
所以,你所处的混乱是因为你正在做假设和触摸文件,你不应该这样做。
这个错误:
/usr/sbin/mysqld: File '/etc/mysql/var/log-bin.index' not found (Errcode: 13)
并不意味着它不在那里; 错误13的意思是“权限被拒绝”这可能意味着mysql不能写入/etc/mysql/var/
现在你真正需要做的就是修改/etc/mysql/var/的权限: chown mysql:mysql /etc/mysql/var; chmod 0775 /etc/mysql/var chown mysql:mysql /etc/mysql/var; chmod 0775 /etc/mysql/var
如果没有.index文件,并且没有binlogs,mysql就会从头开始创build它需要的文件。 删除该目录中的任何文件。
/etc/mysql/var/似乎不是一个正确的path,你应该检查你的datadir设置。 它应该是/var/lib/mysql