日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

MySQL数据库集群之PXC方案---安装pxc集群

發(fā)布時(shí)間:2023/12/4 综合教程 39 生活家
生活随笔 收集整理的這篇文章主要介紹了 MySQL数据库集群之PXC方案---安装pxc集群 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 準(zhǔn)備工作

1.1 準(zhǔn)備虛擬機(jī)


因?yàn)槲覀円獙?shí)現(xiàn)的是三臺(tái)mysql節(jié)點(diǎn)集群,所以準(zhǔn)備3臺(tái)虛擬機(jī)

192.168.1.173
192.168.1.174
192.168.1.166

1.2 下載pxc資源包

在本文中講的安裝方式是本地安裝,所以提前下載好資源包,下載pxc程序資源包。下載之后解壓壓縮包。pxc捆綁了percona數(shù)據(jù)庫,所以無需單獨(dú)下載percona安裝包

1.3 qpress-11-1.el7.x86_64

下載qpress-11-1.el7.x86_64.prm ,可以去百度或者谷歌下載。

下載完1.2和1.3的資源如下圖,由于pxc官網(wǎng)是國(guó)外網(wǎng)站,在此添加某國(guó)內(nèi)云鏈接

2. PXC簡(jiǎn)介

PXC全稱是Percona XtraDB Cluster, 是著名的mysql公司Percona出品的免費(fèi)的數(shù)據(jù)庫集群產(chǎn)品。
PXC對(duì)數(shù)據(jù)庫集群是基于Galera的面向OLTP的多主同步復(fù)制插件。
長(zhǎng)期以來mysql都缺少官方原生的集群方案,這也給很多第三方公司提供了機(jī)會(huì),所以Galera技術(shù)就是眾多mysql集群技術(shù)中較為著名的一種,mysql自帶的主從復(fù)制模式天生就不能保證數(shù)據(jù)同步的完整一致,所以很多大公司花了很多人力和物力去解決這個(gè)問題,但是收效甚微,幸運(yùn)的是Galera帶來了多主架構(gòu),同步復(fù)制,并發(fā)復(fù)制,故障切換等一系列的功能。這才是真正意義上保證了數(shù)據(jù)的一致性,正確性和完整性。
PXC主要用于解決MySQL集群中數(shù)據(jù)同步強(qiáng)一致性的問題。
PXC是MySQL集群方案中公認(rèn)的優(yōu)先方案之一

2.1 PXC的特點(diǎn)

同步復(fù)制,事務(wù)在所有集群節(jié)點(diǎn)提交成功,要么不成功。
多主復(fù)制,可以在任意一個(gè)節(jié)點(diǎn)寫入
數(shù)據(jù)同步的強(qiáng)一致性,所有節(jié)點(diǎn)數(shù)據(jù)保持一致

2.2 盡可能的控制PXC集群的規(guī)模

PXC集群節(jié)點(diǎn)越多,數(shù)據(jù)同步的速度就越慢

2.3 所有PXC節(jié)點(diǎn)的硬件配置要相同

PXC集群數(shù)據(jù)同步的速度取決于配置最低的節(jié)點(diǎn)。因?yàn)镻XC是同步復(fù)制,一個(gè)節(jié)點(diǎn)寫入的數(shù)據(jù)的速度慢,會(huì)拖慢整個(gè)集群的寫入速度

2.4 PXC集群只支持InnoDB引擎

只有InnoDB的數(shù)據(jù)才會(huì)被同步

3. 安裝PXC

3.1 刪除MariaDB程序包

yum -y remove mari*

3.2 開放防火墻端口

PXC集群要使用4個(gè)端口,所以防火墻要開放下邊4個(gè)端口

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 --zone=public --add-port=4568/tcp --permanent
firewall-cmd --reload

3.3 關(guān)閉SELINUX

把配置文件中的SELINUX的值改為disabled

vi /etc/selinux/config

修改之后執(zhí)行reboot,重啟linux系統(tǒng)

reboot

3.4 將pxc資源包上傳到服務(wù)器并安裝

在/usr/local目錄下創(chuàng)建percona文件夾,將資源包上傳到percona目錄中

cd /usr/local
mkdir percona
cd percona

安裝PXC

  yum localinstall *.rpm

3.5 修改數(shù)據(jù)庫配置文件

Percona數(shù)據(jù)庫配置文件和mysql的配置文件不一樣。

用下邊命令查看Percona數(shù)據(jù)庫配置文件的位置

