Percona-XtraDB-Cluster安裝

Percona-XtraDB-Cluster的安裝

1. 準備工作

1.1. PXC介紹

Percona-XtraDB-ClusterMySQL的高可用性和可擴展性的解決方案。其特性包含:同步複製,多主複製,並行複製,數據一致性。主要組件爲Percona-XtraDB-Cluster-serverPercona-XtraDB-Cluster-clientPercona-XtraDB-Cluster-galera

1.2. 環境準備

192.168.10.146----CentOS-6.*

192.168.10.147----CentOS-6.5 (ftp yum)

192.168.10.148----CentOS-6.*

此處使用了一臺CentOS-6.5系統的機器作爲ftp yum源。其他兩臺機器爲CentOS-6.*環境,使用CentOS-6.5的源。配置均爲1G內存,2G swap32G動態磁盤空間。

 

需要在每臺機器上確認以下服務:

1.SElinux爲關閉狀態。

2.iptables關閉,如開啓,放通端口3306,4444,,4567以及4568.

3.需要配置文件/etc/resolv.conf,添加nameserver,能夠解析域名。

2. 安裝Percona-Server

2.1. 安裝

在所有服務器上安裝Percona-Server

yum installhttp://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

yum installhttp://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum install Percona-Server-shared-compat

yum install Percona-Server-server-55Percona-Server-client-55

 

-----使用centos-6.1-4 yum源,會有如下錯誤,文件均存在於本機:

Error: Package:Percona-Server-shared-55-5.5.39-rel36.0.el6.x86_64 (percona)

          Requires: libssl.so.10(libssl.so.10)(64bit)

Error: Package:Percona-Server-shared-55-5.5.39-rel36.0.el6.x86_64 (percona)

          Requires: libcrypto.so.10(libcrypto.so.10)(64bit)

Error: Package:Percona-Server-client-55-5.5.39-rel36.0.el6.x86_64 (percona)

          Requires: libssl.so.10(libssl.so.10)(64bit)

Error: Package:Percona-Server-server-55-5.5.39-rel36.0.el6.x86_64 (percona)

          Requires: libcrypto.so.10(libcrypto.so.10)(64bit)

Error: Package:Percona-Server-server-55-5.5.39-rel36.0.el6.x86_64 (percona)

          Requires: libssl.so.10 (libssl.so.10)(64bit)

Error: Package:Percona-Server-client-55-5.5.39-rel36.0.el6.x86_64 (percona)

          Requires: libcrypto.so.10(libcrypto.so.10)(64bit)

 Youcould try using --skip-broken to work around the problem

 Youcould try running: rpm -Va --nofiles –nodigest

 

由於openssl及其他依賴包版本的原因,即使本地有libssl.so.10libssl.so.10文件,Percona仍然無法識別。因此選擇CentOS-6.5來作爲yum源,對本地依賴包進行升級。

 

-----使用centos-6.5 yum源,能成功進行依賴性解析,如下:

--> Finished Dependency Resolution

 

Dependencies Resolved

 

===============================================================================

 Package                     Arch      Version                Repository   Size

===============================================================================

Installing:

 Percona-Server-client-55      x86_64   5.5.39-rel36.0.el6    percona     5.9 M

 Percona-Server-server-55      x86_64   5.5.39-rel36.0.el6    percona      15 M

Installing for dependencies:

 Percona-Server-shared-55       x86_64   5.5.39-rel36.0.el6    percona     647 k

 libaio                    x86_64   0.3.107-10.el6        Packages     21 k

 make                     x86_64    1:3.81-20.el6          Packages    389 k

Updating for dependencies:

 openssl                     x86_64    1.0.1e-15.el6          Packages    1.5 M

 

Transaction Summary

===============================================================================

Install       5 Package(s)

Upgrade       1 Package(s)

 

2.2. 初始化

在所有服務器上配置/etc/my.cnf

[mysqld]

