CentOS6.5 64bit + MariaDB 10.0.30 + Galera Cluster 10.0.30 叢集部署安裝

百聯達發表於2017-04-14
一:伺服器

10.44.66.2           mdb01
10.116.148.103    mdb02
10.170.142.108    mdb03

二:叢集安裝

1.新增 /etc/yum.repos.d/mariadb.repo 檔案

name = MariaDB
baseurl = 
gpgkey = 
gpgcheck=1

2.關閉SELinux

sudo setenforce 0

3.網路問題

資料庫伺服器,通常是內網伺服器,可能不會開通對公網的訪問。此時可以透過tinyproxy建立一臺代理伺服器。

配置yum對代理的使用   vi /etc/yum.conf

新增  proxy=http://代理伺服器IP:埠   同時也可以增加引數timeout的陣列

4.安裝 socat

yum install 

5.安裝 MariaDB Galera Cluster 10.0.30 軟體

 yum install MariaDB-Galera-server MariaDB-client rsync galera

6.yum源下載太慢的話,可以把相應的rpm包下載後,上傳到 /var/cache/yum/x86_64/6/mariadb/packages 再執行上述命令。

7.MariaDB 安全設定

啟動Mysql      sudo service mysql start

執行指令碼 sudo /usr/bin/mysql_secure_installation

可以設定root使用者的密碼,其它保持Y就行。

8. 設定MariaDB Cluster 使用者。
其中sstUser 是State Transfer Snapshot (SST) 的使用者,用來與其它資料庫
node進行通訊。
mysql -u root -p
DELETE FROM mysql.user WHERE user='';
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'pwd' with grant option;
GRANT ALL ON *.* TO 'sstUser'@'%' IDENTIFIED BY 'pwd' with grant option;
FLUSH PRIVILEGES;
quit

三: 叢集配置

1.  配置/etc/hosts檔案

10.44.66.2 mdb01
10.116.148.103 mdb02
10.170.142.108 mdb03

2. 停止所有node節點的服務

sudo  service mysql stop

3.配置MariaDB Cluster Config 資訊(/etc/my.cnf.d/ server.cnf,client.cnf,mysql-clients.cnf 參考模板:/usr/share/mysql/my-large.cnf)
mdb01

[galera]
# Mandatory settings
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://mdb01,mdb02,mdb03"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='mdb01'
wsrep_node_name='mdb01'
wsrep_sst_method=rsync
wsrep_sst_auth=sstUser:$Fortune2015
binlog_format=row
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
datadir=/var/lib/mysql
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2



mdb02

[galera]
# Mandatory settings
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://mdb01,mdb02,mdb03"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='mdb02'
wsrep_node_name='mdb02'
wsrep_sst_method=rsync
wsrep_sst_auth=sstUser:$Fortune2015
binlog_format=row
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
datadir=/var/lib/mysql
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2


mdb03

[galera]
# Mandatory settings
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://mdb01,mdb02,mdb03"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='mdb03'
wsrep_node_name='mdb03'
wsrep_sst_method=rsync
wsrep_sst_auth=sstUser:$Fortune2015
binlog_format=row
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
datadir=/var/lib/mysql
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2

