PerconaXtraDBCluster規(guī)劃實(shí)施

##搭建集群的時候要學(xué)會看日志,日志很重要的,日志真的很重要

一、準(zhǔn)備工作

1.1、服務(wù)器配置

主機(jī)名

創(chuàng)新互聯(lián)公司是專業(yè)的渾南網(wǎng)站建設(shè)公司,渾南接單;提供網(wǎng)站設(shè)計制作、成都做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行渾南網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!

IP地址



Pxc01

192.168.1.17



Pxc02

192.168.1.18



Pxc03

192.168.1.19



 源碼軟件包下載:http://down.51cto.com/data/2330430

1.2、環(huán)境配置

注:不能用oracle的MySQL進(jìn)行編譯安裝,因為mysql GPL不識別 pxc的相關(guān)參數(shù)。

安裝pxc環(huán)境需要用到以下安裝包:

  • percona xtaDB cluster  ----percona mysql 數(shù)據(jù)庫

  • percona xtracebackup   ----備份恢復(fù)工具

備注:

Percona-XtraDB-Cluster-5.6.28-rel76.1-25.14.1.Linux.x86_64.ssl100.tar.gz–已經(jīng)編譯的安裝包,解壓完成后只需要執(zhí)行scripts中的mysql_install_db初始化數(shù)據(jù)庫即可。

percona-xtradb-cluster-5.6_5.6.28-25.14.orig.tar.gz–原始安裝包,需要使用cmake編譯安裝

 

1.3、名詞解釋

名詞:

    WS:write set 寫數(shù)據(jù)集

    IST: Incremental State Transfer 增量同步

    SST:State Snapshot Transfer 全量同步

    UUID:節(jié)點(diǎn)狀態(tài)改變及順序的唯一標(biāo)識。

    GTID:Global Transaction ID ,由UUID和偏移量組成。wsrep api 中定義的集群內(nèi)全局事務(wù)id。

 

1.4、PXC原理

pxc是基于驗證的數(shù)據(jù)強(qiáng)一致性數(shù)據(jù)復(fù)制的mysql集群,特性分析:

優(yōu)點(diǎn):

       1.高可用性,節(jié)點(diǎn)不可用不影響集群正常運(yùn)行。

       2.強(qiáng)一致性,可以將讀擴(kuò)展到多個節(jié)點(diǎn)上。    

       3. 節(jié)點(diǎn)的增加數(shù)據(jù)同步自動化(IST,SST)。

       4. 可實(shí)現(xiàn)多點(diǎn)讀寫,但寫壓力仍要同步到所有節(jié)點(diǎn)。

缺點(diǎn):

        1.由于ddl需全局驗證通過,則集群性能由集群中最差性能節(jié)點(diǎn)決定。

        2.為保證一致性,galera 總是優(yōu)先保證數(shù)據(jù)一致性,在多點(diǎn)并發(fā)寫時,鎖沖突問題嚴(yán)重

        3.新節(jié)點(diǎn)加入或延后較大的節(jié)點(diǎn)重新加入需全量拷貝數(shù)據(jù)(sst),作為donor的節(jié)點(diǎn)在同步過程中無法提供讀寫

        4.數(shù)據(jù)冗余度為節(jié)點(diǎn)數(shù)

1.5、PXC工作原理

節(jié)點(diǎn)接收sql 請求后,對于ddl 操作,在commit之前,由wsrep API 調(diào)用galera 庫進(jìn)行集群內(nèi)廣播,所有其他節(jié)點(diǎn)驗證成功后事務(wù)在集群所有節(jié)點(diǎn)進(jìn)行提交,反之roll back。pxc 保證整個集群所有數(shù)據(jù)的強(qiáng)一致性,滿足CAP理論中滿足:Consistency 和  Availability。

  • WSREP API:

1):在DBMS和wsrep provider 之間提供接口。

2):GTID:Global Transaction ID. 由UUID 和 sequence number組成,用于標(biāo)示集群中發(fā)生狀態(tài)改變的唯一標(biāo)示以及隊列中的偏移量。

  • Galera wsrep provider:

1):完成事務(wù)在集群內(nèi)的廣播:本地事務(wù)發(fā)送給其他節(jié)點(diǎn)驗證,接收其他節(jié)點(diǎn)事件本地驗證并返回結(jié)果

2):應(yīng)用從其他節(jié)點(diǎn)接收并全局驗證通過的事件到本地。

3):集群內(nèi)通信,節(jié)點(diǎn)存活的檢測,pc的選舉等

