搜尋此網誌

2017年5月26日 星期五

Mariadb Galera Cluster Replication


建立 Mariadb 的叢集備援環境
架構:
Node1: 192.168.1.251
Node2: 192.168.1.252
Proxy: 192.168.1.253



Node1 與 Node2 均為 Primary 身份運作,彼此相互備援。
前端 HTTP Server 透過 MySQL Router(Proxy) 可以連結到後端的 DB Server
當 叢集裡 有任一 Node 失能,Proxy 自動避開維持運作。

1. 每一台 LINUX 都先關閉 SELINUX
---
vi /etc/selinux/config
SELINUX=disabled

REBOOT OS!

2. 開始安裝 Node
---
vi /etc/yum.repos.d/mariadb.repo

# MariaDB 10.3 CentOS repository list - created 2017-05-25 07:20 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org//10.3//centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

存檔。

查該 OS 內是否已有安裝 mariadb
rpm -qa | grep mariadb

如果有,移除OS內既有的 mariadb
rpm -ev --nodeps mariadb-libs-5.5.52-1.el7.x86_64 mariadb-5.5.52-1.el7.x86_64 mariadb-server-5.5.52-1.el7.x86_64

預先準備一些相關工具
yum -y install rsync nmap lsof perl-DBI nc

安裝(10.1版以上的 Mariadb , 其 Galera Cluster是包含在裡面的,如果是5.5或10.0則需要安裝galera cluster版)
yum -y install MariaDB-server MariaDB-client

(如果是5.5或10.0則需要安裝galera cluster版)
yum -y install MariaDB-Galera-server MariaDB-client galera

systemctl start mariadb

如果需要設定 DB 的 root密碼,例如:
mysqladmin -u root password '1qaz2wsx'
或者修改舊密碼
mysqladmin -u root -p  password

建立 Cluster 之間的共同 MySQL User,用來認證使用,
建立名稱為 cluster 使用者,密碼為 1234,針對 % 跟 localhost 同時建立。
先進入Node_1: MySQL Console.
$ mysql -u root -p
登入密碼之後輸入以下
GRANT USAGE ON *.* to cluster@'%' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES on *.* to cluster@'%';
GRANT USAGE ON *.* to cluster@'localhost' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES on *.* to cluster@'localhost';
flush privileges;

以上是安裝 Node1, 接下來 Node2 如以上順序安裝好。


設定 Galera Cluster Server
---
總共兩台 Galera Server,IP 分別是:
Node_1: 192.168.1.251
Node_2: 192.168.1.252


在 192.168.1.251 建立 Galera 設定檔
並且將 cluster address 設定為 192.168.1.252
vi /etc/my.cnf.d/server.cnf
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='my_wsrep_cluster'
wsrep_cluster_address='gcomm://192.168.1.252:4567'
binlog_format=row
wsrep_node_name='db-1'
wsrep_sst_auth=cluster:1234
wsrep_sst_method=rsync
bind-address=0.0.0.0

存檔。
重新啟動 mysqld 會看到 listen 4567 port
systemctl restart mariadb

確認
netstat -anlp | grep -e 4567 -e 3306

以上完成 Node1 的設置。

---
在 192.168.1.252 建立 Galera 設定檔
並且將 cluster address 設定為 192.168.1.251
vi /etc/my.cnf.d/server.cnf

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='my_wsrep_cluster'
wsrep_cluster_address='gcomm://192.168.1.251:4567'
binlog_format=row
wsrep_node_name='db-1'
wsrep_sst_auth=cluster:1234
wsrep_sst_method=rsync
bind-address=0.0.0.0


重新啟動 mysqld 會看到 listen 4567 port
systemctl restart mariadb

確認
netstat -anlp | grep -e 4567 -e 3306

以上完成 Node2 的設置。

---
驗證 Cluster 設置是否成功
mysql -e "SHOW STATUS LIKE 'wsrep%';"

看到結果,有一個非常重要的數值,
wsrep_ready,正確值是 ON,

另外看 wsrep_cluster_size 是否跟設置 Node 的數量相同,
以上這兩個如果都正確,那就表示設定成功。
當 Node 01 關機時,資料還是在 Node 2 繼續運作,
等到 Node 01 恢復上線後,資料又會從 Node 02 同步複製過來。


要增加新 Node 時:
修改設定檔
vi /etc/my.cnf.d/server.cnf

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='my_wsrep_cluster'
wsrep_cluster_address='gcomm://192.168.1.251:4567'
binlog_format=row
wsrep_node_name='db-1'
wsrep_sst_auth=cluster:1234
wsrep_sst_method=rsync
bind-address=0.0.0.0


實際測試看看:
在 node-1 執行
mysql -uroot -e 'CREATE DATABASE gc_test;'

在 node-2 執行
mysql -uroot -e 'SHOW DATABASES;'
應該看到複製過來的 gc_test

或者是利用 Navicat GUI工具來測試
https://www.navicat.com/cht


安裝 Proxy
---
MySQL Router (Download)
安裝   mysql-router-2.1.3-1.el7.x86_64.rpm mysql-router-debuginfo-2.1.3-1.el7.x86_64
yum -y localinstall mysql-router-2.1.3-1.el7.x86_64.rpm mysql-router-debuginfo-2.1.3-1.el7.x86_64


修改設置
vi /etc/mysqlrouter/mysqlrouter.conf


[logger]
level = info
之後,加入以下:

[routing:read_write]
bind_address = 0.0.0.0
bind_port = 7001
destinations = 192.168.1.251:3306,192.168.1.252:3306
mode = read-write



啟動
systemctl start mysqlrouter
systemctl status mysqlrouter


確認
netstat -anlp | grep -e 7001 -e 7002


接下來利用 Navicat  GUI 工具來測試
https://www.navicat.com/cht


- The End -



2017年5月3日 星期三

Windows Server 2012 R2 的輸入法問題 非常的干擾


Windows Server 2012 R2 的輸入法問題 非常的干擾 IT 工程師
其實簡體中文版也是一樣的問題,只是輸入法不同而已。
顯然微軟前任 CEO 的任期內,很多懂這些 小眉角 的大老 都跳槽到別的地方去了。

參考解決方法文章


2017年5月2日 星期二

CentOS7 安裝 redis


OS 先安置好 epel

yum -y install redis

systemctl daemon-reload
systemctl enable redis.service
systemctl start redis.service

驗證執行命令
redis-cli ping
畫面應得到
PONG



有必要時,防火牆開 6379 埠
# Add allow port 6379
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload


要開放外部連線的話
vi /etc/redis.conf
找到 bind 127.0.0.1
改成 bind 0.0.0.0


- The End -

搜尋此網誌