- 文件下载地址
- 环境准备
1.1准备三台服务器
服务器名称 | Ip | 描述 |
Node0 | xxx.xxx.xxx.xxx | |
Node1 | xxx.xxx.xxx.xxx | |
Node2 | xxx.xxx.xxx.xxx |
1.3 安装依赖包
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
yum -y install lsof net-tools perl socat openssl openssl-devel boost-devel make zlib zlib-devel gcc libaio -y
yum install libncurses* -y
yum -y install rsync jemalloc -y
1.4 同步时间
修改时区
timedatectl set-timezone Asia/Shanghai |
修改配置文件
vi /etc/chrony.conf |
增加
server 10.184.11.106 iburst |
注意:ip换成自己的时间服务器
重启服务
systemctl restart chronyd |
- 安装mysql
2.1 安装mysql rpm包
rpm -ivh compat-openssl10-1.0.2o-3.el8.x86_64.rpm
rpm -ivh mysql-wsrep-common-5.7-5.7.41-25.33.el7.x86_64.rpm
rpm -ivh mysql-wsrep-libs-5.7-5.7.41-25.33.el7.x86_64.rpm
rpm -ivh mysql-wsrep-client-5.7-5.7.41-25.33.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-wsrep-libs-compat-5.7-5.7.41-25.33.el7.x86_64.rpm
rpm -ivh mysql-wsrep-server-5.7-5.7.41-25.33.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-wsrep-5.7-5.7.41-25.33.el7.x86_64.rpm
rpm -ivh mysql-wsrep-devel-5.7-5.7.41-25.33.el7.x86_64.rpm
rpm -ivh galera-3-25.3.37-1.el7.x86_64.rpm --force --nodeps
2.2配置集群
注:node0的wsrep_cluster_address 在node1和node2启动之后修改成和node1一样的,并且重启。
systemctl restart mysqld
注:每个节点的wsrep_node_address、wsrep_node_name 不一样
2.2.1 node0
修改 /etc/my.cnf
max_connections=2000 wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so # wsrep提供者,我的是在这个目录下 wsrep_cluster_name='mysql_cluster' #集群的名字,必须是统一的 wsrep_cluster_address=gcomm:// #集群中的其他节点地址 wsrep_node_name = node0 #该节点的名称 wsrep_node_address='192.168.119.128' #该节点的地址 wsrep_sst_method=rsync # 集群使用rsync同步方式 wsrep_sst_auth=lgx:666666 # 集群同步的用户名密码 |
执行命令
/usr/bin/mysqld_bootstrap |
2.2.2 Node1
修改/etc/my.cnf
max_connections=2000 wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so # wsrep提供者,我的是在这个目录下 wsrep_cluster_name='mysql_cluster' #集群的名字,必须是统一的 wsrep_cluster_address=gcomm://192.168.119.128,192.168.119.129,192.168.119.130 #集群中的其他节点地址 wsrep_node_name = node1 #该节点的名称 wsrep_node_address='192.168.119.128' #该节点的地址 wsrep_sst_method=rsync # 集群使用rsync同步方式 wsrep_sst_auth=lgx:666666 # 集群同步的用户名密码 |
执行命令:
systemctl start mysqld |
2.2.3 Node2
修改/etc/my.cnf
max_connections=1000 wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so # wsrep提供者,我的是在这个目录下 wsrep_cluster_name='mysql_cluster' #集群的名字,必须是统一的 wsrep_cluster_address=gcomm://192.168.119.128,192.168.119.129,192.168.119.130 #集群中的其他节点地址 wsrep_node_name = node2 #该节点的名称 wsrep_node_address='192.168.119.128' #该节点的地址 wsrep_sst_method=rsync # 集群使用rsync同步方式 wsrep_sst_auth=lgx:666666 # 集群同步的用户名密码 |
执行命令:
systemctl start mysqld |
三 验证集群
3.1通过日志查看密码(node0)
grep -i 'temporary password' /var/log/mysqld.log |
3.2修改密码(node0)
登录mysql
mysql -uroot -p set password for root@localhost=password('A11_p@ssW0rd'); |
3.3修改root的访问权限(node0,node1,node2)
mysql -u root -p password mysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>flush privileges; |
3.4验证集群:
show status like 'wsrep_local_state_comment'; |
show status like 'wsrep_cluster_size'; |
3.5 创建数据库
在node0执行创建数据库命令:
create database test; |
在node1和node2上分别执行查询数据库的命令,可以看到数据库已经同步过来了。
show databases; |
四 haproxy高可用
4.1 在node0上安装haproxy
yum install haproxy -y |
4.2 修改/etc/haproxy/haproxy.cfg文件
frontend main bind 0.0.0.0:33060 #acl url_static path_beg -i /static /images /javascript /stylesheets #acl url_static path_end -i .jpg .gif .png .css .js mode tcp #use_backend static if url_static default_backend mysqls backend mysqls mode tcp balance roundrobin option tcp-check server node0 10.10.12.75:3306 check server node1 10.10.12.71:3306 check server node2 10.10.12.70:3306 check |
4.3重启haproxy
Systemctl restart haproxy