4):腦裂,為避免節(jié)點(diǎn)失效導(dǎo)致pc選舉失敗整個集群不可用,建議節(jié)點(diǎn)數(shù)至少為3

5):多點(diǎn)寫入時的鎖沖突檢測機(jī)制

6):等待隊列中事務(wù)的并發(fā)提交

Percona XtraDB Cluster規(guī)劃實(shí)施

galera的group communication 層實(shí)現(xiàn)統(tǒng)一全局?jǐn)?shù)據(jù)同步策略和集群內(nèi)所有事務(wù)的排序,便于生成GTID。

對于每一個節(jié)點(diǎn)有2方面工作:

(1)、完成數(shù)據(jù)同步。

(2)、完成與其他節(jié)點(diǎn)的通信。

    galera 的replication 層完成數(shù)據(jù)同步,由slavequeue 和applier組成,在事務(wù)的同步過程中,事務(wù)在隊列中以及應(yīng)用線程中時于節(jié)點(diǎn)本地產(chǎn)生鎖沖突處理方式。replication 模塊的效率直接影響整個集群的寫入性能。

同步過程中,本地事務(wù)和等待隊列中的鎖沖突:

     innodb內(nèi)部使用悲觀鎖,保證事務(wù)的成功進(jìn)行和提交。pxc中使用樂觀鎖,以避免在每個節(jié)點(diǎn)獲取鎖以及網(wǎng)路開銷,在寫入節(jié)點(diǎn)上,事務(wù)在提交之前與單點(diǎn)的innodb一樣,到達(dá)提交點(diǎn)時,向集群其他節(jié)點(diǎn)廣播(galera庫完成 并發(fā))事物并等待各節(jié)點(diǎn)驗證結(jié)果,如果所有節(jié)點(diǎn)都返回成功,則提交,反之,回滾。

     pxc 中先提交的事物成功,其他事務(wù)(本地或其他節(jié)點(diǎn)同步)將回滾或報死鎖錯誤。

相關(guān)狀態(tài)值:

wsrep_local_cert_failures  同步過程中節(jié)點(diǎn)認(rèn)證失敗計數(shù),沖突來自本地提交的事務(wù)和同步隊列中事務(wù)存在鎖沖突,則本地驗證失敗(保證全局?jǐn)?shù)據(jù)一致性)

wsrep_local_bf_aborts  強(qiáng)制放棄,本地事務(wù)和同步隊列中正在執(zhí)行的事務(wù)存在鎖沖突時,將強(qiáng)制保證先提交的事務(wù)成功,后者回滾活報錯

驗證模塊:

Percona XtraDB Cluster規(guī)劃實(shí)施

驗證過程中,節(jié)點(diǎn)在接收到其他節(jié)點(diǎn)writeset后,在本地做沖突驗證并返回驗證結(jié)果。

1.6、PXC狀態(tài)說明

     1.OPEN:節(jié)點(diǎn)啟動成功,嘗試連接到集群,如果失敗則根據(jù)配置退出或創(chuàng)建新的集群

     2.PRIMARY:節(jié)點(diǎn)處于集群PC中,嘗試從集群中選取donor進(jìn)行數(shù)據(jù)同步

     3.JOINER:節(jié)點(diǎn)處于等待接收/接收數(shù)據(jù)文件狀態(tài),數(shù)據(jù)傳輸完成后在本地加載數(shù)據(jù)

     4.JOINED:節(jié)點(diǎn)完成數(shù)據(jù)同步工作,嘗試保持和集群進(jìn)度一致

     5.SYNCED:節(jié)點(diǎn)正常提供服務(wù):數(shù)據(jù)的讀寫,集群數(shù)據(jù)的同步,新加入節(jié)點(diǎn)的sst請求

     6.DONOR:節(jié)點(diǎn)處于為新節(jié)點(diǎn)準(zhǔn)備或傳輸集群全量數(shù)據(jù)狀態(tài),對客戶端不可用。

狀態(tài)機(jī)變化因素:

     1.新節(jié)點(diǎn)加入集群

     2.節(jié)點(diǎn)故障恢復(fù)

     3.節(jié)點(diǎn)同步實(shí)效

 

監(jiān)控狀態(tài)說明:

(1)集群完整性檢查:

wsrep_cluster_state_uuid:在集群所有節(jié)點(diǎn)的值應(yīng)該是相同的,有不同值的節(jié)點(diǎn),說明其沒有連接入集群.

wsrep_cluster_conf_id:正常情況下所有節(jié)點(diǎn)上該值是一樣的.如果值不同,說明該節(jié)點(diǎn)被臨時”分區(qū)”了.當(dāng)節(jié)點(diǎn)之間網(wǎng)絡(luò)連接恢復(fù)的時候應(yīng)該會恢復(fù)一樣的值.