cat /etc/my.cnf


進(jìn)入Percona數(shù)據(jù)庫配置文件的目錄

mysql的常用信息都寫在了mysqld.cnf文件,wsrep.cnf文件配置的是pxc集群的信息
我們可以簡(jiǎn)化一下配置文件,將mysqld.cnf文件和wsrep.cnf文件的內(nèi)容復(fù)制到/etc/my.cnf文件中,把所有配置信息寫到一個(gè)文件中,并添加字符集等配置細(xì)膩

[client]
socket=/var/lib/mysql/mysql.sock[mysqld]
server-id=1
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7character_set_server = utf8
bind-address = 0.0.0.0
#跳過DNS解析
skip-name-resolve# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

初始化root賬戶密碼

啟動(dòng)mysql

systemctl start mysqld

查看默認(rèn)密碼

 cat /var/log/mysqld.log | grep "A temporary password"

修改MySQL密碼

  mysql_secure_installation


輸入新密碼,新密碼需要有大小寫字母加數(shù)組,我們這里設(shè)置Abc_123456

后邊有一些初始化的操作,所有都輸入y

創(chuàng)建遠(yuǎn)程管理員賬戶
root賬戶默認(rèn)不允許遠(yuǎn)程連接,所以我們創(chuàng)建一個(gè)可以遠(yuǎn)程連接的賬戶
進(jìn)入mysql

 mysql -u root -p


創(chuàng)建新用戶賦予遠(yuǎn)程連接權(quán)限

 CREATE USER 'admin'@'%' IDENTIFIED BY 'Abc_123456';GRANT all privileges ON *.* TO 'admin'@'%';FLUSH PRIVILEGES;exit

關(guān)閉服務(wù)

systemctl stop mysqld

在my.cnf文件中添加pxc集群配置信息

server-id=1 #PXC集群中MySQL實(shí)例的唯一ID,不能重復(fù),必須是數(shù)字
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster #PXC集群的名稱
wsrep_cluster_address=gcomm://192.168.1.173,192.168.1.174,192.168.1.166
wsrep_node_name=pxc1 #當(dāng)前節(jié)點(diǎn)的名稱
wsrep_node_address=192.168.1.173 #當(dāng)前節(jié)點(diǎn)的IP
wsrep_sst_method=xtrabackup-v2 #同步方法(mysqldump、rsync、xtrabackup)
wsrep_sst_auth= admin:Abc_123456 #同步使用的帳戶
pxc_strict_mode=ENFORCING #同步嚴(yán)厲模式
binlog_format=ROW #基于ROW復(fù)制(安全可靠)
default_storage_engine=InnoDB  #默認(rèn)引擎
innodb_autoinc_lock_mode=2 #主鍵自增長(zhǎng)不鎖表

最終的配置文件my.cnf是這樣的

[client]
socket=/var/lib/mysql/mysql.sock[mysqld]
server-id=1
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7character_set_server = utf8
bind-address = 0.0.0.0
#跳過DNS解析
skip-name-resolve# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://192.168.1.173,192.168.1.174,192.168.1.166
wsrep_node_name=pxc1
wsrep_node_address=192.168.1.173
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth= admin:Abc_123456
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2

以上步驟在其余兩臺(tái)虛擬機(jī)重復(fù)此步驟,my.cnf的文件中server-id,wsrep_node_name,wsrep_node_address這三個(gè)參數(shù)是不能重復(fù)的值

3.6 啟動(dòng)命令

3.6.1 主節(jié)點(diǎn)的管理命令(第一個(gè)啟動(dòng)的PXC節(jié)點(diǎn))

 systemctl start mysql@bootstrap.servicesystemctl stop mysql@bootstrap.servicesystemctl restart mysql@bootstrap.service

3.6.2 非主節(jié)點(diǎn)的管理命令(非第一個(gè)啟動(dòng)的PXC節(jié)點(diǎn))

service mysql start
service mysql stop 
service mysql restart 

3.7 連接測(cè)試

使用navicat連接三個(gè)數(shù)據(jù)庫節(jié)點(diǎn),連接成功

3.8 查看PXC集群狀態(tài)信息

在任意一個(gè)節(jié)點(diǎn)執(zhí)行以下命令

show status like 'wsrep_cluster%';


wsrep_cluster_size參數(shù)是說明pxc集群是幾個(gè)數(shù)據(jù)庫節(jié)點(diǎn)的集群。說明集群搭建成功。

