问个问题mariadb galera 集群能否开启binlog 日志,开启后对于集群性能有么有影响
在 Galera 集群中,如果启用了二进制日志,则每个节点都会生成自己的二进制日志文件。这些日志文件可能包含在集群冲突解决期间所做的更改。在这种情况下,由于 Galera 采用的是多主架构,因此可能会在日志文件之间存在冲突。Galera 会自动解决冲突,但在某些情况下,这可能会对性能产生一定的影响,并导致一些更改在节点之间无法同步。
因此,在 MariaDB Galera 集群中开启二进制日志可能会对性能产生一定的影响,具体的影响视各种因素而定。在进行实际部署之前,需要根据实际需求进行测试并评估集群的性能。
# 生成新的log文件(文件名递增)
[root@localhost /]# mysqladmin --socket=/mariadb/sock/mysql.sock -uroot flush-logs
# 查看binlog过期时间
mysql> show variables like 'expire_logs_days';
# 设置binlog过期时间
mysql> set global expire_logs_days=7;
# 清除指定日期之前的binlog日志
mysql> purge binary logs before '2020-04-15 00:00:00';
可以开启binlog日志,但是需要注意以下几点:
需要在每个节点上都开启binlog日志,且配置必须一致,否则可能会导致数据不一致的问题。
在Galera集群中,binlog日志只能记录DDL语句,无法记录DML语句,因为DML语句在Galera集群中会通过replication来实现数据同步。
开启binlog日志会对集群性能造成一定的影响,因为每次写入数据时都需要记录binlog日志,会增加一定的IO负载和CPU负载。
以下是示例代码:
在每个节点的my.cnf文件中添加以下配置:
log-bin = mysql-bin
binlog-format = ROW
然后重启集群中的每个节点。可以使用以下命令检查binlog日志是否已经开启:
SHOW GLOBAL VARIABLES LIKE 'log_bin';
如果输出结果中的Value为ON,则说明binlog日志已经成功开启。