wsrep_cluster_size:如果這個值跟預(yù)期的節(jié)點(diǎn)數(shù)一致,則所有的集群節(jié)點(diǎn)已經(jīng)連接.

wsrep_cluster_status:集群組成的狀態(tài).如果不為”Primary”,說明出現(xiàn)”分區(qū)”或是”split-brain”狀況.

 

(2)節(jié)點(diǎn)狀態(tài)檢查:

wsrep_ready:該值為ON,則說明可以接受SQL負(fù)載.如果為Off,則需要檢查wsrep_connected.

wsrep_connected:如果該值為Off,且wsrep_ready的值也為Off,則說明該節(jié)點(diǎn)沒有連接到集群.(可能是wsrep_cluster_address或wsrep_cluster_name等配置錯造成的.具體錯誤需要查看錯誤日志)

wsrep_local_state_comment:如果wsrep_connected為On,但wsrep_ready為OFF,則可以從該項查看原因.

 

狀態(tài)變化階段:
    1.OPEN:節(jié)點(diǎn)啟動成功,嘗試連接到集群,如果失敗則根據(jù)配置退出或創(chuàng)建新的集群
    2.PRIMARY:節(jié)點(diǎn)處于集群PC中,嘗試從集群中選取donor進(jìn)行數(shù)據(jù)同步
    3.JOINER:節(jié)點(diǎn)處于等待接收/接收數(shù)據(jù)文件狀態(tài),數(shù)據(jù)傳輸完成后在本地加載數(shù)據(jù)
    4.JOINED:節(jié)點(diǎn)完成數(shù)據(jù)同步工作,嘗試保持和集群進(jìn)度一致
    5.SYNCED:節(jié)點(diǎn)正常提供服務(wù):數(shù)據(jù)的讀寫,集群數(shù)據(jù)的同步,新加入節(jié)點(diǎn)的sst請求
    6.DONOR(貢獻(xiàn)數(shù)據(jù)者):節(jié)點(diǎn)處于為新節(jié)點(diǎn)準(zhǔn)備或傳輸集群全量數(shù)據(jù)狀態(tài),對客戶端不可用。

 

當(dāng)其中一個節(jié)點(diǎn)停機(jī)重啟后,通過IST來同步增量數(shù)據(jù),來完成保證與另外兩個節(jié)點(diǎn)的數(shù)據(jù)一致,IST的實(shí)現(xiàn)是由wsrep_provider_options="gcache.size=1G"參數(shù)決定,一般設(shè)置為1G大小,參數(shù)大小是由什么決定的,根據(jù)停機(jī)時間,若停機(jī)一小時,需要確認(rèn)1小時內(nèi)產(chǎn)生多大的binlog來算出參數(shù)大小。假設(shè)我們?nèi)齻€節(jié)點(diǎn)都關(guān)閉了,會發(fā)生什么呢,全部傳SST,因為gcache數(shù)據(jù)沒了。

 

全部關(guān)閉需要采用滾動關(guān)閉方式:

1、關(guān)閉node1,修復(fù)完后,啟動加回來;

2、關(guān)閉node2,修復(fù)完后,啟動加回來;

3、直到最后一個節(jié)點(diǎn)

4、原則要保持Group里最少一個成員活著

 

數(shù)據(jù)庫關(guān)閉之后,最會保存一個last Txid,所以啟動時,先要啟動最后一個關(guān)閉的節(jié)點(diǎn),啟動順序和關(guān)閉順序剛好相反。

wsrep_recover=on參數(shù)在啟動時加入,用于從log中分析gtid。

怎樣避免關(guān)閉和啟動時數(shù)據(jù)丟失?

1、所有的節(jié)點(diǎn)中最少有一個在線,進(jìn)行滾動重啟;

2、利用主從的概念,把一個從節(jié)點(diǎn)轉(zhuǎn)化成PXC里的節(jié)點(diǎn)。

 

 

(3)復(fù)制健康檢查:

wsrep_flow_control_paused:表示復(fù)制停止了多長時間.即表明集群因為Slave延遲而慢的程度.值為0~1,越靠近0越好,值為1表示復(fù)制完全停止.可優(yōu)化wsrep_slave_threads的值來改善.

如果主節(jié)點(diǎn)寫入過大,怎么處理? Wsrep_slave_threads參數(shù)配置成cpu的個數(shù)相等或是1.5倍。

wsrep_cert_deps_distance:有多少事務(wù)可以并行應(yīng)用處理.wsrep_slave_threads設(shè)置的值不應(yīng)該高出該值太多.

wsrep_flow_control_sent:表示該節(jié)點(diǎn)已經(jīng)停止復(fù)制了多少次.

wsrep_local_recv_queue_avg:表示slave事務(wù)隊列的平均長度.slave瓶頸的預(yù)兆.

最慢的節(jié)點(diǎn)的wsrep_flow_control_sent和wsrep_local_recv_queue_avg這兩個值最高.這兩個值較低的話,相對更好.

 

(4)檢測慢網(wǎng)絡(luò)問題:

wsrep_local_send_queue_avg:網(wǎng)絡(luò)瓶頸的預(yù)兆.如果這個值比較高的話,可能存在網(wǎng)絡(luò)瓶

沖突或死鎖的數(shù)目:

wsrep_last_committed:最后提交的事務(wù)數(shù)目

wsrep_local_cert_failures和wsrep_local_bf_aborts:回滾,檢測到的沖突數(shù)目

 

三.  pxc注意的問題

1、腦裂

任何命令執(zhí)行出現(xiàn)unkown command ,表示出現(xiàn)腦裂,集群兩節(jié)點(diǎn)間4567端口連不通,無法提供對外服務(wù)。

SET GLOBAL wsrep_provider_options="pc.ignore_sb=true"; 

2、并發(fā)寫

三個節(jié)點(diǎn)的自增起始值為1、2、3,步長都為3,解決了insert問題,但update同時對一行操作就會有問題,出現(xiàn):Error: 1213  SQLSTATE: 40001,所以更新和寫入在一個節(jié)點(diǎn)上操作。

3、DDL

引起全局鎖,采用:pt-online-schema-change 

4、MyISAM引擎不能被復(fù)制,只支持innodb

5、pxc結(jié)構(gòu)里面必須有主鍵

如果沒有主建,有可能會造成集中每個節(jié)點(diǎn)的Data page里的數(shù)據(jù)不一樣

6、不支持表級鎖

不支持lock /unlock tables 

7、pxc里只能把slow log ,query log 放到File里

8、不支持XA事務(wù)

9、性能由集群中性能最差的節(jié)點(diǎn)決定

 

1.7、PXC優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

    (1).同步復(fù)制 Synchronous replication

    (2).Active-active multi-master 拓?fù)溥壿?/p>

    (3).可對集群中任一節(jié)點(diǎn)進(jìn)行數(shù)據(jù)讀寫

    (4).自動成員控制,故障節(jié)點(diǎn)自動從集群中移除

    (5).自動節(jié)點(diǎn)加入

    (6).真正并行的復(fù)制,基于行級

    (7).直接客戶端連接,原生的 MySQL 接口

    (8).每個節(jié)點(diǎn)都包含完整的數(shù)據(jù)副本

    (9).多臺數(shù)據(jù)庫中數(shù)據(jù)同步由 wsrep 接口實(shí)現(xiàn)

 

    缺點(diǎn):

(1).目前的復(fù)制僅僅支持InnoDB存儲引擎,任何寫入其他引擎的表,包括mysql.*表將不會復(fù)制,但是DDL語句會被復(fù)制的,因此創(chuàng)建用戶將會被復(fù)制,但是insert into mysql.user…將不會被復(fù)制的        

(2).DELETE操作不支持沒有主鍵的表,沒有主鍵的表在不同的節(jié)點(diǎn)順序?qū)⒉煌?如果執(zhí)行SELECT…LIMIT… 將出現(xiàn)不同的結(jié)果集

    (3).在多主環(huán)境下LOCK/UNLOCK TABLES不支持,以及鎖函數(shù)GET_LOCK(), RELEASE_LOCK()…

    (4).查詢?nèi)罩静荒鼙4嬖诒碇?。如果開啟查詢?nèi)罩?,只能保存到文件?/p>

    (5).允許最大的事務(wù)大小由wsrep_max_ws_rows和wsrep_max_ws_size定義。任何大型操作將被拒絕。如大型的LOAD DATA操作

    (6).由于集群是樂觀的并發(fā)控制,事務(wù)commit可能在該階段中止。如果有兩個事務(wù)向在集群中不同的節(jié)點(diǎn)向同一行寫入并提交,失敗的節(jié)點(diǎn)將中止。對于集群級別的中止,集群返回死鎖錯誤代碼(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK))

    (7).XA事務(wù)不支持,由于在提交上可能回滾

    (8).整個集群的寫入吞吐量是由最弱的節(jié)點(diǎn)限制,如果有一個節(jié)點(diǎn)變得緩慢,那么整個集群將是緩慢的。為了穩(wěn)定的高性能要求,所有的節(jié)點(diǎn)應(yīng)使用統(tǒng)一的硬件

    (9).集群節(jié)點(diǎn)建議最少3個

    (10).如果DDL語句有問題將破壞集群。

