共計 5791 個字符,預計需要花費 15 分鐘才能閱讀完成。
這期內容當中丸趣 TV 小編將會給大家帶來有關 PXC 的集群安裝是怎樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Percona XtraDB Cluster 簡介
Percona XtraDB Cluster 是 MySQL 高可用性和可擴展性的解決方案,Percona XtraDB Cluster 完全兼容 MySQL 和 Percona Server。
Percona XtraDB Cluster 提供的特性有:
同步復制,事務要么在所有節點提交或不提交。
多主復制,可以在任意節點進行寫操作。
在從服務器上并行應用事件,真正意義上的并行復制。
節點自動配置。
數據一致性,不再是異步復制。
pxc 優點:
當執行一個查詢時,在本地節點上執行。因為所有數據都在本地,無需遠程訪問。
無需集中管理。可以在任何時間點失去任何節點,但是集群將照常工作。
良好的讀負載擴展,任意節點都可以查詢。
pxc 缺點:
加入新節點,開銷大。需要復制完整的數據。
不能有效的解決寫縮放問題,所有的寫操作都將發生在所有節點上。
有多少個節點就有多少重復的數據。
Percona XtraDB Cluster 局限性
目前的復制僅僅支持 InnoDB 存儲引擎。任何寫入其他引擎的表,包括 mysql.* 表將不會復制。但是 DDL 語句會被復制的,因此創建用戶將會被復制,但是 insert into mysql.user…將不會被復制的。
DELETE 操作不支持沒有主鍵的表。沒有主鍵的表在不同的節點順序將不同,如果執行 SELECT…LIMIT… 將出現不同的結果集。
在多主環境下 LOCK/UNLOCK TABLES 不支持。以及鎖函數 GET_LOCK(), RELEASE_LOCK()…
查詢日志不能保存在表中。如果開啟查詢日志,只能保存到文件中。
允許最大的事務大小由 wsrep_max_ws_rows 和 wsrep_max_ws_size 定義。任何大型操作將被拒絕。如大型的 LOAD DATA 操作。
由于集群是樂觀的并發控制,事務 commit 可能在該階段中止。如果有兩個事務向在集群中不同的節點向同一行寫入并提交,失敗的節點將中止。對于集群級別的中止,集群返回死鎖錯誤代碼 (Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).
XA 事務不支持,由于在提交上可能回滾。
整個集群的寫入吞吐量是由最弱的節點限制,如果有一個節點變得緩慢,那么整個集群將是緩慢的。為了穩定的高性能要求,所有的節點應使用統一的硬件。
集群節點建議最少 3 個。
如果 DDL 語句有問題將破壞集群。
安裝 Percona XtraDB 集群
shell tar zxvf Percona-XtraDB-Cluster-5.6.22-72.0.tar.gzshell cd Percona-XtraDB-Cluster-5.6.22-72.0 安裝依賴包 shell yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses5-develshell BUILD/compile-pentium64 默認安裝路徑 /usr/local/mysql/shell make make installshell rpm -ivh Percona-XtraDB-Cluster-galera-3-3.14-1.rhel6.x86_64.rpm 創建數據文件目錄 shell mkdir -p /data/pxcshell mv /usr/local/mysql/ /opt/pxcshell chown -R mysql.mysql /opt/pxcshell chown -R mysql.mysql /data/pxc
配置節點 node1:
shell more /opt/pxc/my.cnf[mysqld]socket=/tmp/mysql-node1.sockport=3307datadir=/data/pxcuser=mysqlbinlog_format=ROWdefault-storage-engine=innodbinnodb_autoinc_lock_mode=2innodb_locks_unsafe_for_binlog=1query_cache_size=0query_cache_type=0bind-address=0.0.0.0wsrep_provider=/usr/lib64/libgalera_smm.sowsrep_cluster_address=gcomm://10.106.58.211,10.106.58.212,10.106.58.213wsrep_cluster_name=my_wsrep_clusterwsrep_slave_threads=1wsrep_certify_nonPK=1wsrep_max_ws_rows=131072wsrep_max_ws_size=1073741824wsrep_debug=1wsrep_convert_LOCK_to_trx=0wsrep_retry_autocommit=1wsrep_auto_increment_control=1wsrep_causal_reads=0#wsrep_notify_cmd=# SST method#wsrep_sst_method=xtrabackup-v2wsrep_sst_method=rsync# Authentication for SST method#wsrep_sst_auth= sstuser:s3cret # Node #1 addresswsrep_node_address=10.106.58.211server-id = 1
啟動 node1:
shell /opt/pxc/scripts/mysql_install_db --basedir=/opt/pxc/ --datadir=/data/pxc/ \--user=mysql --defaults-file=/opt/pxc/my.cnfshell /opt/pxc/bin/mysqld_safe --defaults-file=/opt/pxc/my.cnf --wsrep-new-cluster shell /opt/pxc/bin/mysql -u root -S /tmp/mysql-node1.sockmysql delete from mysql.user where user = mysql GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO sstuser@ localhost identified by s3cret mysql flush privileges;
配置啟動節點 node2、node3:
node2、node3 配置啟動同理。
[mysqld]socket=/tmp/mysql-node1.sockwsrep_node_address=10.106.58.212server-id = 2shell /opt/pxc/bin/mysqld_safe --defaults-file=/opt/pxc/my.cnf
檢查 pxc 狀態
mysql show status like wsrep% +------------------------------+----------------------------------------------------------+| Variable_name | Value |+------------------------------+----------------------------------------------------------+| wsrep_local_state_uuid | 17b9d472-5ace-11e5-b22f-ab14cb9dcc7b || wsrep_protocol_version | 7 || wsrep_last_committed | 7 || wsrep_replicated | 0 || wsrep_replicated_bytes | 0 || wsrep_repl_keys | 0 || wsrep_repl_keys_bytes | 0 || wsrep_repl_data_bytes | 0 || wsrep_repl_other_bytes | 0 || wsrep_received | 3 || wsrep_received_bytes | 311 || wsrep_local_commits | 0 || wsrep_local_cert_failures | 0 |.| wsrep_incoming_addresses | 10.106.58.213:3307,10.106.58.212:3307,10.106.58.211:3307 || wsrep_evs_delayed | || wsrep_evs_evict_list | || wsrep_evs_repl_latency | 0/0/0/0/0 || wsrep_evs_state | OPERATIONAL || wsrep_gcomm_uuid | c21183b0-5acf-11e5-930d-9bfcbb0bb24c || wsrep_cluster_conf_id | 5 || wsrep_cluster_size | 3 || wsrep_cluster_state_uuid | 17b9d472-5ace-11e5-b22f-ab14cb9dcc7b || wsrep_cluster_status | Primary || wsrep_connected | ON || wsrep_local_bf_aborts | 0 || wsrep_local_index | 2 || wsrep_provider_name | Galera || wsrep_provider_vendor | Codership Oy info@codership.com || wsrep_provider_version | 3.11(r93aca2d) || wsrep_ready | ON |+------------------------------+----------------------------------------------------------+58 rows in set (0.01 sec)
簡單測試 pxc
mysql@node1 create database svoid;Query OK, 1 row affected (0.00 sec)mysql@node2 use svoidDatabase changedmysql@node2 create table test(id int);Query OK, 0 rows affected (0.01 sec)mysql@node3 use svoidDatabase changedmysql@node3 show tables;+-----------------+| Tables_in_svoid |+-----------------+| test |+-----------------+1 row in set (0.00 sec)mysql@node3 insert into test select 1;Query OK, 1 row affected (0.01 sec)Records: 1 Duplicates: 0 Warnings: 0mysqlnode2 update test set id = 2 where id = 1;Query OK, 1 row affected (0.01 sec)Rows matched: 1 Changed: 1 Warnings: 0mysqlnode1 alter table test add primary key(id);Query OK, 1 row affected (0.02 sec)Records: 1 Duplicates: 0 Warnings: 0mysqlnode1 select * from test;+----+| id |+----+| 2 |+----+1 row in set (0.00 sec) 模擬故障 node1 宕機 shell /opt/pxc/bin/mysqladmin -S /tmp/mysql-node1.sock -u root shutdownmysqlnode2 insert into test select 1;Query OK, 1 row affected (0.00 sec)Records: 1 Duplicates: 0 Warnings: 0mysqlnode2 insert into test select 3;Query OK, 1 row affected (0.00 sec)Records: 1 Duplicates: 0 Warnings: 0 啟動 node1shell /opt/pxc/bin/mysqld_safe --defaults-file=/opt/pxc/my.cnf mysqlnode1 select * from test;+----+| id |+----+| 1 || 2 || 3 |+----+3 rows in set (0.00 sec) 可以看出其中一個節點故障不影響其他節點正常使用,啟動節點后會自動同步數據
上述就是丸趣 TV 小編為大家分享的 PXC 的集群安裝是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。