站在巨人的肩膀上
part.0 環(huán)境信息
操作系統(tǒng): centos7.4
集群節(jié)點數(shù): 3
主機信息:
192.168.1.217 node1 selinux=disable
192.168.1.227 node2 selinux=disable
192.168.1.238 node3 selinux=disable
part.1 集群搭建步驟
1.1 修改hosts文件信息
$ vi /etc/hosts
192.168.1.217 node1
192.168.1.227 node2
192.168.1.238 node3
1.2 引入mariadb repo 文件
$ vi /etc/yum.repo.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
然后進行安裝
$ sudo yum install MariaDB-server MariaDB-client galera
1.3 mariadb 初始化與權(quán)限分配
systemctl start mariadb
mysql_secure_installation
在初始化過程中摩钙,可以對root密碼進行修改等操作
然后對用戶進行授權(quán)
mysql> grant all privileges on *.* to root@'%' identified by '密碼';
mysql> flush privileges;
1.4 配置 galera
$ vi /etc/my.cnf.d/server.cnf
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.1.217,192.168.1.227,192.168.1.238"
wsrep_node_name= node1
wsrep_node_address=192.168.1.217
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=120M
wsrep_sst_method=rsync
wsrep_causal_reads=ON
此文件在三個節(jié)點中都需要修改。并且根據(jù)節(jié)點的信息來修改wsrep_node_address和wsrep_node_name兩項,修改為相應(yīng)節(jié)點的hostname和ip东臀。
part.2 啟動集群
啟動 MariaDB Galera Cluster 服務(wù):
$ galera_new_cluster
$ systemctl start mariadb
啟動后可以查看集群的狀態(tài),集群服務(wù)將使用4567和3306兩個端口恢总。
$ netstat -tulpn | grep -e 4567 -e 3306
tcp 0 0 0.0.0.0:4567 0.0.0.0:* LISTEN 13436/mysqld
tcp6 0 0 :::3306 :::* LISTEN 13436/mysqld
其他節(jié)點的啟動方式相同。
part.3 驗證集群是否正常
3.1 查看galera插件
MariaDB [(none)]> show status like "wsrep_ready";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_ready | ON |
+---------------+-------+
3.2 查看集群集齊數(shù)
MariaDB [(none)]> show status like "wsrep_cluster_size";
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
3.3 查看集群狀態(tài)
MariaDB [(none)]> show status like "wsrep%";
+------------------------------+----------------------------------------------------------+
| Variable_name | Value |
+------------------------------+----------------------------------------------------------+
| wsrep_apply_oooe | 0.000000 |
| wsrep_apply_oool | 0.000000 |
| wsrep_apply_window | 1.000000 |
| wsrep_causal_reads | 6 |
| wsrep_cert_deps_distance | 0.000000 |
| wsrep_cert_index_size | 0 |
| wsrep_cert_interval | 0.000000 |
| wsrep_cluster_conf_id | 7 |
| wsrep_cluster_size | 3 | 集群成員
| wsrep_cluster_state_uuid | f16cdbb3-495a-11e9-8b44-df48c6cbb633 | 集群唯一標(biāo)識
| wsrep_cluster_status | Primary | 主服務(wù)器
| wsrep_cluster_weight | 3 |
| wsrep_commit_oooe | 0.000000 |
| wsrep_commit_oool | 0.000000 |
| wsrep_commit_window | 1.000000 |
| wsrep_connected | ON | 當(dāng)前是否連接
| wsrep_desync_count | 0 |
| wsrep_evs_delayed | |
| wsrep_evs_evict_list | |
| wsrep_evs_repl_latency | 0/0/0/0/0 |
| wsrep_evs_state | OPERATIONAL |
| wsrep_flow_control_paused | 0.000000 |
| wsrep_flow_control_paused_ns | 0 |
| wsrep_flow_control_recv | 0 |
| wsrep_flow_control_sent | 0 |
| wsrep_gcomm_uuid | c81b04a3-495b-11e9-9b95-3bff3ad9deb1 |
| wsrep_incoming_addresses | 192.168.1.227:3306,192.168.1.238:3306,192.168.1.217:3306 | 連接中的數(shù)據(jù)庫
| wsrep_last_committed | 6 | sql提交記錄
| wsrep_local_bf_aborts | 0 | 執(zhí)行事務(wù)過程被本地中斷
| wsrep_local_cached_downto | 18446744073709551615 |
| wsrep_local_cert_failures | 0 |
| wsrep_local_commits | 0 |
| wsrep_local_index | 0 |
| wsrep_local_recv_queue | 0 |
| wsrep_local_recv_queue_avg | 0.000000 |
| wsrep_local_recv_queue_max | 1 |
| wsrep_local_recv_queue_min | 0 |
| wsrep_local_replays | 0 |
| wsrep_local_send_queue | 0 |
| wsrep_local_send_queue_avg | 0.000000 |
| wsrep_local_send_queue_max | 1 |
| wsrep_local_send_queue_min | 0 |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_local_state_uuid | f16cdbb3-495a-11e9-8b44-df48c6cbb633 | 集群ID
| wsrep_open_connections | 0 |
| wsrep_open_transactions | 0 |
| wsrep_protocol_version | 9 |
| wsrep_provider_name | Galera |
| wsrep_provider_vendor | Codership Oy <info@codership.com> |
| wsrep_provider_version | 25.3.25(r3836) |
| wsrep_ready | ON |
| wsrep_received | 4 |
| wsrep_received_bytes | 494 |
| wsrep_repl_data_bytes | 0 |
| wsrep_repl_keys | 0 |
| wsrep_repl_keys_bytes | 0 |
| wsrep_repl_other_bytes | 0 |
| wsrep_replicated | 0 |
| wsrep_replicated_bytes | 0 |
| wsrep_thread_count | 2 |
+------------------------------+----------------------------------------------------------+
3.4 查看連接的主機
MariaDB [(none)]> show status like "wsrep_incoming_addresses";
+--------------------------+----------------------------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------------------------+
| wsrep_incoming_addresses | 192.168.1.227:3306,192.168.1.238:3306,192.168.1.217:3306 |
+--------------------------+----------------------------------------------------------+
3.5 測試是否能同步
在node1節(jié)點創(chuàng)建一個數(shù)據(jù)庫,然后在其他節(jié)點進行驗證。
MariaDB [(none)]> create database tests;
Query OK, 1 row affected (0.010 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| tests |
| mysql |
| performance_schema |
+--------------------+
在其他節(jié)點使用show databases吨娜,查看是否同樣有tests數(shù)據(jù)庫麻顶。
補充:
異常問題1:galera主機非正常關(guān)機赦抖,比如遭遇停電等情況。
異常處理: 可直接開啟galera集群的主服務(wù)器主機的mariadb服務(wù)辅肾,在開啟成員主機的mariadb服務(wù)队萤。
異常問題2 :galera集群的主服務(wù)器和成員主機的mysql服務(wù)無法啟動。
異常處理: 刪除garlera主服務(wù)器的/var/lib/mysql/grastate.dat狀態(tài)文件矫钓,galera_new_cluster啟動服務(wù)要尔。啟動正常。登錄并查看wsrep狀態(tài)新娜。刪除galera成員主機中的/var/lib/mysql/grastate.dat狀態(tài)文件盈电,systemctl restart mariadb重啟服務(wù)。啟動正常杯活。登錄并查看wsrep狀態(tài)匆帚。