Galera Cluster for Mysql集群環境搭建


1、系統環境

         CentOS 7.5   虛擬機環境 

          NODE1:192.168.1.33

          NODE2:192.168.1.34

          NODE3:192.168.1.35

2、linux 更換國內鏡像

  首先備份/etc/yum.repos.d/CentOS-Base.repo

  執行命令:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下載網易repos  通過ftp 上傳至/etc/yum.repos.d/ 目錄下

下載地址:http://mirrors.163.com/.help/centos.html

替換完成后執行:

yum clean all
yum makecache

3、安裝清華大學 elep repo

執行命令:

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm

4、創建mysql目錄及mysql日志文件

執行命令:

vi /var/log/mysql.error

日志文件賦權限

chmod -R 777 /var/log/mysql.error

創建mysql 數據目錄

mkdir -p /usr/local/mysql/data/

賦權限

chmod -R 777 /usr/local/mysql/

 

5、卸載 mariadb

查看系統是否已經安裝了mariadb

執行命令:

rpm -qa | grep mariadb

如果存在則執行:

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 (此處是我的系統)

6、開啟防火牆

執行命令:

firewall-cmd --zone=public --add-port=3306/tcp –permanent
firewall-cmd --zone=public --add-port=4444/tcp –permanent
firewall-cmd --zone=public --add-port=4567/tcp –permanent

重啟防火牆

firewall-cmd --reload

7、設置SELinux

執行命令:

vi /etc/selinux/config

修改

SELINUX=enforcing 為 permissive

執行 reboot 重啟電腦

8、下載 Galear 組件

由於下載慢 可以在此下載

官方下載地址:https://galeracluster.com/downloads/

 選擇CentOS

選擇 7

選擇x86_64

點擊下載galera-3-25.3.28-1.el7.x86_64.rpm

下載:

選擇 CentOS

進去后所有的下載所有的RPM

9、安裝Galear 依賴包

執行命令:

yum -y install gcc gcc-c++ openssl openssl-devel lsof socat perl boost-devel rsync jemalloc libaio libaio-devel net-tools

 

10、安裝Galear

上傳剛才下載的文件到linux 目錄后依次執行:

rpm -ivh mysql-wsrep-common-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-libs-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-client-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-server-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-libs-compat-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-devel-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh galera-3-25.3.28-1.el7.x86_64.rpm

11、創建wsrep.cnf 文件

編輯 /etc/my.cnf 注釋掉所有,增加!includedir /etc/my.cnf.d/

執行命令:

vi  /etc/my.cnf.d/wsrep.cnf
[mysqld]
#設置跳過密碼認證(自定義密碼設置成功后,需要刪除此項)
skip-grant-tables
lower_case_table_names=1
# 設置3306端口
port=3306
# 設置mysql數據庫的數據的存放目錄
datadir=/usr/local/mysql/data
# 允許最大連接數
max_connections=10000
# 允許連接失敗的次數。
max_connect_errors=20
# 服務端使用的字符集默認為UTF8
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
# 默認使用“mysql_native_password”插件認證
default_authentication_plugin=mysql_native_password
#MySQL服務器的ID,必須是唯一的,集群各個節點也不同
server_id=1
# 防止日志時間和系統時間不一樣
log_timestamps=SYSTEM
explicit_defaults_for_timestamp=true
log_error=/var/log/mysql.error
pid_file=/run/mysqld/mysqld.pid
user=mysql
socket=/usr/local/mysql/data/mysql.sock
# galera集群的名字,必須是統一的
wsrep_cluster_name='cs_cluster'
# wsrep提供者,必須配置(可以通過find命令查找 該文件在那兩個目錄下)
wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so
#wsrep節點的ID,必須是唯一的,集群各個節點也不同
wsrep_node_name = node1
# 集群中的其他節點地址,可以使用主機名或IP (數據庫初始化之前先不配置此項,但是初始化完成之后需要配置此項)
#wsrep_cluster_address=gcomm://192.168.1.33:4567,192.168.1.34:4567,192.168.1.35:4567
wsrep_cluster_address=gcomm://
# 本機節點地址,可以使用主機名或IP
wsrep_node_address='192.168.1.33'
# 指定wsrep啟動端口號,4567為默認值
wsrep_provider_options ="gmcast.listen_addr=tcp://192.168.1.33:4567"
# 一個逗號分割的節點串作為狀態轉移源,比如 wsrep_sst_donor=node1,node2,node3 如果node1可用,用node2,如果node2不可用,用node3,最后的逗號表明讓提供商自己選擇一個最優的。
wsrep_sst_donor='node1,node2,node3'
# 集群同步方式
wsrep_sst_method=rsync
# 集群同步的用戶名密碼
wsrep_sst_auth=test:test
slow_query_log=on
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
socket=/usr/local/mysql/data/mysql.sock
[client]
# 設置mysql客戶端連接服務端時默認使用的端口
port=3306
default-character-set=utf8
socket=/usr/local/mysql/data/mysql.sock
[mysqldump]
max_allowed_packet = 512M
[mysqld_safe]
malloc-lib=/usr/lib64/libjemalloc.so.1

12、初始化mysql

 

初始化mysql:

mysqld --initialize –-console

 

啟動mysql:

service mysqld start

進入mysql 並設置密碼

 mysql -u root -p 

注意:

如果遇到(ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/usr/local/mysql/data/mysql.sock' (2) )

重啟mysql 服務  systemctl restart mysqld.service 

由於之前設置了 skip-grant-tables 因此直接按回車進入

修改mysql 密碼:

update mysql.user set authentication_string=password('root') where user='root';
flush privileges;

鍵入:quit 退出

刪除skip-grant-tables

重啟mysql 服務

執行:

service mysqld start

用之前修改的密碼進入mysql

mysql -u root –p
輸入上面修改的密碼:root

再次修改密碼執行:

alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
flush privileges;

設置mysql 可以遠程登錄

use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

設置mysql 開機啟動

systemctl enable mysqld.service
chkconfig --levels 2345 mysqld on

注意:正在將請求轉發到“systemctl enable mysqld.service”

13、注意事項

按照上面的步驟安裝其余兩台機器或者通過虛擬機克隆,克隆出兩台機器,需要注意的是一下三項參數必須按照不同機器來配置

server_id=1

wsrep_node_name = node1

wsrep_provider_options ="gmcast.listen_addr=tcp://192.168.1.33:4567"

14、啟動集群

其余兩台機器安裝好之后,啟動集群環境

  • 編輯/etc/my.cnf.d/wsrep.cnf

        把wsrep_cluster_address=gcomm:// 改為其余兩個節點的實際ip地址

        如我的配置:wsrep_cluster_address=gcomm://192.168.1.33:4567,192.168.1.34:4567,192.168.1.35:4567

        修改完成后停止mysql 服務

systemctl stop mysqld.service

 

  • 啟動集群環境,第一台啟動的集群服務必須使用下面的命令:

   

bash  /usr/bin/mysqld_bootstrap 
  • 其余節點啟動

使用:

systemctl start mysqld.service

注意:其余節點啟動之前也需要把把wsrep_cluster_address=gcomm:// 改為其余兩個節點的實際ip地址

啟動之后查看集群狀態


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM