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://pan.baidu.com/s/1BksWzK16HootB6jPPBi4Yg
- 提取碼:hbue
官方下載地址: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地址
啟動之后查看集群狀態