# basic settings

datadir = /opt/mysql/data

tmpdir = /opt/mysql/tmp

socket = /opt/mysql/run/mysqld.sock

port = 3306

pid-file = /opt/mysql/run/mysqld.pid

 

skip-external-locking

max_allowed_packet = 16M

 

# innodb settings

default-storage-engine = INNODB

innodb_file_per_table = 1

log-bin = /opt/mysql/binlogs/bin-log-mysqld

log-bin-index =/opt/mysql/binlogs/bin-log-mysqld.index

innodb_data_home_dir = /opt/mysql/data

innodb_data_file_path =ibdata1:10M:autoextend

innodb_log_group_home_dir = /opt/mysql/data

binlog-do-db = testdb

 

# server id

server-id=1

 

# other settings

[mysqld_safe]

log-error = /opt/mysql/log/mysqld.log

pid-file = /opt/mysql/run/mysqld.pid

open-files-limit = 8192

 

[mysqlhotcopy]

interactive-timeout

 

[client]

port = 3306

socket = /opt/mysql/run/mysqld.sock

default-character-set = utf8

 

創建相對應目錄以供使用,並修改用戶:

mkdir -p/opt/mysql/{data,tmp,run,binlogs,log}

chown mysql:mysql /opt/mysql/{data,tmp,run,binlogs,log}

 

對數據庫進行初始化:

su – mysql

mysql_install_db --user=mysql--datadir=/opt/mysql/data/

或者使用:

/usr/bin/mysql_install_db --user=mysql--datadir=/opt/mysql/data/

 

/etc/init.d/mysql start

登錄查看數據庫,驗證數據庫成功後退出。

 

3. 刪除包

原有軟件包會與PXC軟件包衝突,所以要刪除。

Error: Percona-XtraDB-Cluster-clientconflicts with Percona-Server-client-55-5.5.34-rel32.0.591.rhel6.x86_64

Error: Percona-XtraDB-Cluster-serverconflicts with Percona-Server-server-55-5.5.34-rel32.0.591.rhel6.x86_64

Error: Percona-XtraDB-Cluster-shared conflictswith Percona-Server-shared-55-5.5.34-rel32.0.591.rhel6.x86_64

 

停掉數據庫,刪除包:

/etc/init.d/mysql stop

rpm -qa | grep Percona-Server | grep -vcompat | xargs sudo rpm -e --nodeps

 

4. 配置PXC

4.1. 添加PXC支持

對每臺服務器添加XtraDB Cluster支持,配置my.cnf

第一個節點:

[mysqld]

# basic settings

datadir = /opt/mysql/data

tmpdir = /opt/mysql/tmp

socket = /opt/mysql/run/mysqld.sock

port = 3306

pid-file = /opt/mysql/run/mysqld.pid

 

skip-external-locking

max_allowed_packet = 16M

 

# innodb settings

default-storage-engine = INNODB

innodb_file_per_table = 1

log-bin = /opt/mysql/binlogs/bin-log-mysqld

log-bin-index =/opt/mysql/binlogs/bin-log-mysqld.index

innodb_data_home_dir = /opt/mysql/data

innodb_data_file_path =ibdata1:10M:autoextend

innodb_log_group_home_dir = /opt/mysql/data

binlog-do-db = testdb

 

# xtradb cluster settings

binlog_format = ROW

wsrep_cluster_name = mycluster

wsrep_cluster_address =gcomm://192.168.10.146,192.168.10.147,192.168.10.148

wsrep_node_address = 192.168.10.146

wsrep_provider =/usr/lib64/libgalera_smm.so

wsrep_sst_method = rsync

#wsrep_sst_method = xtrabackup

#wsrep_sst_auth = sst:secret

#wsrep_slave_threads=4

#log_slave_updates

innodb_locks_unsafe_for_binlog = 1

innodb_autoinc_lock_mode = 2

 

# server id

