mysql 集群搭建(Centos7) for Galera

背景:

mysql 高可用集群主流的是MHA,缺点不够灵活,需要做单独做读写分离。Galera 目前是没有主从,所有节点都可读写,宕机 重启自动加入集群,容灾灵活。

第一步:环境介绍

centos7 + mysql-8.0+galera-4

第二步:准备工作

<1>.  执行命令:> vi /etc/selinux/config    修改 SELINUX=enforcing 为 permissive ,执行 reboot 重启电脑.

<2> 准备一个ssh 连接工具,方便操作,我这块提供一个连接:

Terminal.icu SSH/SFTP 工具

<3> 准备 yum 安装下载源,创建文件galera.repo,编辑好上传到/etc/yum.repos.d/ 目录下,全路径如下:

/etc/yum.repos.d/galera.repo

[galera]
name = Galera
baseurl = https://releases.galeracluster.com/galera-4.12/centos/7/x86_64
gpgkey = https://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1

[mysql-wsrep]
name = MySQL-wsrep
baseurl =  https://releases.galeracluster.com/mysql-wsrep-8.0.28-26.10/centos/7/x86_64
gpgkey = https://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1

第三步:开始安装

<1>   执行  >  yum install -y galera-4 mysql-wsrep-8.0,等待安装完成。

<2>  配置文件 配置文件  my.cnf,上传至 /etc/  下,如/etct/my.cnf.

[mysqld]
max_connections=1000
max_connect_errors=3
datadir=/data/module/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
binlog_format=ROW
bind-address=0.0.0.0
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=122M
character-set-server=utf8
collation-server=utf8_general_ci
character_set_server=utf8
collation_server=utf8_general_ci

#指定 wsrep provider 文件的位置,Galera使用这个 provider 来实现数据的 Replication,不同操作#系统下这个文件的位置可能不一样,请注意提前确认文件位置
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so

#缓存配置
wsrep_provider_options="gcache.size=300M; gcache.page_size=300M"

#集群节点名称
wsrep_cluster_name="mysql_cluster"

#集群节点
wsrep_sst_donor='node101,node102,node103'

#集群节点配置,环境配置好之后,用此配置
#wsrep_cluster_address="gcomm://192.168.3.101:4567,192.168.3.102:4567,192.168.3.103:4567"

#初始化启动时配置,启动集群时去掉此

wsrep_cluster_address=gcomm://

#具体节点名称
wsrep_node_name="node101"

#具体节点ip地址
wsrep_node_address="192.168.3.101"

#集群数据同步方式
wsrep_sst_method=rsync

[mysql_safe]
log-error=/data/module/mysql/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

<3> 创建数据存储目录,并授权

# 注意mysql datadir的文件夹权限,给mysql用户授权
> mkdir -p /data/module/mysql
> useradd mysql
> chown -R mysql.mysql /data/module/mysql
# 注意: 在启动第一个节点之前先检查一下mysql是否已启动,如果已启动,先关闭mysql服务,同# 时关闭自动启动。因为在节点一上必须通过> mysqld_bootstrap启动服务。
> systemctl stop mysqld
> systemctl disable mysqld

# 初始化完成 有对应的密码显示在控制台,直接拷贝保存,mysql登录时直接使用。
> mysqld --initialize –-console
> service mysqld start
> mysql -u root –p

# 授权 远程连接数据库
> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
# 刷新权限
>FLUSH PRIVILEGES;
 

第三步:重复《开始安装步骤》安装其他两个节点

  此文件(/etct/my.cnf )内容需要修改对应的参数如下

<1>   第一个节点改为
wsrep_node_name="node101"
wsrep_node_address="192.168.3.101"  wsrep_cluster_address="gcomm://192.168.3.101:4567,192.168.3.102:4567,192.168.3.103:4567"

<2>   第二个节点改为
wsrep_node_name="node102"
wsrep_node_address="192.168.3.102"  wsrep_cluster_address="gcomm://192.168.3.101:4567,192.168.3.102:4567,192.168.3.103:4567"

<3>   第三个节点改为
wsrep_node_name="node103"
wsrep_node_address="192.168.3.103" wsrep_cluster_address="gcomm://192.168.3.101:4567,192.168.3.102:4567,192.168.3.103:4567"

第四步:集群启动

<1> 第一个节点

> /usr/bin/mysqld_bootstrap

<2> 第二个节点 和 第三个相同

> systemctl start mysqld

<3> 查看状态

# 检查集群规模
SHOW STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------------------------------------+
| Variable_name          | Value |
+--------------------+-------------------------------------+
| wsrep_cluster_size    |    1    |
+--------------------+-------------------------------------+

你可能感兴趣的:(mysql,服务器,linux)