二、二進(jìn)制包安裝percona mysql

二進(jìn)制安裝過程略:

編輯my.cnf文件

[root@PXC01 Percona-XtraDB-Cluster-5.6.28-76.1]#vi /etc/my.cnf

[mysqld]

basedir = /usr/local/mysql

datadir = /data/mysql

port = 3306

server_id = 3

socket = /tmp/mysql.sock

pid-file = /tmp/mysql.pid

 

# replication settings #

sync_binlog=0

binlog_format=row

 

# log settings #

log-error = /data/log/3306.err

log-bin=/data/binlog/mysql-bin

 

# connection #

interactive_timeout = 1800

wait_timeout = 1800

lock_wait_timeout = 1800

skip_name_resolve = 1

max_connections = 2000

max_connect_errors = 1000000

 

default-storage-engine=INNODB

skip-name-resolve

skip-host-cache

explicit_defaults_for_timestamp

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER

expire_logs_days = 7

collation_server=utf8_general_ci

init_connect='SET NAMES utf8'

transaction_isolation = READ-COMMITTED

max_allowed_packet = 16M

max_heap_table_size = 64M

 

# session memory settings #

sort_buffer_size = 33M

join_buffer_size = 134M

query_cache_size = 0

query_cache_limit = 0

read_buffer_size= 8M

 

# table cache performance settings

table_open_cache = 4096

table_definition_cache = 4096

table_open_cache_instances = 64

 

# innodb settings #

innodb_undo_directory = /data/undolog/

innodb_undo_logs = 128

innodb_undo_tablespaces = 3

innodb_buffer_pool_instances = 8

innodb_online_alter_log_max_size=1G

innodb_data_file_path = ibdata1:1G:autoextend

innodb_buffer_pool_size = 20G

innodb_file_per_table = 1

innodb_flush_method = O_DIRECT

innodb_flush_log_at_trx_commit = 2

innodb_log_buffer_size = 64M

innodb_log_file_size = 256M

innodb_log_files_in_group = 3

innodb_io_capacity = 600

innodb_max_dirty_pages_pct = 80

innodb_autoinc_lock_mode=2

#innodb_locks_unsafe_for_binlog=1

#innodb_doublewrite=0

innodb_open_files = 4096

innodb_page_size = 16k

innodb_purge_threads=4

innodb_large_prefix = 1

innodb_thread_concurrency = 64

innodb_print_all_deadlocks = 1

innodb_strict_mode = 1

innodb_sort_buffer_size = 60M

innodb_online_alter_log_max_size=1G

2.1、初始化數(shù)據(jù)庫

標(biāo)注:

作為primary節(jié)點(diǎn)的數(shù)據(jù)庫需要初始化數(shù)據(jù)庫,作為從節(jié)點(diǎn)就不需要初始化數(shù)據(jù)庫,只需要直接啟動數(shù)據(jù)庫,從節(jié)點(diǎn)會自動從primary節(jié)點(diǎn)拷貝數(shù)據(jù)到存放數(shù)據(jù)文件的位置。

2.1.2、源碼安裝xtrabackup
2.1.2.1、安裝依賴包

[root@PXC01 opt]#yum -y install perl-DBI perl-DBD-MySQLperl-Time-HiRes perl-IO-Socket-SSL libev libgcrypt-devel libcurl-devel crypt* libgcrypt*imake libxml2-devel expat-devel git bzip2* python-sphinx* cryptopp* ncurses* perl-TermReadKey*tcp_wrappers* libev-devel

2.1.2.2、編譯xtrabackup

注意:sphinx,lzlib,libev動態(tài)庫需要手動下載,編譯安裝,下載地址如下:

http://software.schmorp.de/pkg/libev.html

http://download.savannah.gnu.org/releases/lzip/lzlib/

http://sphinxsearch.com

http://www.dest-unreach.org/socat/

 

 

2.1.2.2.1、安裝socat

 [root@pxc02opt]# tar -zxvf socat-2.0.0-b9.tar.gz -C /usr/local

[root@pxc02 opt]# cd /usr/local/socat-2.0.0-b9

[root@pxc02 socat-2.0.0-b9]# ./configure

[root@pxc02 socat-2.0.0-b9]# make

