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
离线安装方式
官方源太慢了,将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/
安装
cd /root/galera-rpm/ yum -y install ./mysql*.rpm yum -y install ./gale*.rpm
集群节点配置
节点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;'
本站所有文章均可随意转载,转载时请保留原文链接及作者。