当前位置:首页 > 数据库 > CentOS7.6 安装MySQL Galera集群

CentOS7.6 安装MySQL Galera集群

数据库5年前 (2018-12-23)

CentOS7.6 安装MySQL Galera集群

CentOS 7.6 (1810) 64位DVD镜像安装Galera Cluster 5.7 for MySQL ,Galera集群是一个同步的多主集群,支持XtraDB/InnoDB存储引擎,提供高可用性、高吞吐量和低延迟,由至少三个节点组成了一个集群,与普通的主从架构不同,它们都可以作为主节点,三个节点是对等的,称为multi-master架构,当客户端要写入或者读取数据时,连接哪个实例都是一样的,读到的数据是相同的,写入某一个节点之后,集群自己会将新数据同步到其它节点上面,这种架构不共享任何数据,是一种高冗余架构。


IP规划

galera1  192.168.1.110 

galera2  192.168.1.111 

galera3  192.168.1.112 


系统预配置

三个节点执行

yum -y update
setenforce 0 
sed 's/SELINUX=.*/SELINUX=disabled/g' -i /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

cat << EOF > /etc/hosts
192.168.1.110 galera1
192.168.1.111 galera2
192.168.1.112 galera3
EOF

yum -y groupinstall base "Development tools" --setopt=group_package_types=mandatory,default,optional
yum -y install socat policycoreutils-python boost-devel scons check-devel openssl-devel
yum -y install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm 
yum -y install percona-xtrabackup
yum remove MariaDB* mysql mysql-server mysql-libs mysql-devel -y
root

#如果需要开启firewalld防火墙
#firewall-cmd --add-port=4567/tcp --permanent
#firewall-cmd --add-port=4568/tcp --permanent
#firewall-cmd --add-port=4444/tcp --permanent
#firewall-cmd --add-port=3306/tcp --permanent
#firewall-cmd --reload
#如果需要开启selinux
#semanage port -a -t mysqld_port_t -p tcp 4567
#semanage port -a -t mysqld_port_t -p udp 4567
#semanage port -a -t mysqld_port_t -p tcp 4568
#semanage port -a -t mysqld_port_t -p tcp 4444
#semanage permissive -a mysqld_t


创建Galera Cluster安装源

三个节点执行

cat << EOF > /etc/yum.repos.d/galera.repo
[galera]
name = Galera
baseurl = http://releases.galeracluster.com/galera-3/centos/7/x86_64/
gpgkey = http://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1

[mysql-wsrep]
name = MySQL-wsrep
baseurl =  http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/
gpgkey = http://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1
EOF

安装Galera Cluster for mysql

yum install galera-3 mysql-wsrep-5.7 mysql-wsrep-client-5.7 mysql-wsrep-server-5.7

CentOS7.6 安装MySQL Galera集群

离线安装方式

官方源太慢了,将Galera集群rpm包下载后上传进服务器,离线方式安装

rpm下载地址

http://releases.galeracluster.com/galera-3/centos/7/x86_64/
http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/

CentOS7.6 安装MySQL Galera集群


安装

cd /root/galera-rpm/
yum -y install ./mysql*.rpm
yum -y install ./gale*.rpm

CentOS7.6 安装MySQL Galera集群


集群节点配置

节点1

查看并修改临时密码

systemctl start mysqld
systemctl enable mysqld
cat /var/log/mysqld.log | grep "temporary password"
mysql -uroot -p'临时密码'
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Vm0s.TEch';
grant all PRIVILEGES on *.* to galera@'%' identified by 'Vm0s.TEch+';   #创建新用户galera
FLUSH PRIVILEGES;
exit
/usr/bin/mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: 
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : 

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

修改配置文件

vi /etc/my.cnf
添加
!includedir /etc/my.cnf.d/

vi /etc/my.cnf.d/wsrep.cnf
添加
[mysqld]
server-id=1 #每个节点一个唯一的ID
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_provider_options='gmcast.listen_addr=tcp://192.168.1.110:4567' #本节点地址
wsrep_cluster_name="my_wsrep_cluster" #集群名称
wsrep_cluster_address=gcomm://192.168.1.110:4567,192.168.1.111:4567,192.168.1.112:4567 #节点中所有节点地址
wsrep_node_name=gelera1 #本节点名称
wsrep_node_address='192.168.1.110' #本节点地址
wsrep_node_incoming_address='192.168.1.110' #本节点地址
wsrep_slave_threads=1
wsrep_certify_nonPK=1
wsrep_max_ws_rows=131072
wsrep_max_ws_size=1073741824
wsrep_debug=0
wsrep_convert_LOCK_to_trx=0
wsrep_retry_autocommit=1
wsrep_auto_increment_control=1
wsrep_drupal_282555_workaround=0
wsrep_causal_reads=0
wsrep_notify_cmd=
wsrep_sst_method=rsync
wsrep_sst_auth=root:Vm0s.TEch  #数据库用户名密码
wsrep_sst_donor='gelera1,gelera2,gelera3,'  #所有节点名称


节点2

vi /etc/my.cnf
添加
!includedir /etc/my.cnf.d/