[root@pxc02 socat-2.0.0-b9]# make install

[root@pxc02 socat-2.0.0-b9]# ln -s /usr/local/bin/socat /usr/bin/

 

2.1.2.2.2、安裝libev

[root@PXC01 opt]# tar -zxvf libev-4.22.tar.gz -C /usr/local

[root@PXC01 libev-4.22]# chmod 755 ./*

[root@PXC01 libev-4.22]# ./configure

[root@PXC01 libev-4.22]# make

[root@PXC01 libev-4.22]# make install

 

2.1.2.2.3、安裝lzlib

[root@PXC01 opt]# tar -zxvf lzlib-1.7.tar.gz -C /usr/local

[root@PXC01 opt]# cd /usr/local/lzlib-1.7/

[root@PXC01 lzlib-1.8-rc3]#./configure

[root@PXC01 lzlib-1.8-rc3]# make

[root@PXC01 lzlib-1.8-rc3]# make install

2.1.2.2.4、安裝sphinx

[root@PXC01 opt]# tar -zxvf sphinx-2.2.8-release.tar.gz -C /usr/local

[root@PXC01 local]# cd /usr/localsphinx-2.2.8-release/

[root@PXC01sphinx-2.2.8-release]# ./configure--prefix=/usr/local/sphinx/  --with-mysql  --enable-id64

 

注意:

如果mysql沒有安裝到/usr/local/下,使用一下命令:

 ./configure--prefix=/usr/local/sphinx/ --with-mysql=/mysoft  --with-mysql-includes=/mysoft/include--enable-id64

 

 

[root@PXC01sphinx-2.2.8-release]#make

[root@PXC01sphinx-2.2.8-release]#make install

 

2.1.2.2.5、安裝xtrabackup

[root@PXC01 opt]# tar -zxvfpercona-xtrabackup_2.3.4.orig.tar.gz

[root@PXC01 opt]#cd percona-xtrabackup-2.3.4

[root@PXC01percona-xtrabackup-2.3.4]# cmake -DBUILD_CONFIG=xtrabackup_release-DWITH_MAN_PAGES=OFF

[root@PXC01percona-xtrabackup-2.3.4]#make

[root@PXC01percona-xtrabackup-2.3.4]#make install

 

 

 

 

默認(rèn)安裝到/usr/local/xtrabackup

 

注意:如果編譯安裝出錯、需要重新安裝需要清除舊的對象和緩存信息

make clean

rm -fCMakeCache.txt

 

重新安裝需要xtrabackup

rm -rf /usr/bin/innobackupex

rm -rf /usr/bin/xtrabackup

Percona XtraDB Cluster規(guī)劃實(shí)施

在編譯時可以添加如下兩個參數(shù):

-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local

2.1.2.5.1、建立軟連接

[root@PXC01xtrabackup]#ln -s/usr/local/xtrabackup/bin/innobackupex /usr/bin/innobackupex

[root@PXC01xtrabackup]#ln -s/usr/local/xtrabackup/bin/xbcrypt /usr/bin/xbcrypt

[root@PXC01xtrabackup]#ln -s/usr/local/xtrabackup/bin/xbstream /usr/bin/xbstream

[root@PXC01xtrabackup]#ln -s /usr/local/xtrabackup/bin/xtrabackup/usr/bin/xtrabackup

[root@PXC01xtrabackup]#ln -s/usr/local/xtrabackup/bin/xbcloud_osenv /usr/bin/xbcloud_osenv

[root@PXC01 xtrabackup]#ln -s /usr/local/xtrabackup/bin/xbcloud/usr/bin/xbcloud

 

 

ln -s/usr/local/xtrabackup/bin/innobackupex /usr/bin/innobackupex

ln -s /usr/local/xtrabackup/bin/xbcrypt /usr/bin/xbcrypt

ln -s /usr/local/xtrabackup/bin/xbstream /usr/bin/xbstream

ln -s /usr/local/xtrabackup/bin/xbcloud_osenv/usr/bin/xbcloud_osenv

ln -s /usr/local/xtrabackup/bin/xbcloud/usr/bin/xbcloud

ln –s /usr/local/xtrabackup/bin/xtrabackup/usr/bin/xtrabackup

   

2.1.2.5.2、驗證xtrabackup

[root@PXC01 xtrabackup]# xtrabackup-version

xtrabackup version 2.3.4 based on MySQLserver 5.6.24 Linux (x86_64) (revision id: e80c779)

 

2.1.3、安裝galera
2.1.3.1、編譯galera

[root@pxc01 opt]#tar –zxvf /opt/ galera-3-25.3.16.tar.gz–C /usr/local