server-id=1

 

# other settings

[mysqld_safe]

log-error = /opt/mysql/log/mysqld.log

pid-file = /opt/mysql/run/mysqld.pid

open-files-limit = 8192

 

[mysqlhotcopy]

interactive-timeout

 

[client]

port = 3306

socket = /opt/mysql/run/mysqld.sock

default-character-set = utf8

 

注:wsrep_node_address後寫本機IP地址或者hostname,應確保不一樣。server_id應區分開。

說明:wsrep_sst_method = xtrabackup-v2爲官方推薦的配置,同時支持rsync等其他方式。但是此處測試選擇xtrabackup方式會在新增節點時報錯handshake failed。所以更改爲rsync方式。

 

4.2. 安裝PXC套件

yum install Percona-Server-shared-compat

yum install Percona-XtraDB-Cluster-serverPercona-XtraDB-Cluster-client

 

4.3. 啓動

4.3.1. 啓動第一個節點

/etc/init.d/mysql bootstrap-pxc

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

mysql –uroot –p

mysql> show global status like 'wsrep%';

+----------------------------------+----------------------------------------------+

| Variable_name                    | Value                                        |

+----------------------------------+----------------------------------------------+

| wsrep_local_state_uuid           |4682078f-3f0b-11e4-a6bf-66e0202d8999          |

| wsrep_protocol_version           | 6                                            |

| wsrep_last_committed             | 3                                            |

| 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                   | 2                                            |

| wsrep_received_bytes             | 143                                          |

| wsrep_local_commits              | 0                                            |

| wsrep_local_cert_failures        | 0                                            |

| wsrep_local_replays              | 0                                            |

| wsrep_local_send_queue           | 0                                            |

| wsrep_local_send_queue_max       | 1                                            |

| wsrep_local_send_queue_min       | 0                                            |

| wsrep_local_send_queue_avg       | 0.000000                                     |

| wsrep_local_recv_queue           | 0                                            |

| wsrep_local_recv_queue_max       | 1                                            |

| wsrep_local_recv_queue_min       | 0                                            |

| wsrep_local_recv_queue_avg       | 0.000000                                     |

| wsrep_local_cached_downto        | 18446744073709551615                         |

| wsrep_flow_control_paused_ns     | 0                                            |

| wsrep_flow_control_paused        | 0.000000                                     |

| wsrep_flow_control_sent          | 0                                            |

| wsrep_flow_control_recv          | 0                                            |

| wsrep_cert_deps_distance         | 0.000000                                     |

| wsrep_apply_oooe                 | 0.000000                                     |

| wsrep_apply_oool                 | 0.000000                                     |

| wsrep_apply_window               | 0.000000                                     |

| wsrep_commit_oooe                | 0.000000                                     |

| wsrep_commit_oool                | 0.000000                                     |

| wsrep_commit_window              | 0.000000                                     |

| wsrep_local_state                | 4                                            |

| wsrep_local_state_comment        | Synced                                       |

| wsrep_cert_index_size            | 0                                            |

| wsrep_causal_reads               | 0                                            |

| wsrep_cert_interval              | 0.000000                                     |

| wsrep_incoming_addresses         | 192.168.10.147:3306                          |

| wsrep_evs_repl_latency           |2.28e-06/5.2768e-06/8.433e-06/2.149e-06/5     |

| wsrep_cluster_conf_id            | 1                                            |

| wsrep_cluster_size               | 1                                            |

| wsrep_cluster_state_uuid         |4682078f-3f0b-11e4-a6bf-66e0202d8999          |

| wsrep_cluster_status             | Primary                                      |

| wsrep_connected                  | ON                                           |

| wsrep_local_bf_aborts            | 0                                            |

| wsrep_local_index                | 0                                            |

| wsrep_provider_name              | Galera                                       |

| wsrep_provider_vendor            | Codership Oy<[email protected]>             |