vi /etc/my.cnf.d/wsrep.cnf
添加
[mysqld]
server-id=2 #每个节点一个唯一的ID
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_provider_options='gmcast.listen_addr=tcp://192.168.1.111:4567' #本节点地址
wsrep_cluster_name="my_wsrep_cluster" #集群名称
wsrep_cluster_address=gcomm://192.168.1.110:4567,192.168.1.111:4567,192.168.1.112:4567 #节点中所有节点地址
wsrep_node_name=gelera2 #本节点名称
wsrep_node_address='192.168.1.111' #本节点地址
wsrep_node_incoming_address='192.168.1.111' #本节点地址
wsrep_slave_threads=1
wsrep_certify_nonPK=1
wsrep_max_ws_rows=131072
wsrep_max_ws_size=1073741824
wsrep_debug=0
wsrep_convert_LOCK_to_trx=0
wsrep_retry_autocommit=1
wsrep_auto_increment_control=1
wsrep_drupal_282555_workaround=0
wsrep_causal_reads=0
wsrep_notify_cmd=
wsrep_sst_method=rsync
wsrep_sst_auth=root:Vm0s.TEch  #数据库用户名密码
wsrep_sst_donor='gelera1,gelera2,gelera3,'  #所有节点名称


节点3

vi /etc/my.cnf
添加
!includedir /etc/my.cnf.d/

vi /etc/my.cnf.d/wsrep.cnf
添加
[mysqld]
server-id=3 #每个节点一个唯一的ID
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_provider_options='gmcast.listen_addr=tcp://192.168.1.112:4567' #本节点地址
wsrep_cluster_name="my_wsrep_cluster" #集群名称
wsrep_cluster_address=gcomm://192.168.1.110:4567,192.168.1.111:4567,192.168.1.112:4567 #节点中所有节点地址
wsrep_node_name=gelera3 #本节点名称
wsrep_node_address='192.168.1.112' #本节点地址
wsrep_node_incoming_address='192.168.1.112' #本节点地址
wsrep_slave_threads=1
wsrep_certify_nonPK=1
wsrep_max_ws_rows=131072
wsrep_max_ws_size=1073741824
wsrep_debug=0
wsrep_convert_LOCK_to_trx=0
wsrep_retry_autocommit=1
wsrep_auto_increment_control=1
wsrep_drupal_282555_workaround=0
wsrep_causal_reads=0
wsrep_notify_cmd=
wsrep_sst_method=rsync
wsrep_sst_auth=root:Vm0s.TEch  #数据库用户名密码
wsrep_sst_donor='gelera1,gelera2,gelera3,'  #所有节点名称


增加日志文件和对日志文件授权

touch /var/log/mysqld.log
chown mysql:mysql /var/log/mysqld.log


节点1上运行专用脚本mnysqld bootstrap初始化集群

/usr/bin/mysqld_bootstrap
systemctl enable mysqld
systemctl status mysqld


节点2和节点3启动mysqld服务

systemctl start mysqld


验证

查看集群节点数量

mysql -u root -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster_size';"


查看端口

lsof -i:4567
lsof -i:3306


集群测试

在一个节点上创建数据库
mysql -u root -e 'CREATE DATABASE clusterTest;'

其他节点查看此数据库
mysql -u root -e 'show databases;'


本站所有文章均可随意转载,转载时请保留原文链接及作者。

本文链接:https://www.vos.cn/db/251.html

相关文章

CentOS7安装cacti

CentOS7安装cacti

网上有一种叫cactiez的集成版本,rrd组件一直有问题,版本也太老,于是就想着重新搭建一个环境试试配置环境关闭Selinux vi /etc/selinux/config 将SELI...

Redhat 6.5网卡聚合绑定

Redhat 6.5网卡聚合绑定

linux下网卡bonding配置是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术,常用聚合模式为0,1,60(balance-rr)轮循(RR)...

CentOS 7转换为OEL 7

CentOS 7转换为OEL 7

参考官方提供的脚本,支持将CentOS 5, 6, 7转换为使用UEK(Unbreakable Enterprise Kernel)的Oracle Enterprise Linux转换系统curl&n...

解决/bin/bash^M: bad interpreter: No such file or directory

解决/bin/bash^M: bad interpreter: No such file or directory

运行windows下自编的脚本,提示因为windows下编写的脚本每行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识。dos格式的文件行尾为^M$,unix格式的文件行尾为$,可从显示结...

输入正确root密码弹出跳回登录界面

输入正确root密码弹出跳回登录界面

服务器安装的版本为64位的RHEL 6.5,运行完rac脚本后重启,发现本地root无法登陆,输入正确的用户名密码后,回弹到原登录界面,但是SSH可正常登录。运行安装Oracle RAC环境配置脚本过...

RHEL6.5安装Oracle Tuxedo

RHEL6.5安装Oracle Tuxedo

实验环境操作系统:RedHat Enterprise Linux 6.5虚拟机:VMware ESXi 6.5中间件:Oracle Tuxedo 11g R1 11.1.3.0环境配置系统分...