4. 在主節點上啟動(只在主節點

sudo /etc/init.d/mysql start --wsrep-new-cluster

5.啟動其它子節點  sudo service mysql start

6.檢視狀態

show status like 'wsrep%'

+------------------------------+------------------------------------------------+
| Variable_name                | Value                                          |
+------------------------------+------------------------------------------------+
| wsrep_local_state_uuid       | 14c14190-20b8-11e7-8e57-ab643513795c           |
| wsrep_protocol_version       | 7                                              |
| wsrep_last_committed         | 0                                              |
| wsrep_replicated             | 0                                              |
| wsrep_replicated_bytes       | 0                                              |
| wsrep_repl_keys              | 0                                              |
| wsrep_repl_keys_bytes        | 0                                              |
| wsrep_repl_data_bytes        | 0                                              |
| wsrep_repl_other_bytes       | 0                                              |
| wsrep_received               | 10                                             |
| wsrep_received_bytes         | 686                                            |
| wsrep_local_commits          | 0                                              |
| wsrep_local_cert_failures    | 0                                              |
| wsrep_local_replays          | 0                                              |
| wsrep_local_send_queue       | 0                                              |
| wsrep_local_send_queue_max   | 2                                              |
| wsrep_local_send_queue_min   | 0                                              |
| wsrep_local_send_queue_avg   | 0.500000                                       |
| wsrep_local_recv_queue       | 0                                              |
| wsrep_local_recv_queue_max   | 1                                              |
| wsrep_local_recv_queue_min   | 0                                              |
| wsrep_local_recv_queue_avg   | 0.000000                                       |
| wsrep_local_cached_downto    | 18446744073709551615                           |
| wsrep_flow_control_paused_ns | 0                                              |
| wsrep_flow_control_paused    | 0.000000                                       |
| wsrep_flow_control_sent      | 0                                              |
| wsrep_flow_control_recv      | 0                                              |
| wsrep_cert_deps_distance     | 0.000000                                       |
| wsrep_apply_oooe             | 0.000000                                       |
| wsrep_apply_oool             | 0.000000                                       |
| wsrep_apply_window           | 0.000000                                       |
| wsrep_commit_oooe            | 0.000000                                       |
| wsrep_commit_oool            | 0.000000                                       |
| wsrep_commit_window          | 0.000000                                       |
| wsrep_local_state            | 4                                              |
| wsrep_local_state_comment    | Synced                                         |
| wsrep_cert_index_size        | 0                                              |
| wsrep_causal_reads           | 0                                              |
| wsrep_cert_interval          | 0.000000                                       |
| wsrep_incoming_addresses     | mdb03:3306,mdb01:3306,mdb02:3306               |
| wsrep_desync_count           | 0                                              |
| wsrep_evs_delayed            |                                                |
| wsrep_evs_evict_list         |                                                |
| wsrep_evs_repl_latency       | 0.00159676/0.00171488/0.00201301/0.000173143/4 |
| wsrep_evs_state              | OPERATIONAL                                    |
| wsrep_gcomm_uuid             | 14c00757-20b8-11e7-8a76-4ee0e6b33d41           |
| wsrep_cluster_conf_id        | 3                                              |
| wsrep_cluster_size           | 3                                              |
| wsrep_cluster_state_uuid     | 14c14190-20b8-11e7-8e57-ab643513795c           |
| wsrep_cluster_status         | Primary                                        |
| wsrep_connected              | ON                                             |
| wsrep_local_bf_aborts        | 0                                              |
| wsrep_local_index            | 1                                              |
| wsrep_provider_name          | Galera                                         |
| wsrep_provider_vendor        | Codership Oy              |
| wsrep_provider_version       | 25.3.19(r3667)                                 |
| wsrep_ready                  | ON                                             |
| wsrep_thread_count           | 2                                              |
+------------------------------+------------------------------------------------+

四: 在任意一個node節點上,建立資料庫,表,新增資料。  停掉某個節點,再恢復。

驗證叢集的一致性和能否正常工作。

五:普及知識點:GALERA監控



1、常用指令
檢視版本:SHOW GLOBAL STATUS LIKE"wsrep_provider_version";
檢視wsrep有關的所有變數:SHOW VARIABLES LIKE "wsrep%" \G
檢視GALERA叢集狀態:SHOW STATUS LIKE "wsrep%";
1、叢集完整性檢查
wsrep_local_state_uuid:在叢集所有節點的值應該是相同的,有不同值的節點,說明其沒有連線入叢集
wsrep_cluster_conf_id:正常情況下所有節點上該值是一樣的.如果值不同,說明該節點被臨時”分割槽”了.當節點之間網路連線恢復的時候應該會恢復一樣的值.
wsrep_cluster_status:叢集組成的狀態.如果不為”PRIMARY”,說明出現”分割槽”或是”split-brain”狀況.
2、節點狀態檢查
wsrep_ready:該值為ON,則說明可以接受SQL負載.如果為Off,則需要檢查wsrep_connected
wsrep_connected:如果該值為Off,且wsrep_ready的值也為Off,則說明該節點沒有連線到叢集.(可能是wsrep_cluster_address或wsrep_cluster_name等配置錯造成的.具體錯誤需要檢視錯誤日誌)
wsrep_local_state_comment:如果wsrep_connected為ON,但wsrep_ready為OFF,則可以從該項檢視原因
3、複製健康檢查:
wsrep_flow_control_paused:表示複製停止了多長時間.即表明叢集因為SLAVE延遲而慢的程度.值為0~1,越靠近0越好,值為1表示複製完全停止.可最佳化wsrep_slave_threads的值來改善
wsrep_cert_deps_distance:有多少事務可以並行應用處理.wsrep_slave_threads設定的值不應該高出該值太多.
wsrep_flow_control_sent:表示該節點已經停止複製了多少次
wsrep_local_recv_queue_avg:表示SLAVE事務佇列的平均長度.slave瓶頸的預兆.
最慢的節點的wsrep_flow_control_sent和wsrep_local_recv_queue_avg這兩個值最高.這兩個值較低的話,相對更好.
5、檢測慢網路問題:
  wsrep_local_send_queue_avg:網路瓶頸的預兆.如果這個值比較高的話,可能存在網路瓶
5)衝突或死鎖的數目:
  wsrep_last_committed:最後提交的事務數目
  wsrep_local_cert_failures和wsrep_local_bf_aborts:回滾,檢測到的衝突數目
