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

CentOS7.6 安装MySQL Galera集群

数据库3年前 (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

相关文章

CentOS6 安装Oracle11gR2

CentOS6 安装Oracle11gR2

使用oracle-rdbms-server-11gR2-preinstall工具,自动安装oracle所需的RPM包,自动创建oracle用户和dba、oinstall组,自动配置/etc/sysct...

RHEL7.4 安装MySQL5.7单机版

RHEL7.4 安装MySQL5.7单机版

AAA服务器指定使用MySQL版本为5.7.15,软件包为mysql-5.7.15-linux-glibc2.5-x86_64.tar.gzMySQL5.7安装删除冲突软件包rpm -aq&...

解决ORA-01102: cannot mount database in EXCLUSIVE mode

解决ORA-01102: cannot mount database in EXCLUSIVE mode

startupdbca新建一个名为CDRTEST的库,startup后报ORA-01102: cannot mount database in EXCLUSIVE mode错误shutdown&nbs...

您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”选择

您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”选择

MS SQL2008 R2提示您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”选择打开SQL Server Management Studio,工具-选项-Designers里...

解决ORA-00059超出DB_FILES的最大值

解决ORA-00059超出DB_FILES的最大值

单机数据库,扩表空间添加数据文件时提示ORA-00059错误maximum number of DB_FILES exceeded,提示数据文件超过最大值,因为DB_FILES定义了数据中数据文件的个...

Zabbix4.2安装DBforbix3监控Oracle11gR2

Zabbix4.2安装DBforbix3监控Oracle11gR2

一定不要下载从官方github下载DBforbix3,官方版本问题很多,并且不支持Zabbix4.x只支持3.xZabbix Share网站中推荐了几款oracle监控模板,个人感觉DBforBIX版...