| wsrep_provider_version           | 3.7(r7f44a18)                                |

| wsrep_ready                      | ON                                           |

| wsrep_thread_count               | 5                                            |

+----------------------------------+----------------------------------------------+

53 rows in set (0.01 sec)

 

create database testdb;

use testdb;

CREATE TABLE `hostgroup` (

   ->   `hostgroup_id` tinyint(4)NOT NULL AUTO_INCREMENT,

   ->   `hostgroup_name` char(20)DEFAULT NULL,

   ->   `hostgroup_next`tinyint(4) NOT NULL,

   ->   `colo_name` char(4) NOTNULL,

   ->   PRIMARY KEY(`hostgroup_id`)

-> )ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

 

GRANT RELOAD, LOCK TABLES, REPLICATIONCLIENT ON *.* TO 'sst'@'localhost' IDENTIFIED BY 'secret';

flush privileges;

 

4.3.2. 增加節點

第二個新增節點,配置my.cnf文件:

[mysqld]

# basic settings

datadir = /opt/mysql/data

tmpdir = /opt/mysql/tmp

socket = /opt/mysql/run/mysqld.sock

port = 3306

pid-file = /opt/mysql/run/mysqld.pid

 

skip-external-locking

max_allowed_packet = 16M

 

# innodb settings

default-storage-engine = INNODB

innodb_file_per_table = 1

log-bin = /opt/mysql/binlogs/bin-log-mysqld

log-bin-index =/opt/mysql/binlogs/bin-log-mysqld.index

innodb_data_home_dir = /opt/mysql/data

innodb_data_file_path =ibdata1:10M:autoextend

innodb_log_group_home_dir = /opt/mysql/data

binlog-do-db = testdb

 

# xtradb cluster settings

binlog_format = ROW

wsrep_cluster_name = mycluster

wsrep_cluster_address =gcomm://192.168.10.146,192.168.10.147,192.168.10.148

wsrep_node_address = 192.168.10.148

wsrep_provider =/usr/lib64/libgalera_smm.so

wsrep_sst_method = rsync

#wsrep_sst_method = xtrabackup

#wsrep_sst_auth = sst:secret

#wsrep_slave_threads=4

#log_slave_updates

innodb_locks_unsafe_for_binlog = 1

innodb_autoinc_lock_mode = 2

 

# server id

server-id=2

 

# other settings

[mysqld_safe]

log-error = /opt/mysql/log/mysqld.log

pid-file = /opt/mysql/run/mysqld.pid

open-files-limit = 8192

 

[mysqlhotcopy]

interactive-timeout

 

[client]

port = 3306

socket = /opt/mysql/run/mysqld.sock

default-character-set = utf8

 

啓動mysql,區分於第一個節點:

/etc/init.d/mysql start

 

在主節點查看:

mysql> show global status like 'wsrep%';

+----------------------------------+----------------------------------------------+

| Variable_name                    | Value                                        |

+----------------------------------+----------------------------------------------+

| wsrep_local_state_uuid           |4682078f-3f0b-11e4-a6bf-66e0202d8999          |

| wsrep_protocol_version           | 6                                            |

| wsrep_last_committed             | 3                                            |

| 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                   | 6                                            |

| wsrep_received_bytes             | 412                                          |

| wsrep_local_commits              | 0                                            |

| wsrep_local_cert_failures        | 0                                            |

| wsrep_local_replays              | 0                                            |

| wsrep_local_send_queue           | 0                                            |

| wsrep_local_send_queue_max       | 1                                            |

| wsrep_local_send_queue_min       | 0                                            |

| wsrep_local_send_queue_avg       | 0.000000                                     |

| wsrep_local_recv_queue           | 0                                            |

| wsrep_local_recv_queue_max       | 1                                            |

| wsrep_local_recv_queue_min       | 0                                            |

| wsrep_local_recv_queue_avg       | 0.000000                                     |