Galera的狀態快照轉移(SST)
  SST允許新接入的節點使用定製的方法來獲取最初的資料,當前mysql支援三種SST方法:
  1、mysqldump
    這需要接收伺服器在轉移前完全初始化和準備接收連線。此方法是透過定義阻塞,阻止修改自身狀態轉移的持續時間。這也是最慢的方式,可能會帶來高負載的問題。
  2、rsync
   最快的方式,也是galera預設使用的方式。rsync指令碼執行在傳送和接收端上。在接收端,開啟rsync服務模式,等待傳送端連線。在傳送端,開啟rsync客戶端模式,傳送mysql資料目錄內容到連線節點。這種方法也會阻塞,但是比mysqldump快。
  3、xtrabackup
   也很快,但需要額外安裝。
 
####搭建叢集注意幾個引數:
Binlog_format=ROW###日誌格式必須為ROW
Default_storage_engine=INNODB
Innodb_autoinc_lock_mod2=2 ###指定innodb自增長列鎖模式,2為交叉鎖模式,多個語句能同時執行
INNODB_LOCKS_UNSAFE_FOR_BINLOG=1
 WSREP_CLUSTER_NAME=CLUSTER_NAME###CLUSTER的名字
WSREP_CLUSTER_ADDRESS=GCOMM://IP1,IP2###叢集中所有的node-ip,貌似只寫本地也沒問題,就是啟動的時候寫第一節點的IP 即可
Wsrep_node_address=ip ---每個節點配置為自己的IP
WSREP_PROVIDER=/USR/LOCAL/LIB/LIBGALERA_SMM.SO##指定GALERA庫檔案,PXC自帶該庫檔案,MARIADB GALERA 需要安裝GALERA
WSREP_SST_METHOD=RSYNC/XTRABACKUP  #指定SST方式,支援RSYNC(最快,需要表鎖),MYSQLDUMP和XTRABACKUP
WSREP_SST_AUTH=SST:123456     ----傳輸的使用者
第一節點啟動:不能用mysqld啟動
應該為##./mysqld_safe –defaults-file=/etc/my.cnf –wsrep-cluster-address=”gcomm://”&

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2137268/,如需轉載,請註明出處,否則將追究法律責任。

相關文章