MySQL 添加 log-bin 后未启动 - 主复制

MySQL not starting up after added log-bin - Master Replication

我正在尝试设置主复制服务器。当我在 my.cnf、

中添加 log-bin 目录后尝试 start/restart 服务器时
log-bin = /var/log/mysql/mysql-bin.log 

服务器没有启动。

MySQL状态

mysqld.service - MySQL Server Loaded: loaded (/etc/systemd/system/mysqld.service; enabled) Active: inactive (dead) since Mon, 13 Jul 2015 17:46:47 +0800; 1s ago Process: 14145 ExecStart=/usr/bin/mysqld_safe --defaults-file=/etc/my.cnf --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock (code=exited, status=0/SUCCESS) CGroup: name=systemd:/system/mysqld.service

但是在我如下更改了 log-bin 之后(没有文件夹路径)

log-bin = mysql-bin.log

服务器 运行 成功。

MySQL状态

mysqld.service - MySQL Server Loaded: loaded (/etc/systemd/system/mysqld.service; enabled) Active: active (running) since Mon, 13 Jul 2015 17:47:43 +0800; 2s ago Main PID: 15272 (mysqld_safe) CGroup: name=systemd:/system/mysqld.service ├ 15272 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my.cnf --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysq... └ 15615 /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/...

更新

来自 mysqld.log :

/var/log/mysql/mysql-bin.index' not found (Errcode: 2)

但是我的 mysql-bin.index 默认为

/var/lib/mysql/mysql-bin.index

我刚开始学习主从复制,有人能帮帮我吗?我是否需要创建一个文件夹名称 mysql 并将权限更改为 mysql 并放入日志目录或如何确保它正确找到我的 mysql-bin.index 文件?

终于找到解决办法了。不知道我做的对不对。

搜索(Errcode: 2)后,发现提示文件或目录不存在。所以我创建了名为 mysql 的文件夹并添加到日志目录中(以根用户身份登录)。当我尝试重新启动服务器时,它给了我另一个错误:

/var/log/mysql/mysql-bin.index' not found (Errcode: 13)

Errcode: 13 表示权限被拒绝。所以我将所有权从 root 更改为 mysql :

chown -R mysql:mysql /var/log/mysql

我重新启动服务器,它运行成功。

如果与mysql的数据和日志相关的路径访问出错,它将调用默认的/var/lib/mysql和/var/log/mysql。要验证 mysql 日志文件路径,请执行以下操作。

  1. 创建新路径

  2. 创建具有 mysql 用户所有权的路径 示例 - 显示的 sudo -R mysql:mysql /mnt/mysql/logs

  3. 将路径传递给apparmor读取该目录。 文件位置 - /etc/apparmor.d/usr.sbin.mysqld

    内容

    # 允许日志文件访问

     /mnt/mysql/logs/ r,
    
     /mnt/mysql/logs/** rw,
    

注意: 如果 apparmor 没有正确的路径那么它会给出与简单的 chown 和 chmod 混淆的权限问题