![cover](/upload/mysql.jpg)
MariaDB-Galera-Cluster 工具实现mariadb三主高可用
MariaDB-Galera-Cluster 工具实现mariadb三主高可用(systemctl启动)
架构图
安装mariadb
### 安装包x86
https://blossom.master-jsx.top/pic/home/bl/img/U1/galera-25.3.12-2.el7.x86_64.rpm
yum -y install galera mariadb-server-galera
配置 mariadb配置文件
[mysqld]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so #集群同步工具
wsrep_cluster_address="gcomm://1.1.1.1,2.2.2.2,3.3.3.3" #三个集群的IP地址
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name="MyCluster" #集群名称,三台需要一模一样
wsrep_node_address="1.1.1.1" # 本机的IP地址
wsrep_node_name="node1" #集群中的主机名称
wsrep_sst_method=rsync #同步方式
wsrep_sst_auth=root:mysqlpasswd #本地数据库的账号密码
systemctl restart mariadb
systemctl enable mariadb
启动其他节点
#这些节点会自动加入到通过 wsrep_cluster_address 配置的集群中
systemctl start mariadb
systemctl enable mariadb
验证集群状态
mysql -u root -p -e "SHOW VARIABLES LIKE 'wsrep_cluster_address';"
同步的端口
tcp 0 0 0.0.0.0:4567 0.0.0.0:* LISTEN 70806/mysqld
可能遇到的报错
160613 9:43:01 [ERROR] WSREP: gcs/src/gcs_core.cpp:gcs_core_open():208: Failed to open backend connection: -110 (Connection timed out)
160613 9:43:01 [ERROR] WSREP: gcs/src/gcs.cpp:gcs_open():1379: Failed to open channel ''galera_cluster’' at 'gcomm://10.16.24.107,10.16.24.108,10.16.24.109': -110 (Connection timed out)
160613 9:43:01 [ERROR] WSREP: gcs connect failed: Connection timed out
160613 9:43:01 [ERROR] WSREP: wsrep::connect(gcomm://10.16.24.107,10.16.24.108,10.16.24.109) failed: 7
问题原因:
该节点不是最后一个离开集群的节点(最后停掉的节点),可能没有包含所有更新的数据.
方法1:
强制从该节点启动,需要手工编辑grastate.dat(/var/lib/docker/volumes/mariadb/_data/grastate.dat)文件,设置
safe_to_bootstrap=1,可以尝试使用find(find / -name grastate.dat)命令查找该文件;
方法2:
不强制从该节点启动,我们逐一排查每个节点下的grastate.dat文件(该文件在data目录下),找到safe_to_bootstrap=1的节点,然后在该节点上启动即可。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 小帕鲁流浪记
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果