一、安裝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集群已經部署完成