[root@pxc01 opt]# cd/usr/local/galera-3-25.3.16/

[root@pxc01 galera-3-25.3.16]#cd scripts

[root@pxc01 galera-3-25.3.16]#./build.sh

[root@PXC01 galera-3-25.3.16]# cplibgalera_smm.so/usr/lib64

[root@PXC01 galera-3-25.3.16]# chmod +x libgalera_smm.so

執(zhí)行上面腳本./build.sh時報錯解決如:

Percona XtraDB Cluster規(guī)劃實(shí)施

yum install boost* openssl* check* -y
yum -y install gcc

yum -y install scons  

然后可以不執(zhí)行腳本執(zhí)行scons進(jìn)行編譯即可:

[root@pxc01 opt]# cd/usr/local/galera-3-25.3.16/

#scons

可以以正常模式啟動主節(jié)點(diǎn)mysql(/usr/local/mysql/bin/mysqld_safe--wsrep_cluster_address=gcomm://>/dev/null &)

2.2、從節(jié)點(diǎn)安裝

其余2個節(jié)點(diǎn)按照主節(jié)點(diǎn)步驟安裝,

從節(jié)點(diǎn)安裝完mysql以后不需要初始化數(shù)據(jù),可以直接啟動mysql,mysql啟動以后會自動加入到集群節(jié)點(diǎn),并從主節(jié)點(diǎn)拷貝數(shù)據(jù)文件到存放數(shù)據(jù)文件的位置。

chown -R mysql.mysql /usr/local/mysql/

從節(jié)點(diǎn)啟動:

/usr/local/mysql/bin/mysqld_safe--wsrep_cluster_address=gcomm://192.168.20.11:4567>/dev/null&

 

/usr/local/mysql/bin/mysqld_safe--wsrep_cluster_address=gcomm://192.168.20.22:4567 >/dev/null & 

四、配置PXC集群

4.1、添加PXC參數(shù)

4.1.1、添加集群復(fù)制賬號

[mysql@VM-172-31-102-133 ~]#mysql

mysql>GRANT PROCESS, RELOAD, LOCKTABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost' identified by'sstuser';

mysql>FLUSH PRIVILEGES;

 

4.1.2、編輯my.cnf文件

編輯my.cnf文件,添加以下參數(shù):

 

server-id = 1

# Path to Galera library

wsrep_provider=/usr/lib64/libgalera_smm.so   ---注意編譯galera軟件時的存放目錄

 

# Cluster connection URL contains the IPsof node#1, node#2 and node#3

wsrep_cluster_address=gcomm://172.31.102.133,172.31.102.139,172.31.102.167  --節(jié)點(diǎn)IP地址,不添加端口會使用默認(rèn)端口

 

# In order for Galera to work correctlybinlog format should be ROW

binlog_format=ROW

 

# MyISAM storage engine has onlyexperimental support

default_storage_engine=InnoDB

 

# This changes how InnoDB autoincrementlocks are managed and is a requirement for Galera

innodb_autoinc_lock_mode=2

 

# Node #1 address

wsrep_node_address=172.31.102.133   ---主機(jī)IP

 

# SST method

wsrep_sst_method=xtrabackup-v2

 

# Cluster name

wsrep_cluster_name=my_centos_cluster

 

# Authentication for SST method

wsrep_sst_auth="sstuser:s3cret"

 

[root@pxc01 ]#cat /etc/my.cnf

[mysqld]

basedir = /usr/local/mysql

datadir = /data/mysql

port = 3306

server-id = 238

#socket = /data/mysql/mysql.sock

pid-file = /tmp/mysql.pid

 

# replication settings #

sync_binlog = 0

binlog_format = row

 

# log settings #

log-error = /data/log/3306.err

log-bin=/data/binlog/mysql-bin

 

# connection #

interactive_timeout = 1800

wait_timeout = 1800

lock_wait_timeout = 1800

skip_name_resolve = 1

max_connections = 2000

max_connect_errors = 1000000

 

default-storage-engine = innodb

skip-name-resolve

skip-host-cache

explicit_defaults_for_timestamp

sql_mode =STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER

expire_logs_days = 7

collation_server=utf8_general_ci

init_connect='SET NAMES utf8'

transaction_isolation = READ-COMMITTED

max_allowed_packet = 16M

max_heap_table_size = 64M

 

# session memory settings #

sort_buffer_size = 33M

join_buffer_size = 134M

query_cache_size = 0

query_cache_limit = 0

read_buffer_size= 8M

 

# table cache performance settings

table_open_cache = 4096

table_definition_cache = 4096

table_open_cache_instances = 64

 

# innodb settings #

innodb_undo_directory = /data/undolog/

innodb_undo_logs = 128

innodb_undo_tablespaces = 3

innodb_buffer_pool_instances = 8

innodb_online_alter_log_max_size = 1G

innodb_data_file_path = ibdata1:1G:autoextend

innodb_buffer_pool_size = 12G

innodb_file_per_table = 1

innodb_flush_method = O_DIRECT

innodb_flush_log_at_trx_commit = 2

innodb_log_buffer_size = 64M

innodb_log_file_size = 256M

innodb_log_files_in_group = 3

innodb_io_capacity = 600

innodb_max_dirty_pages_pct = 75

innodb_autoinc_lock_mode = 2

innodb_locks_unsafe_for_binlog = 1

innodb_doublewrite = 0

innodb_open_files = 4096

innodb_page_size = 16k

innodb_purge_threads = 4

innodb_large_prefix = 1

innodb_thread_concurrency = 64

innodb_print_all_deadlocks = 1

innodb_strict_mode = 1

innodb_sort_buffer_size = 60M

innodb_online_alter_log_max_size = 1G

 

# wsrep settings #

wsrep_provider=/usr/lib64/libgalera_smm.so

wsrep_cluster_address=gcomm://192.168.10.238,192.168.10.239,192.168.10.240

wsrep_sst_auth=sstuser:sstuser

wsrep_provider_options="gcache.size=2G"

wsrep_cluster_name=Percona_cluster

wsrep_sst_method=xtrabackup-v2

wsrep_node_address=192.168.10.238

wsrep_node_name=pxc01

wsrep_slave_threads=8

4.1.3、啟動mysql

以PXC(初始化)模式啟動mysql,只有主節(jié)點(diǎn)可以這么啟動,從節(jié)點(diǎn)必須按照正常啟動方式啟動mysql

[mysql@VM-172-31-102-133 ~]#/etc/init.d/mysqldbootstrap-pxc

Bootstrapping PXC (Percona XtraDBCluster)Starting MySQL (Percona XtraDB Cluster). SUCCESS!

 

 

 

4.1.3、配置第二個節(jié)點(diǎn)

server-id = 2

配置my.cnf文件,添加以下參數(shù):

# Path to Galera library

wsrep_provider=/usr/lib64/libgalera_smm.so

 

# Cluster connection URL contains the IPsof node#1, node#2 and node#3

wsrep_cluster_address=gcomm://172.31.102.133,172.31.102.139,172.31.102.167

 

# In order for Galera to work correctlybinlog format should be ROW

binlog_format=ROW

 

# MyISAM storage engine has onlyexperimental support

default_storage_engine=InnoDB

 

# This changes how InnoDB autoincrementlocks are managed and is a requirement for Galera

innodb_autoinc_lock_mode=2

 

# Node #1 address

wsrep_node_address=172.31.102.139

 

# SST method

wsrep_sst_method=xtrabackup-v2

 

# Cluster name

wsrep_cluster_name=my_centos_cluster

 

# Authentication for SST method

wsrep_sst_auth="sstuser:s3cret"

 

4.1.4、配置第三個節(jié)點(diǎn)

server-id = 3

配置my.cnf文件,添加以下參數(shù):

# Path to Galera library

wsrep_provider=/usr/lib64/libgalera_smm.so

 

# Cluster connection URL contains the IPsof node#1, node#2 and node#3

wsrep_cluster_address=gcomm://172.31.102.133,172.31.102.139,172.31.102.167

 

# In order for Galera to work correctlybinlog format should be ROW

binlog_format=ROW

 

# MyISAM storage engine has onlyexperimental support

default_storage_engine=InnoDB

 

# This changes how InnoDB autoincrementlocks are managed and is a requirement for Galera

innodb_autoinc_lock_mode=2

 

# Node #1 address

wsrep_node_address=172.31.102.167

 

# SST method

wsrep_sst_method=xtrabackup-v2

 

# Cluster name

wsrep_cluster_name=my_centos_cluster

 

# Authentication for SST method

wsrep_sst_auth="sstuser:s3cret"

 

4.1.4、啟動從節(jié)點(diǎn)mysql

以次下列命令啟動

Service mysql start

查看日志:

分享文章:PerconaXtraDBCluster規(guī)劃實(shí)施
網(wǎng)頁地址:http://muchs.cn/article2/pisdic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、Google、網(wǎng)站建設(shè)、虛擬主機(jī)網(wǎng)站排名、微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計