文章目录
- 1. 编辑 MariaDB 配置文件
- 2. 在配置文件中添加或修改相关设置
- 3. 保存并重启 MariaDB 服务
- 4. 验证二进制日志是否已启用
- 总结原因
根据您的输出,
log_bin显示为OFF,这意味着二进制日志功能目前没有启用。您尝试使用SET GLOBAL log_bin='on';来启用它,但遇到了错误ERROR 1238 (HY000): Variable 'log_bin' is a read only variable。这完全符合预期,因为log_bin是一个只读变量,无法在 MariaDB 服务器运行时动态更改。要启用二进制日志,您必须修改服务器的配置文件(通常是my.cnf或my.ini),然后重启 MariaDB 服务。
以下是解决问题的步骤:
1. 编辑 MariaDB 配置文件
配置文件的位置可能因操作系统和安装方式而异。常见路径包括:
/etc/mysql/my.cnf/etc/mysql/mariadb.conf.d/50-server.cnf/etc/my.cnf
您可以使用sudo权限和文本编辑器(如nano或vi)打开它。
sudonano/etc/mysql/mariadb.conf.d/50-server.cnf2. 在配置文件中添加或修改相关设置
在[mysqld]部分,至少需要添加以下两行来启用二进制日志并设置其基础名称:
[mysqld] log-bin server-id = 1log-bin: 启用二进制日志。您也可以指定一个完整路径和文件名前缀(例如log-bin = /var/log/mysql/mariadb-bin),如果不指定,会使用默认路径和名称(通常基于主机名)。server-id: 对于启用二进制日志的服务器,这是一个必需参数。在单机或主从复制环境中,每个服务器必须有一个唯一的 ID。这里设置为1。
您可能还会考虑设置一些相关参数:
binlog_format = ROW # 推荐使用ROW格式,复制和数据一致性更好 expire_logs_days = 7 # 自动清理7天前的旧日志文件 max_binlog_size = 100M # 每个二进制日志文件的最大大小3. 保存并重启 MariaDB 服务
保存配置文件更改后,重启服务以使配置生效。
在 Ubuntu/Debian 系统上:
sudosystemctl restart mariadb或
sudosystemctl restart mysql在 RHEL/CentOS 系统上:
sudosystemctl restart mariadb4. 验证二进制日志是否已启用
重启服务后,重新连接到 MariaDB 并执行您最初的命令进行验证:
SHOWGLOBALVARIABLESLIKE'%log_bin%';现在,log_bin应该显示为ON,并且log_bin_basename和log_bin_index会显示具体的文件路径。
您也可以查看二进制日志文件列表来确认:
SHOWBINARYLOGS;总结原因
- 根本原因:
log_bin是只读的系统变量,必须在配置文件中设置。 - 解决方法:修改
my.cnf(或相关配置文件)并重启服务。 - 额外提示:确保配置文件所在的磁盘分区有足够的空间,因为二进制日志会持续增长。合理设置
expire_logs_days可以自动管理日志文件的生命周期。
如果您在修改配置文件或重启服务时遇到任何问题,请提供相关错误信息,以便进一步分析。