我按照说明在 Centos 7.6 上安装 MariaDB Galera 集群 但是,我就是无法启动集群。 我可以在两个节点上启动 MariaDB 服务。 这是我的server.cnf
[galera]
# Mandatory settings
wsrep_cluster_name="galera_cluster"
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://172.18.35.XXX,172.18.35.XXX
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
我很困惑,Maria DB 日志中没有任何内容。我还应该看什么?
没关系,我能够通过这一步,但集群不会启动。 我运行时没有收到任何错误
root@db-mmr101:/var/lib/mysql$ /usr/bin/mysqld_safe --wsrep-new-cluster
190709 15:01:24 mysqld_safe Logging to '/var/lib/mysql/db-mmr101.err'.
190709 15:01:25 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
或者启动MariaDB服务。错误日志中也没有任何内容吗?
90709 15:01:30 mysqld_safe mysqld from pid file /var/lib/mysql/db-mmr101.pid ended
190709 15:01:38 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
190709 15:01:38 [Note] /usr/libexec/mysqld (mysqld 5.5.60-MariaDB) starting as process 19920 ...
190709 15:01:38 InnoDB: The InnoDB memory heap is disabled
190709 15:01:38 InnoDB: Mutexes and rw_locks use GCC atomic builtins
190709 15:01:38 InnoDB: Compressed tables use zlib 1.2.7
190709 15:01:38 InnoDB: Using Linux native AIO
190709 15:01:38 InnoDB: Initializing buffer pool, size = 128.0M
190709 15:01:38 InnoDB: Completed initialization of buffer pool
190709 15:01:38 InnoDB: highest supported file format is Barracuda.
190709 15:01:38 InnoDB: Waiting for the background threads to start
190709 15:01:39 Percona XtraDB (http://www.percona.com) 5.5.59-MariaDB-38.11 started; log sequence number 1597945
190709 15:01:39 [Note] Plugin 'FEEDBACK' is disabled.
190709 15:01:39 [Note] Server socket created on IP: '0.0.0.0'.
190709 15:01:39 [Note] Event Scheduler: Loaded 0 events
190709 15:01:39 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.60-MariaDB' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server
在使用 SystemD 作为初始化系统的较新计算机上,可能需要执行其他步骤才能再次启动第一个集群节点。
首先确保该节点(将成为新的主节点)允许引导集群(这部分与 SystemD 无关):
# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid: 6a1f102a-13a3-11e7-b710-b2876418a643
seqno: -1
safe_to_bootstrap: 0
将 safe_to_bootstrap 的值替换为 1:
# sed -i "/safe_to_bootstrap/s/0/1/" /var/lib/mysql/grastate.dat
然后运行命令
# galera_new_cluster
你必须告诉第一个节点是集群中的第一个参与者,对于 MariaDB,命令是:
galera_new_cluster
https://galeracluster.com/library/training/tutorials/starting-cluster.html
您可能需要使用脚本的完整路径
我意识到 yum install 并未在 Centos7.6 上安装 MariaDB 10+,因为存储库中没有相应的构建。必须使用 rpm 下载/构建 MariaDB 10.4。 yum 将安装 Centos 7.6 附带的默认 MariaDB 5.5。 5.5 是一个非常旧的版本,它没有 galera_new_cluster 命令。 这是使用 rpm-qa 在 RHEL 7+ 上安装 MariaDB 的好指南 https://medium.com/@thomashysselinckx/installing-mariadb-with-rpm-on-centos7-bce648cce758 我花了很多时间试图让它与 yum 一起工作,最终放弃并走上了 rpm 路线。
如果您有监控日志的脚本,这些条目可以为您提供有关复制过程中发生的冲突的信息。
wsrep_log_conflicts: 此参数启用错误日志的冲突日志记录。一个例子是当两个节点尝试同时写入同一个表的同一行时。
cert.log_conflicts: 此 wsrep 提供程序选项允许在复制期间记录有关认证失败的信息。
wsrep_debug: 此参数启用数据库服务器日志的调试信息。
您可以通过 my.cnf 配置文件启用这些功能。下面的摘录是这些选项及其启用方式的示例:
wsrep_log_conflicts=开
wsrep_provider_options =“cert.log_conflicts = ON”
wsrep_debug=开
每当节点在副本节点上应用事件失败时,数据库服务器就会在数据目录中创建该事件的特殊二进制日志文件。节点使用的文件名命名约定是 GRA_*.log。