4. 測(cè)試

我們?cè)?92.168.1.166的數(shù)據(jù)庫中創(chuàng)建一個(gè)邏輯庫testdb

刷新192.168.1.173和192.168.1.174的節(jié)點(diǎn)的數(shù)據(jù)庫,發(fā)現(xiàn)也同步了testdb數(shù)據(jù)庫

接著在192.168.1.173的testdb的數(shù)據(jù)庫上創(chuàng)建一張student表

刷新其余兩個(gè)節(jié)點(diǎn)的數(shù)據(jù)庫,發(fā)現(xiàn)也同步表成功

我們?cè)?92.168.1.174節(jié)點(diǎn)上新建幾條學(xué)生數(shù)據(jù)

刷新其余兩個(gè)節(jié)點(diǎn),發(fā)現(xiàn)數(shù)據(jù)也同步成功

5. PXC節(jié)點(diǎn)啟動(dòng)與關(guān)閉

  • 如果最后關(guān)閉的PXC節(jié)點(diǎn)是安全退出的,那么下次啟動(dòng)要最先啟動(dòng)這個(gè)節(jié)點(diǎn),而且要以主節(jié)點(diǎn)啟動(dòng)
  • 如果最后關(guān)閉的PXC節(jié)點(diǎn)不是安全退出的,那么要先修改/var/lib/mysql/grastate.dat 文件,把其中的safe_to_bootstrap屬性值設(shè)置為1,再安照主節(jié)點(diǎn)啟動(dòng)

5.1 PXC節(jié)點(diǎn)的安全關(guān)閉操作

節(jié)點(diǎn)怎么啟動(dòng)的,就使用對(duì)應(yīng)的命令去關(guān)閉。如果用錯(cuò)了關(guān)閉命令,是不能關(guān)閉節(jié)點(diǎn)的數(shù)據(jù)服務(wù)的

systemctl stop mysql@bootstrap.service
service mysql stop 

使用命令關(guān)閉主節(jié)點(diǎn)

關(guān)閉掉主節(jié)點(diǎn)之后查看/var/lib/mysql/grastate.dat文件

我們?cè)陉P(guān)閉其他子節(jié)點(diǎn),我們先關(guān)閉192.168.1.166節(jié)點(diǎn),再關(guān)閉192.168.1.174節(jié)點(diǎn)


下一次pxc集群?jiǎn)?dòng)的主節(jié)點(diǎn)是192.168.1.174服務(wù)器,192.168.1.173和192.168.1.166以子節(jié)點(diǎn)啟動(dòng)

5.2 PXC節(jié)點(diǎn)的不安全或意外關(guān)閉操作

宕機(jī),掛起,關(guān)機(jī),重啟,斷電,斷網(wǎng)都會(huì)讓節(jié)點(diǎn)意外下線。

意外下線部分節(jié)點(diǎn)

安全下線節(jié)點(diǎn)不會(huì)讓剩下的節(jié)點(diǎn)宕機(jī),如果節(jié)點(diǎn)意外退出,集群的規(guī)模不會(huì)縮小,意外退出的節(jié)點(diǎn)超過半數(shù),比如三個(gè)節(jié)點(diǎn)意外退出了2個(gè)節(jié)點(diǎn),那么剩下的節(jié)點(diǎn)就不能夠讀寫了。其他節(jié)點(diǎn)按照普通節(jié)點(diǎn)啟動(dòng)上線即可恢復(fù)pxc集群

service mysql start

意外下線全部節(jié)點(diǎn),不同時(shí)退出

如果三個(gè)節(jié)點(diǎn)都意外退出,那么查看/var/lib/mysql/grastate.dat文件,看看哪個(gè)文件的safe_to_bootstarp的值是1,那么那個(gè)節(jié)點(diǎn)是最后意外關(guān)閉的,再按照safe_to_bootstarp的值啟動(dòng)pxc集群

意外下線全部節(jié)點(diǎn),同時(shí)退出

如果三個(gè)節(jié)點(diǎn)同時(shí)意外退出,我們需要修改配置文件,挑選一個(gè)節(jié)點(diǎn)作為主節(jié)點(diǎn),修改safe_to_bootstarp的值設(shè)置為1,那么這個(gè)節(jié)點(diǎn)可以以主節(jié)點(diǎn)啟動(dòng)

總結(jié)

以上是生活随笔為你收集整理的MySQL数据库集群之PXC方案---安装pxc集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。