mysql8.0使用PXC實(shí)現(xiàn)高可用的示例(Rocky8.0環(huán)境)
搭建 PXC 集群
Percona XtraDB Cluster (簡(jiǎn)稱 PXC)集群是基于 Galera 2.x library,事務(wù)型應(yīng)用下的通用的多主同步復(fù)制插件,主要用于解決強(qiáng)一致性問(wèn)題,使得各個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)保持實(shí)時(shí)同步以及實(shí)現(xiàn)多節(jié)點(diǎn)同時(shí)讀寫(xiě)。提高了數(shù)據(jù)庫(kù)的可靠性,也可以實(shí)現(xiàn)讀寫(xiě)分離,是 MySQL 關(guān)系型數(shù)據(jù)庫(kù)中大家公認(rèn)的集群優(yōu)選方案之一。
準(zhǔn)備好下面三臺(tái)服務(wù)器,本文搭建PXC集群基于Rocky8.0環(huán)境:
IP | 端口 | 角色 |
---|---|---|
192.168.1.51 | 3306 | pxc |
192.168.1.52 | 3306 | pxc2 |
192.168.1.53 | 3306 | pxc3 |
配置hosts解析
[root@localhost ~]# vim /etc/hosts + 192.168.1.51 pxc1 192.168.1.52 pxc2 192.168.1.53 pxc3 或: # cat >> /etc/hosts << EOF 192.168.1.51 pxc1 192.168.1.52 pxc2 192.168.1.53 pxc3 EOF
用 MySQL 軟件模塊的命令(三臺(tái)都需要)
[root@localhost ~]# yum module disable mysql
下載 PXC 安裝包
[root@localhost ~]# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
啟用PXC80版本
[root@localhost ~]# percona-release setup pxc-80
安裝PXC集群
[root@localhost ~]# yum install percona-xtradb-cluster
之后還是對(duì) Percona Server 數(shù)據(jù)庫(kù)的初始化:
初始化數(shù)據(jù)庫(kù)
應(yīng)為使用的是8.0版本,部分配置需要在初始化數(shù)據(jù)庫(kù)前進(jìn)行配置,如忽略表名大小寫(xiě)等
[root@pxc1 ~]# vim /etc/my.cnf ... [mysqld] server-id=51 #每臺(tái)mysql的id不能相同 # Binary log expiration period is 604800 seconds, which equals 7 days binlog_expire_logs_seconds=604800 #二進(jìn)制日志過(guò)期時(shí)間為604800秒,等于7天 wsrep_cluster_address=gcomm://192.168.1.51,192.168.1.52,192.168.1.53 #都需要 wsrep_node_address=192.168.1.51 #將#去掉,改成對(duì)應(yīng)IP wsrep_node_name=pxc1 #集群名字 注意:pxc2和pxc3只需要server-id設(shè)置為52和53,集群名字改為PXC2和3即可。
第一個(gè)節(jié)點(diǎn)需要以引導(dǎo)模式啟動(dòng):
[root@pxc1 ~]# systemctl start mysql@bootstrap.service
查看臨時(shí)密碼
[root@localhost ~]# grep -i password /var/log/mysqld.log 2025-02-13T13:20:31.423023Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: KsN&IYcog4dq
修改密碼
[root@localhost ~]# mysql -uroot -p'KsN&IYcog4dq' mysql> alter user root@localhost identified by 'mysql@123';
免密登錄
[root@localhost ~]# vim /etc/my.cnf user=root password=mysql@123
查詢集群信息
mysql> show status like 'wsrep%';
查看證書(shū)
#(第一個(gè)節(jié)點(diǎn)) mysql> show variables like 'pxc_encrypt_cluster_traffic'; +-----------------------------+-------+ | Variable_name | Value | +-----------------------------+-------+ | pxc_encrypt_cluster_traffic | ON | +-----------------------------+-------+ 1 row in set (0.05 sec) [root@localhost ~]# cd /var/lib/mysql [root@localhost mysql]# ll *.pem -rw------- 1 mysql mysql 1680 Feb 13 21:54 ca-key.pem -rw-r--r-- 1 mysql mysql 1120 Feb 13 21:54 ca.pem -rw-r--r-- 1 mysql mysql 1120 Feb 13 21:54 client-cert.pem -rw------- 1 mysql mysql 1680 Feb 13 21:54 client-key.pem -rw------- 1 mysql mysql 1676 Feb 13 21:54 private_key.pem -rw-r--r-- 1 mysql mysql 452 Feb 13 21:54 public_key.pem -rw-r--r-- 1 mysql mysql 1120 Feb 13 21:54 server-cert.pem -rw------- 1 mysql mysql 1680 Feb 13 21:54 server-key.pem
修改證書(shū)
將第一個(gè)節(jié)點(diǎn)的證書(shū)復(fù)制到第2個(gè)和第3個(gè)節(jié)點(diǎn)上面
#第2,3節(jié)點(diǎn)先刪除證書(shū) [root@localhost ~]# cd /var/lib/mysql [root@localhost mysql]# rm -f *.pem #在第1節(jié)點(diǎn)進(jìn)行拷貝 [root@localhost ~]# scp /var/lib/mysql/*.pem pxc2:/var/lib/mysql The authenticity of host 'pxc2 (192.168.1.52)' can't be established. ECDSA key fingerprint is SHA256:5HjL01EqJ2nry7DtJVTglQ+GhVzIz54AfeI4AWcUC3E. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes #需要輸入 Warning: Permanently added 'pxc2,192.168.1.52' (ECDSA) to the list of known hos root@pxc2's password: #需要輸入pxc2,192.168.1.52的開(kāi)機(jī)密碼(root) ca-key.pem 100% 1680 942.8KB/s 00:00 ca.pem 100% 1120 807.8KB/s 00:00 client-cert.pem 100% 1120 1.5MB/s 00:00 client-key.pem 100% 1676 1.1MB/s 00:00 private_key.pem 100% 1680 1.8MB/s 00:00 public_key.pem 100% 452 908.5KB/s 00:00 server-cert.pem 100% 1120 2.1MB/s 00:00 server-key.pem 100% 1680 1.7MB/s 00:00 [root@localhost ~]# scp /var/lib/mysql/*.pem pxc3:/var/lib/mysql #再在第2,3節(jié)點(diǎn)上修改證書(shū)權(quán)限 [root@localhost mysql]# chown mysql.mysql *.pem
接著在第二和第三個(gè)節(jié)點(diǎn)上正常啟動(dòng)數(shù)據(jù)庫(kù)服務(wù),命令如下:
[root@pxc2 ~]# systemctl start mysql [root@pxc3 ~]# systemctl start mysql
查詢集群信息
mysql> show status like 'wsrep%'; 或: mysql> show status where Variable_name in ('wsrep_cluster_size','wsrep_cluster_status','wsrep_connected','wsrep_ready'); +----------------------+---------+ | Variable_name | Value | +----------------------+---------+ | wsrep_cluster_size | 3 | | wsrep_cluster_status | Primary | | wsrep_connected | ON | | wsrep_ready | ON | +----------------------+---------+ 4 rows in set (0.03 sec)
同步狀態(tài)監(jiān)控
mysql> select * from performance_schema.pxc_cluster_view; +-----------+--------------------------------------+--------+-------------+---------+ | HOST_NAME | UUID | STATUS | LOCAL_INDEX | SEGMENT | +-----------+--------------------------------------+--------+-------------+---------+ | pxc1 | 4fdd3348-ea0d-11ef-8eec-ce7af56f28c3 | SYNCED | 0 | 0 | | pxc2 | cf90d45e-ea15-11ef-9521-72c20777f912 | SYNCED | 1 | 0 | | pxc3 | d608c0e9-ea15-11ef-a5fa-42a90e6cebce | SYNCED | 2 | 0 | +-----------+--------------------------------------+--------+-------------+---------+ 3 rows in set (0.00 sec)
節(jié)點(diǎn)2,3無(wú)需修改密碼
加入集群用的就是節(jié)點(diǎn)1的密碼
查看 PXC 集群狀態(tài)信息,在任意一個(gè)節(jié)點(diǎn)執(zhí)行以下命令:
[root@pxc1 ~]# mysql -uroot -p'mysql@123' -e "show status like 'wsrep_cluster%';" mysql: [Warning] Using a password on the command line interface can be insecure. +----------------------------+--------------------------------------+ | Variable_name | Value | +----------------------------+--------------------------------------+ | wsrep_cluster_weight | 3 | | wsrep_cluster_capabilities | | | wsrep_cluster_conf_id | 3 | | wsrep_cluster_size | 3 | | wsrep_cluster_state_uuid | 47f68dce-940c-11ee-85d5-c29e7cbcc6e4 | | wsrep_cluster_status | Primary | +----------------------------+--------------------------------------+
節(jié)點(diǎn)下線
PXC 集群允許動(dòng)態(tài)下線節(jié)點(diǎn),但需要注意的是節(jié)點(diǎn)的啟動(dòng)命令和關(guān)閉命令必須一致,如以引導(dǎo)模式啟動(dòng)的第一個(gè)節(jié)點(diǎn)必須
以引導(dǎo)模式來(lái)進(jìn)行關(guān)閉:
[root@localhost ~]# systemctl stop mysql@bootstrap.service
其他節(jié)點(diǎn)則可以按照正常方式關(guān)閉:
[root@localhost ~]# systemctl stop mysql
到此這篇關(guān)于mysql8.0使用PXC實(shí)現(xiàn)高可用的示例(Rocky8.0環(huán)境)的文章就介紹到這了,更多相關(guān)mysql8.0 PXC高可用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL如何快速批量插入1000w條數(shù)據(jù)
這篇文章主要給大家介紹了關(guān)于MySQL如何快速批量插入1000w條數(shù)據(jù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03MySql存儲(chǔ)過(guò)程循環(huán)的使用分析詳解
這篇文章主要介紹了MySql存儲(chǔ)過(guò)程循環(huán)的使用分析詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06mysql日期函數(shù)TO_DAYS()函數(shù)的詳細(xì)講解
在SQL中我們經(jīng)常需要根據(jù)時(shí)間字段查詢數(shù)據(jù),今天用到一個(gè)好用的時(shí)間字段,用來(lái)查詢一整天的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于mysql日期函數(shù)TO_DAYS()函數(shù)的相關(guān)資料,需要的朋友可以參考下2022-08-08MySQL Workbench導(dǎo)出表結(jié)構(gòu)與數(shù)據(jù)的實(shí)現(xiàn)步驟
MySQL Workbench是一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)設(shè)計(jì)工具,提供了便捷的數(shù)據(jù)導(dǎo)入導(dǎo)出功能,本文就來(lái)介紹一下MySQL Workbench導(dǎo)出表結(jié)構(gòu)與數(shù)據(jù)的實(shí)現(xiàn)步驟,感興趣的可以了解一下2024-05-05Mysql?InnoDB?B+樹(shù)索引目錄項(xiàng)記錄頁(yè)管理
這篇文章主要為大家介紹了Mysql?InnoDB?B+樹(shù)索引目錄項(xiàng)記錄頁(yè)管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05