MySQL資料庫高可用集群搭建-PXC集群部署

2021-01-11 北城小事

Percona XtraDB Cluster(下文簡稱PXC集群)提供了MySQL高可用的一種實現方法。集群是有節點組成的,推薦配置至少3個節點,但是也可以運行在2個節點上。

PXC原理描述:

分布式系統的CAP理論:C:一致性,所有的節點數據一致A:可用性,一個或者多個節點失效,不影響服務請求P:分區容忍性,節點間的連接失效,仍然可以處理請求其實,任何一個分布式系統,需要滿足這三個中的兩個。PXC的優點:1)服務高可用;2)數據同步複製(並發複製),幾乎無延遲;3)多個可同時讀寫節點,可實現寫擴展,不過最好事先進行分庫分表,讓各個節點分別寫不同的表或者庫,避免讓galera解決數據衝突;4)新節點可以自動部署,部署操作簡單;5)數據嚴格一致性,尤其適合電商類應用;6)完全兼容MySQL; 

一些名詞介紹:

WS:write set寫數據集,寫/更新事務IST:Incremental State Transfer 增量同步SST:State Snapshot Transfe 全量同步。 SST支持的方法有:mysqldump,rsync ,xtrabackup 。mysqldump,rsync同步需要READ LOCK, (SST applies FLUSH TABLES WITH READ LOCK command) xtrabackup 在整個同步數據過程中不需要READ LOCK。 配置參數:wsrep_sst_method=xtrabackup-v2UUID:節點狀態改變及順序的唯一標識GTID:Global Transaction ID,由UUID和sequence number偏移量組成。wsrep api中定義的集群內部全局事務id,用於記錄集群中發生狀態改變的唯一標識以及隊列中的偏移量。WSRWP API:在DBMS庫和wsrep provider之間提供接口 

PXC環境所涉及的埠:

#mysql實例埠:3306#PXC cluster相互通訊的埠:4567 #用於SST傳送的埠:4444 #用於IST傳送的埠:4568

1.有3個節點

pxc_node0 192.0.0.197 pxc_node1 192.0.0.198 pxc_node2 192.0.0.199 

2.防火牆設置

01關閉防火牆

# systemctl stop firewalld.service # systemctl disable firewalld.servie

02或開啟防火牆對應的埠:

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

開放完4個埠後,重新加載防火牆規則

firewall-cmd --reload 

3.關閉SELINUX ,安全增強型 Linux(Security-Enhanced Linux)SELinux主要由美國國家安全局開發

01執行命令 永久關閉Selinux

vi /etc/selinux/config 把SELINUX屬性值設置成disabled  

02或者執行命令 Linux臨時關閉Selinux

setenforce 0

4.下載安裝,在pxc_node0,pxc_node2,pxc_node2分別進行如下安裝 

基礎安裝[root@percona1 ~]# yum -y groupinstall Base Compatibility libraries Debugging Tools Dial-up Networking suppport Hardware monitoring utilities Performance Tools Development tools組件安裝[root@percona1 ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm -y[root@percona1 ~]# yum install Percona-XtraDB-Cluster-55 -y

5.停止mysql服務,選擇一個node作為名義上的master,只需要修改mysql的配置文件/etc/my.cnf(需要分別配置)

#PXC集群中MySQL實例的唯一ID,不能重複,必須是數字server-id=1 wsrep_provider=/usr/lib64/galera3/libgalera_smm.so#PXC集群的名稱wsrep_cluster_name=pxc-cluster wsrep_cluster_address=gcomm://192.0.0.197,192.0.0.198,192.0.0.199#當前節點的名稱wsrep_node_name=pxc1 #當前節點的IPwsrep_node_address=192.0.0.197 #同步方法(mysqldump、rsync、xtrabackup)wsrep_sst_method=xtrabackup-v2 #同步使用的帳戶wsrep_sst_auth= admin:Abc_123456 #同步嚴厲模式pxc_strict_mode=ENFORCING #基於ROW複製(安全可靠)binlog_format=ROW #默認引擎default_storage_engine=InnoDB #主鍵自增長不鎖表innodb_autoinc_lock_mode=2

6.啟動第一個節點

/etc/init.d/mysql bootstrap-pxc 如果是centos7,則啟動命令如下:systemctl start mysql@bootstrap.service若是重啟的話,就先kill,然後刪除pid文件後再執行上面的啟動命令

7.資料庫用戶名密碼的設置

mysql> UPDATE mysql.user SET password=PASSWORD("Passw0rd") where user='root'; 

8.配置SST認證帳號

mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 's3cret';mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';mysql> FLUSH PRIVILEGES;  

9.啟動其他節點

/etc/init.d/mysql start

各個節點都採用第一個修改的root密碼登錄

10.常用命令

查看節點數:

show global status like 'wsrep_cluster_size';  

查看集群狀態:

show global status like 'wsrep_cluster_size';

查看當前節點狀態:

show global status like 'wsrep_cluster_status';

通過查看4567 埠確認集群是否啟動:

