一、安装Mariadb数据库前的准备工作
1、安装CentOS7,三台虚拟机(IP分别为172.16.10.101,172.16.10.102,172.16.10.103)
2、添加Mariadb官方YUM源,下面以Mariadb 10.1为例
使用以下命令快速添加YUM源
# tee /etc/yum.repos.d/mariadb.repo <<-'EOF' [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 EOF
3、由于Mariadb服务器是在国外,速度较慢,可以使用国内镜像源替代,以USTC镜像源为例
# sed -i 's#yum\.mariadb\.org#mirrors.ustc.edu.cn/mariadb/yum#' /etc/yum.repos.d/mariadb.repo
4、刷新YUM缓存
# yum makecache
5、查看Mariadb相关的安装包,注意软件包版本和对应的YUM源名字
# yum list MariaDB* galera
6、关闭firewalld防火墙
# systemctl disable firewalld --now
7、设置主机名(设置三台虚拟机主机名分别为db1,db2,db3)
# hostnamectl set-hostname db1 # hostnamectl set-hostname db2 # hostnamectl set-hostname db3
8、编辑/etc/hosts文件
# vim /etc/hosts 172.16.10.101 db1 172.16.10.102 db2 172.16.10.103 db3
9、关闭SELINUX
# setenforce 0 # sed -i 's,^SELINUX=enforcing,SELINUX=disabled,g' /etc/selinux/config
二、部署MariaDB Galera集群
1、安装相关软件包
# yum install MariaDB-server MariaDB-client MariaDB-client
2、由于要启用xtrabackup-v2功能,需要额外安装percona提供的软件包
# yum install https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.10/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm
3、在db1上启动MariaDB数据库,设置galera集群同步账号,进行安全初始化
# systemctl start mariadb.service # mysql -uroot -e "grant all privileges on *.* to 'sst'@'localhost' identified by 'password';"
# mysql_secure_installation
# systemctl stop mariadb.service
4、在三个节点上编辑MariaDB配置文件,以开启galera集群功能
#vim /etc/my.cnf.d/galera.cnf
[server] [mysqld] # 监听哪个地址,这里每个节点填对应的ip地址 bind-address=172.16.10.101 # 监听哪个端口 port = 3306 # 设置默认字符编码集 collation-server = utf8_general_ci init-connect = SET NAMES utf8 character-set-server = utf8 # 设置日志路径 log-error = /var/log/mariadb/mariadb.log # 设置binlog log-bin = mysql-bin binlog_format=ROW # 设置默认数据目录 datadir = /var/lib/mysql/ # 设置默认存储引擎 default-storage-engine=innodb innodb_autoinc_lock_mode=2 [galera] wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.so # galera集群名字 wsrep_cluster_name="galera_cluster" # 本节点的主机名,这里每个节点填对应的ip地址 wsrep_node_name="db1" wsrep_cluster_address = "gcomm://172.16.10.101:4567,172.16.10.102:4567,172.16.10.103:4567" wsrep_provider_options = "gmcast.listen_addr=tcp://172.16.10.101:4567;ist.recv_addr=172.16.10.101:4568" wsrep_node_address="172.16.10.101:4567" # 设置galera集群同步的方法和用户名密码 wsrep_sst_auth=sst:password wsrep_sst_method=xtrabackup-v2 max_connections = 10000 key_buffer_size = 64M max_heap_table_size = 64M tmp_table_size = 64M innodb_buffer_pool_size = 128M [embedded] [mariadb] [mariadb-10.1]
三、启动galera集群
1、在db1上运行galera_new_cluster命令
# galera_new_cluster
2、在db1上查看集群状态
# mysql -uroot -p -e "show status like 'wsrep_cluster_size';" +--------------------------+--------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------+ | wsrep_cluster_size | 1 | +--------------------------+--------------------------------------+
3、监控db1上的MariaDB日志
# tail -f /var/log/mariadb/mariadb.log
4、在db2上运行MariaDB数据库
# systemctl start mariadb
5、在db1上检查集群状态
# mysql -uroot -p -e "show status like 'wsrep_cluster_size';" +--------------------------+--------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------+ | wsrep_cluster_size | 2 | +--------------------------+--------------------------------------+
6、在db3上运行MariaDB数据库
# systemctl start mariadb
7、在db1上检查集群状态
# mysql -uroot -p -e "show status like 'wsrep_cluster_size';" +--------------------------+--------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------+ | wsrep_cluster_size | 3 | +--------------------------+--------------------------------------+
四、验证MariaDB galera集群的同步功能是否正常
1、在db1上创建用户、数据库
# mysql -uroot -p -e "user add testuser;" # mysql -uroot -p -e "create database testdb;" # mysql -uroot -p -e "grant all privileges on testdb.* to 'testuser'@'localhost' identified by 'password';"
2、在db2上检查用户、数据库是否存在
# mysql -uroot -p -e "select user,host from mysql.user;" # mysql -uroot -p -e "show databases;"
3、在db3上删除用户和数据库
# mysql -uroot -p -e "delete user 'testuser'" # mysql -uroot -p -e "drop database testdb"
4、在db1上检查用户和数据库是否还在
# mysql -uroot -p -e "select user,host from mysql.user;" # mysql -uroot -p -e "show databases;"
至此,MariaDB galera集群已经部署完成