PXC(Percona XtraDB Cluster)叢集安裝
Percona XtraDB Cluster簡介
Percona XtraDB Cluster是MySQL高可用性和可擴充套件性的解決方案,Percona XtraDB Cluster完全相容MySQL和Percona Server。
Percona XtraDB Cluster提供的特性有:
- 同步複製,事務要麼在所有節點提交或不提交。
- 多主複製,可以在任意節點進行寫操作。
- 在從伺服器上並行應用事件,真正意義上的並行複製。
- 節點自動配置。
- 資料一致性,不再是非同步複製。
- 當執行一個查詢時,在本地節點上執行。因為所有資料都在本地,無需遠端訪問。
- 無需集中管理。可以在任何時間點失去任何節點,但是叢集將照常工作。
- 良好的讀負載擴充套件,任意節點都可以查詢。
- 加入新節點,開銷大。需要複製完整的資料。
- 不能有效的解決寫縮放問題,所有的寫操作都將發生在所有節點上。
- 有多少個節點就有多少重複的資料。
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.gz
- shell> 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-devel
- shell> BUILD/compile-pentium64
- 預設安裝路徑/usr/local/mysql/
- shell> make && make install
- shell> rpm -ivh Percona-XtraDB-Cluster-galera-3-3.14-1.rhel6.x86_64.rpm
- 建立資料檔案目錄
- shell> mkdir -p /data/pxc
- shell> mv /usr/local/mysql/ /opt/pxc
- shell> chown -R mysql.mysql /opt/pxc
- shell> chown -R mysql.mysql /data/pxc
配置節點node1:
- shell> more /opt/pxc/my.cnf
- [mysqld]
- socket=/tmp/mysql-node1.sock
- port=3307
- datadir=/data/pxc
- user=mysql
- binlog_format=ROW
- default-storage-engine=innodb
- innodb_autoinc_lock_mode=2
- innodb_locks_unsafe_for_binlog=1
- query_cache_size=0
- query_cache_type=0
- bind-address=0.0.0.0
- wsrep_provider=/usr/lib64/libgalera_smm.so
- wsrep_cluster_address=gcomm://10.106.58.211,10.106.58.212,10.106.58.213
- wsrep_cluster_name=my_wsrep_cluster
- wsrep_slave_threads=1
- wsrep_certify_nonPK=1
- wsrep_max_ws_rows=131072
- wsrep_max_ws_size=1073741824
- wsrep_debug=1
- wsrep_convert_LOCK_to_trx=0
- wsrep_retry_autocommit=1
- wsrep_auto_increment_control=1
- wsrep_causal_reads=0
- #wsrep_notify_cmd=
- # SST method
- #wsrep_sst_method=xtrabackup-v2
- wsrep_sst_method=rsync
- # Authentication for SST method
- #wsrep_sst_auth="sstuser:s3cret"
- # Node #1 address
- wsrep_node_address=10.106.58.211
- server-id = 1
啟動node1:
- shell> /opt/pxc/scripts/mysql_install_db --basedir=/opt/pxc/ --datadir=/data/pxc/ \
- --user=mysql --defaults-file=/opt/pxc/my.cnf
- shell> /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.sock
- mysql> 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.sock
- wsrep_node_address=10.106.58.212
- server-id = 2
- shell> /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 svoid
- Database changed
- mysql@node2> create table test(id int);
- Query OK, 0 rows affected (0.01 sec)
- mysql@node3> use svoid
- Database changed
- mysql@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: 0
- mysqlnode2> update test set id = 2 where id = 1;
- Query OK, 1 row affected (0.01 sec)
- Rows matched: 1 Changed: 1 Warnings: 0
- mysqlnode1> alter table test add primary key(id);
- Query OK, 1 row affected (0.02 sec)
- Records: 1 Duplicates: 0 Warnings: 0
- mysqlnode1> 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 shutdown
- mysqlnode2> insert into test select 1;
- Query OK, 1 row affected (0.00 sec)
- Records: 1 Duplicates: 0 Warnings: 0
- mysqlnode2> insert into test select 3;
- Query OK, 1 row affected (0.00 sec)
- Records: 1 Duplicates: 0 Warnings: 0
- 啟動node1
- shell> /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)
- 可以看出其中一個節點故障不影響其他節點正常使用,啟動節點後會自動同步資料
參考:
http://www.ttlsa.com/mysql/mysql-high-availability-with-nginx-and-galera/
http://www.ttlsa.com/mysql/mysqlgalera-multi-master/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29733787/viewspace-2074784/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PXC(Percona-XtraDB-Cluster)5.7版本叢集安裝和使用初探
- PXC(Percona XtraDB Cluster)的缺點介紹
- Percona XtraDB Cluster 的一些使用限制(PXC 5.7)
- Percona XtraDB Cluster高可用與狀態快照傳輸(PXC 5.7 )
- MySQL高可用方案-PXC(Percona XtraDB Cluster)環境部署詳解MySql
- mysql之 Percona XtraDB Cluster叢集執行緒模型MySql執行緒模型
- 基於Docker搭建Percona XtraDB Cluster資料庫叢集Docker資料庫
- Percona XtraDB Cluster之流量控制
- redis cluster 4.0.9 叢集安裝搭建Redis
- docker-compose搭建percona-xtradb-cluster8.0Docker
- redis-cluster叢集安裝(基於redis-3.2.10)Redis
- 基於Centos7部署Percona Xtradb Cluster高可用架構CentOS架構
- TiDB叢集安裝TiDB
- StarRocks 叢集安裝
- Kubernetes 叢集安裝
- 【redis叢集安裝】Redis
- cdh 叢集安裝
- kubernetes叢集安裝
- ElasticSearch 6.6.0叢集安裝Elasticsearch
- Hadoop叢集安裝配置Hadoop
- Elasticsearch 叢集安裝部署Elasticsearch
- ZooKeeper叢集安裝和部署
- elasticsearch叢集安裝(3臺)Elasticsearch
- Flink(四)叢集安裝(二)
- Kafka叢集安裝Version2.10Kafka
- Zookeeper介紹與叢集安裝
- k8s 叢集安裝K8S
- WAS中介軟體垂直叢集安裝
- WAS中介軟體水平叢集安裝
- k8s叢集安裝-kubeadm安裝K8S
- elasticsearch叢集安裝+安全驗證+kibana安裝Elasticsearch
- WeblogicServer11G叢集安裝與配置WebServer
- MariaDB +Centos+MMM 叢集安裝除錯CentOS除錯
- ceph叢集安裝報錯解決方法
- centos7下zookeeper叢集安裝部署CentOS
- etcd簡介及叢集安裝部署使用
- 丐版pxc叢集
- ElasticSearch 叢集安全Elasticsearch
- Kubernetes叢集部署史上最詳細(一)Kubernetes叢集安裝