netstat -plantu | grep mysqld 

集群關閉:所有節點都用

/etc/init.d/mysql stop

節點重啟第一個節點用:

/etc/init.d/mysql restart-bootstrap

其他節點用:

/etc/init.d/mysql restart

11.其他注意事項:

集群關閉之後,再啟動,誰做第一個節點誰就執行/etc/init.d/mysql bootstrap-pxc

如果最後關閉的PXC節點是安全退出的,那麼下次啟動要最先啟動這個節點,而且要以主節點啟動 如果最後關閉的PXC節點不是安全退出的,

那麼要先修改/var/lib/mysql/grastate.dat 文件, 把其中的safe_to_bootstrap屬性值設置為1, 再安裝主節點啟動。

除了名義上的master之外,其它的node節點只需要啟動mysql即可。

節點的資料庫的登陸和master節點的用戶名密碼一致,自動同步。所以其它的節點資料庫用戶名密碼無須重新設置。

只需要在名義上的master節點上設置權限,其它的節點配置好/etc/my.cnf後,只需要啟動mysql就行,權限會自動同步過來。

吉海波

相關焦點

  • 資料庫基礎:mysql主從集群搭建
    本文轉載自【微信公眾號:java架構師進階之路,ID:gh_a39b0d322dde】經微信公眾號授權轉載,如需轉載與原文作者聯繫前言:Mysql資料庫沒有增量備份的機制,當數據量太大的時候備份是一個很大的問題。還好mysql資料庫提供了一種主從備份的機制,其實就是把主資料庫的所有的數據同時寫到備份的資料庫中。實現mysql資料庫的熱備份。
  • MySQL系列二 - 搭建MySQL主從集群
    前面一章我們在centos上搭建好了MySQL資料庫,今天我們搭建一個主從同步的MySQL簡單集群。上一章是在虛擬機(192.168.64.123)上搭建的,我用的是vmware15虛擬機搭建的,今天在擴展一臺節點用於搭建主從集群,計劃 IP:192.168.64.123 虛擬機作為主節點,新建的虛擬機 IP:192.168.64.124 做為從節點。124的資料庫搭建什麼的參照上一章步驟執行就行。
  • 主從哨兵集群終於給你說明白了
    但是在真實的使用場景當中,如果真的只有一臺伺服器,並且恰好宕機了,那麼就會導致整個服務都不可用,因此redis提供了集群的方式來部署,可以避免這種問題。在主從複製這種集群部署模式中,我們會將資料庫分為兩類,第一種稱為主資料庫(master),另一種稱為從資料庫(slave)。主資料庫會負責我們整個系統中的讀寫操作,從資料庫會負責我們整個資料庫中的讀操作。
  • MySql DAL中間件總結
    本文不會去介紹mysql的高可用,需要了解Mysql高可用架構相關的請戳淺談MySQL集群高可用架構,本文主要介紹mysql的訪問中間件(DAL)的一些實現方案。應用程式把MySQL Router當作是普通的mysql實例,把查詢發給MySQL Router,而MySQL Router會把查詢結果返回給前端的應用程式。2.從資料庫伺服器故障,業務可以正常運行。由MySQL Router來進行自動下線不可用伺服器。程序配置不需要任何修改。3.主資料庫故障,由MySQL Router來決定主從自動切換,業務可以正常訪問。
  • 字節內部「MySQL性能優化寶典」意外流出!極致經典,堪稱資料庫的...
    主從複製是指數據可以從一個MySQL資料庫伺服器主節點複製到另外一個或多個MySQL資料庫伺服器從節點。主從複製可以用於數據實時備份、讀寫分離、高可用HA等企業場景中。    第8章 PXC高可用解決方案  PXC集群的優缺點
  • 郭憶:網易資料庫高可用架構最新進展!
    分享大綱:  1、資料庫高可用發展歷程  2、Aurora高可用架構設計  3、MGR高可用架構設計  4、網易多副本數據一致高可用架構設計  正文:  1、資料庫高可用發展歷程  首先我們先來簡單回顧一下資料庫高可用的發展歷程,最原始的資料庫高可用的做法是基於replication快速搭建主從複製架構。
  • 騰訊雲資料庫 MySQL 8.0上線 可應用至更多場景
    在當前新基建戰略推動下,政府、企業,組織機構加快了上雲的步伐,對雲服務的高並發、高性能、高可用、高安全等要求也越來越高。騰訊雲MySQL 8.0的內核可以百分百完全兼容主流MySQL分支。相比官方版本,無論是單機模式、異步模式還是同步模式,讀寫性能都取得了大幅提升,可以滿足絕大部分用戶的性能需求。
  • 高性能Mysql主從架構的複製原理及配置詳解
    mysql支持的複製類型:基於語句的複製:在主伺服器上執行的SQL語句,在從伺服器上執行同樣的語句。MySQL默認採用基於語句的複製,效率比較高。一旦發現沒法精確複製時, 會自動選著基於行的複製。基於行的複製:把改變的內容複製過去,而不是把命令在從伺服器上執行一遍.
  • 騰訊高工甩出MySQL速成手冊,基礎架構調優三飛
    MySQLMySQL作為目前最受歡迎的資料庫,一直以來就被很多的企業及開發者所青睞。它與其他資料庫相比,不僅易學易用而且擁有許多成熟的高可用架構方案!大勢所趨之下不管你是軟體開發和資料庫管理人員都必須要搞懂MySQL!
  • IPFS礦機服務商選擇螞蟻集群的六大理由
    對於所有看好Filecoin市場的投資者來說,在當前魚龍混雜的Filecoin市場中,選擇一家性價比高、技術過硬、市場口碑好、服務質量強的IPFS服務商顯然是非常有必要的;而作為分布式存儲專業解決方案提供商的螞蟻集群,又有哪些優勢和被選擇的理由呢?陝西螞蟻集群數字科技有限公司是一家專業分布式存儲解決方案提供商。
  • ...軟體集群產才融合推進工作方案 五大行動快培國家級軟體產業集群
    為深入推進科教與人才強省、製造強省發展戰略,全面落實「五堅持五提升」人才工作體系,創新產才融合協同推進工作機制,加快培育國家級軟體產業集群,9月7日,由江蘇省人才工作領導小組辦公室、江蘇省工業和信息化廳聯合制訂的《江蘇省軟體集群產才融合推進工作方案》在2020中國(南京)軟博會開幕式上正式發布。方案確立了主要任務、總體目標、五大行動以及保障措施四大內容。
  • 北京銀行明立松:探索NewSQL混合型金融資料庫的應用
    水平拓展實現主要有兩個方向,第一是在原有資料庫的基礎上實現分庫分表,基於資料庫中間件的可擴展性,從應用層面解決高並發問題。明立松表示,這樣的方式存在一定局限性。首先中間件解決方案會使SQL功能受到限制;其次,業務系統和資料庫會產生高耦合,帶來額外的複雜情況;另外,在極端情況下無法保證數據一致性;最後,這樣的資料庫結構必然會帶來極高的運維成本。
  • 【協作】集群的智慧
    這樣的事在大自然裡經常發生,但是沒人在實驗室誘發出這種轉變——至少在動物中沒有。1995年,一位名叫陶馬什·維切克的匈牙利物理學家和他的同事設計了一種模型,可以用減至最簡的條件來解釋集群行為:在一定的半徑範圍內,每個勻速移動的個體都與鄰近的個體進行方向匹配。如果這種假設中的集群行為被放大,就會由無序的群體轉化成有秩序的集群,就像庫贊的蝗蟲那樣。這是一種相變,就像水凝固成冰一樣。
  • 沙場秋點兵——MySQL容器化性能測試對比
    但是否能在容器環境裡運行資料庫應用,以及資料庫應用是否適合在容器裡運行,一直都是大家很關注的問題,今天我們就來深入分析一下容器環境運行MySQL資料庫的事。在容器中運行資料庫,能幫助用戶提高伺服器利用效率,降低基礎架構成本,更快速地部署、更便捷地管理資料庫服務。
  • 基於代理的資料庫分庫分表框架 Mycat實踐
    環境規劃在本文中,我拿出了三臺 Linux主機投入試驗,各節點的角色分配如下表所示:如果說上面這張表不足以說明實驗模型,那接下來再給一張圖好了,如下所示:我想這樣看來的話,各個節點布了哪些組件,節點間的角色關係應該一目了然了吧實驗環境規劃好了以後,接下來進行具體的部署與實驗過程,首先當然是 MyCAT代理的部署MyCAT
  • 光大銀行分布式實戰:國內最大繳費平臺的資料庫架構轉型
    這些工具有沒有、高不高效,就決定了運維的工作能不能更好的開展。 所以,分布式資料庫其實就是將傳統資料庫的各技術組件通過鬆耦合的方式部署,通過網絡之間,會有一個相互的協同工作,達到分散壓力,提升總體處理能力的目的。也就是把我原來的瓶頸打散了。
  • Python連接MySQL資料庫方法介紹(超詳細!手把手項目案例操作)
    作者 | CDA數據分析師 來源 | CDA數據分析研究院本文涉及到的開發環境:作業系統 Windows 10資料庫 MySQL 8.0Python 3.7.2pip 19.0.3兩種方法進行資料庫的連接分別是PyMySQL和mysql.connector步驟:連接資料庫生成遊標對象執行SQL語句關閉遊標關閉連接PyMySQL
  • 螞蟻集群攜手雲貿盛世共創, 未來聚合領域力量打造新銳品牌
    雲貿盛世作為一家高科技企業,是基於區塊鏈3.0、雲計算、大數據、物聯網、人工智慧、移動互聯等技術構建的電商應用與服務平臺,平臺適用於不同層次、類型、規模的企業,為企業提供研發、營銷、運營、質量、售後等服務,助力為企業打造聯盟生態;搭建分布式存儲價值生態鏈