| wsrep_local_cached_downto        | 18446744073709551615                         |

| wsrep_flow_control_paused_ns     | 0                                            |

| wsrep_flow_control_paused        | 0.000000                                     |

| wsrep_flow_control_sent          | 0                                            |

| wsrep_flow_control_recv          | 0                                            |

| wsrep_cert_deps_distance         | 0.000000                                     |

| wsrep_apply_oooe                 | 0.000000                                     |

| wsrep_apply_oool                 | 0.000000                                     |

| wsrep_apply_window               | 0.000000                                     |

| wsrep_commit_oooe                | 0.000000                                     |

| wsrep_commit_oool                | 0.000000                                     |

| wsrep_commit_window              | 0.000000                                     |

| wsrep_local_state                | 4                                            |

| wsrep_local_state_comment        | Synced                                       |

| wsrep_cert_index_size            | 0                                            |

| wsrep_causal_reads               | 0                                            |

| wsrep_cert_interval              | 0.000000                                     |

| wsrep_incoming_addresses         | 192.168.10.146:3306,192.168.10.147:3306      |

| wsrep_evs_repl_latency           | 0/0/0/0/0                                    |

| wsrep_cluster_conf_id            | 2                                            |

| wsrep_cluster_size               | 2                                            |

| wsrep_cluster_state_uuid         | 4682078f-3f0b-11e4-a6bf-66e0202d8999         |

| wsrep_cluster_status             | Primary                                      |

| wsrep_connected                  | ON                                           |

| wsrep_local_bf_aborts            | 0                                            |

| wsrep_local_index                | 1                                            |

| wsrep_provider_name              | Galera                                       |

| wsrep_provider_vendor            | Codership Oy<[email protected]>             |

| wsrep_provider_version           | 3.7(r7f44a18)                                |

| wsrep_ready                      | ON                                           |

| wsrep_thread_count               | 5                                            |

+----------------------------------+---------- -----------------------------------+

53 rows in set (0.00 sec)

 

在新增節點上登入mysql,可以通過show databases查看testdb已經同步。

 

第三個節點,配置my.cnf

[mysqld]

# basic settings

datadir = /opt/mysql/data

tmpdir = /opt/mysql/tmp

socket = /opt/mysql/run/mysqld.sock

port = 3306

pid-file = /opt/mysql/run/mysqld.pid

 

skip-external-locking

max_allowed_packet = 16M

 

# innodb settings

default-storage-engine = INNODB

innodb_file_per_table = 1

log-bin = /opt/mysql/binlogs/bin-log-mysqld

log-bin-index = /opt/mysql/binlogs/bin-log-mysqld.index

innodb_data_home_dir = /opt/mysql/data

innodb_data_file_path =ibdata1:10M:autoextend

innodb_log_group_home_dir = /opt/mysql/data

binlog-do-db = testdb

 

# xtradb cluster settings

binlog_format = ROW

wsrep_cluster_name = mycluster

wsrep_cluster_address =gcomm://192.168.10.146,192.168.10.147,192.168.10.148

wsrep_node_address = 192.168.10.148

wsrep_provider =/usr/lib64/libgalera_smm.so

wsrep_sst_method = rsync

#wsrep_sst_method = xtrabackup

#wsrep_sst_auth = sst:secret

#wsrep_slave_threads=4

#log_slave_updates

innodb_locks_unsafe_for_binlog = 1

innodb_autoinc_lock_mode = 2

 

# server id

server-id=3

 

# other settings

[mysqld_safe]

log-error = /opt/mysql/log/mysqld.log

pid-file = /opt/mysql/run/mysqld.pid

open-files-limit = 8192

 

[mysqlhotcopy]

interactive-timeout

 

[client]

port = 3306

socket = /opt/mysql/run/mysqld.sock

default-character-set = utf8

 

啓動:

/etc/init.d/mysql start

 

可依照此方法依次添加多個節點。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章