1. 程式人生 > >Mysql上的RAC:Percona XtraDB Cluster負載均衡集群安裝部署手冊

Mysql上的RAC:Percona XtraDB Cluster負載均衡集群安裝部署手冊

lpad protoc tps san make interact 連接數 文章 html

版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/china_world/article/details/36702761

?

?Percona XtraDB Cluster安裝部署手冊

?


引言

編寫目的

編寫此文檔,供PerconaXtraDB Cluster部署時使用。

預期讀者

系統維護人員及實施人員。

編制根據及參考資料

目標

通過閱讀該手冊,讓讀者明白PerconaXtraDB Cluster的安裝、配置和維護情況,為興許數據庫運維工作提供指導。

應用部署方案

環境準備

服務器列表

序號

IP

用途

HOSTNAME

操作系統

1

192.168.0.7

Percona XtraDB Cluster

?

RedHat 6.3

2

192.168.0.9

Percona XtraDB Cluster

?

RedHat 6.3

3

192.168.0.15

LVS+Keepalived

?

RedHat 5.6

4

192.168.0.17

LVS+Keepalived

?

RedHat 5.6

IP列表

序號

名稱

IP

1

LVS-DR-VIP

192.168.0.110

2

LVS-DR-Master

192.168.0.15

3

LVS-DR-BACKUP

192.168.0.17

4

MySQL1-Realserver

192.168.0.7

5

MySQL2-Realserver

192.168.0.9

6

GateWay

192.168.0.1

配置網易的YUM源

1. 導入證書(證書的位置http://mirrors.163.com/centos/)

rpm -importhttp://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-5

2. 使用網易的源

cd /etc/yum.repos.d/

wgethttp://mirrors.163.com/.help/CentOS5-Base-163.repo

3. 改動文件(把全部$releasever替換成5,保存)

vim CentOS5-Base-163.repo

4. 更新yum

yum -y update

LVS安裝

1.??? 安裝

yum install ipvsadm –y

Installing : ipvsadm-1.25-9.el6.i686 1/1

Installed:

ipvsadm.i686 0:1.25-9.el6

Complete!

2.?? Ipvsadm命令參數

-C 清除表中全部的記錄

ipvsadm -A -t 192.168.3.187:80 -s rr

-A?--add-service在服務器列表中新加入一條新的虛擬服務器記錄

-t 表示為tcp服務

-u 表示為udp服務

-s --scheduler 使用的調度算法, rr | wrr | lc | wlc | lblb |lblcr | dh | sh | sed | nq 默認調度算法是 wlc

ipvsadm -a -t 192.168.3.187:80 -r 192.168.200.10:80 -m-w 1

-a --add-server 在服務器表中加入一條新的真實主機記錄

-t --tcp-service?說明虛擬服務器提供tcp服務

-u --udp-service 說明虛擬服務器提供udp服務

-r --real-server?真實服務器地址

-m --masquerading 指定LVS工作模式為NAT模式

-w --weight 真實服務器的權值

-g --gatewaying 指定LVS工作模式為直接路由器模式(也是LVS默認的模式)

-i --ipip 指定LVS的工作模式為隧道模式

-p 會話保持時間,定義流量唄轉到同一個realserver的會話存留時間

調度算法

rr 輪詢 round robin, wrr 加強輪詢 weighted round robin。

新的請求被輪流分配到RealServer上,它如果服務器處理性能都同樣。無論服務器當前的連接數和響應速度,不適合服務器性能不同的集群。這會導致服務器間的負載不平衡

dh 目的地址散列調度destination hashing

?

Keepalived安裝

安裝

1.??? gcc

???? 安裝命令:yum install gcc gcc-c++

2.??? openssl-devel ,openssl

???? 安裝命令:yum install openssl-developenssl

3.??? 源代碼內核的

???? 安裝命令:yum install kernel-devel kernel

???? 建立軟連接:ln -s /usr/src/kernels/內核名稱/?? /usr/src/linux

4.??? popt-devel,libnl-devel

???? 安裝命令:yum install popt-devellibnl-devel

5.??? 安裝keepalived

#wgethttp://www.keepalived.org/software/keepalived-1.2.12.tar.gz

#tar xvzf keepalived-1.2.12.tar.gz

#cd keepalived-1.2.12

#uname –r

# ln -sv /usr/src/kernels/`uname-r`-`uname -m`/ /usr/src/linux # 必須做不然,編譯會出錯

#./configure --sysconf=/usr/local/keepalived--prefix=/usr/local/keepalived

???? # make && make install

#cp/usr/local/keepalived/sbin/keepalived /usr/sbin/

#cp/usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived/etc/init.d/

#mkdir /etc/keepalived

#vi/etc/keepalived/keepalived.conf

#chkconfig --add keepalived

#chkconfig keepalived on #做成系統服務

#service keepalivedstart|stop|status

配置

1.??? 主服務器配置keepalived.conf

global_defs{

?? notification_email {

???? [email protected]

?? }

?? notification_email_from [email protected]

?? smtp_server 127.0.0.1

?? smtp_connect_timeout 30

?? router_id mysql-ha

}

?

vrrp_instanceVI_1 {

??? state MASTER

??? interface eth0

??? virtual_router_id 51

??? priority 100

??? advert_int 1

??? nopreempt??#不搶占,僅僅在priority高的節點上設置

??? authentication {

??????? auth_type PASS

??????? auth_pass 1111

??? }

??? virtual_ipaddress {

??????? 192.168.0.110

??? }

}

?

virtual_server192.168.0.110 3306 {

??? delay_loop 2

??? lb_algo wrr

??? lb_kind DR

??? persistence_timeout 600?#超時設置,單位秒

protocol TCP

real_server 192.168.0.7 3306

??????? weight 3

??????? # notify_down /root/sh/mysql.sh

??????????? TCP_CHECK {

??????????? connect_timeout 300?#超時設置,單位秒

??????????? nb_get_retry 3

??????????? delay_before_retry 3

??????????? connect_port 3306

??????? }

??? }

?

??? real_server 192.168.0.9 3306

??????? weight 3

??????? # notify_down /root/sh/mysql.sh

??????????? TCP_CHECK {

??????????? connect_timeout 300?#超時設置,單位秒

??????????? nb_get_retry 3

??????????? delay_before_retry 3

??????????? connect_port 3306

??????? }

??? }

}

2.??? 從服務器配置/etc/keepalived/keepalived.conf

?global_defs {

?? notification_email {

???? [email protected]

?? }

?? notification_email_from [email protected]

?? smtp_server 127.0.0.1

?? smtp_connect_timeout 30

?? router_id mysql-ha

}

?

vrrp_instanceVI_1 {

??? state BACKUP

??? interface eth0

??? virtual_router_id 51

??? priority 88

??? advert_int 1

??? nopreempt??#不搶占,僅僅在priority高的節點上設置

??? authentication {

??????? auth_type PASS

??????? auth_pass 1111

??? }

??? virtual_ipaddress {

??????? 192.168.0.110

??? }

}

?

virtual_server192.168.0.110 3306 {

??? delay_loop 2

??? lb_algo wrr

??? lb_kind DR

??? persistence_timeout 600?#超時設置,單位秒

protocolTCP

real_server192.168.0.7 3306

??????? weight 3

??????? #notify_down /root/sh/mysql.sh

??????????? TCP_CHECK {

??????????? connect_timeout 300?#超時設置。單位秒

??????????? nb_get_retry 3

??????????? delay_before_retry 3

??????????? connect_port 3306

??????? }

??? }

?

??? real_server 192.168.0.9 3306

??????? weight 3

??????? # notify_down /root/sh/mysql.sh

??????????? TCP_CHECK {

??????????? connect_timeout 300?#超時設置,單位秒

??????????? nb_get_retry 3

??????????? delay_before_retry 3

??????????? connect_port 3306

??????? }

??? }

}s

Percona XtraDB Cluster安裝

安裝說明

安裝準備

??服務器版本號查看

# cat /etc/redhat-release

Red Hat Enterprise Linux Server release 6.4 (Santiago)

??新建文件夾:

#mkdir -p /softwares

??下載RPM包

l?下載XTRADB Cluster包

wget http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster-56/LATEST/RPM/rhel5/x86_64/Percona-XtraDB-Cluster-56-5.6.15-25.5.759.rhel5.x86_64.rpm

?

wgethttp://www.percona.com/redir/downloads/Percona-XtraDB-Cluster-56/LATEST/RPM/rhel5/x86_64/Percona-XtraDB-Cluster-56-debuginfo-5.6.15-25.5.759.rhel5.x86_64.rpm

?

wgethttp://www.percona.com/redir/downloads/Percona-XtraDB-Cluster-56/LATEST/RPM/rhel6/x86_64/Percona-XtraDB-Cluster-client-56-5.6.15-25.5.759.rhel6.x86_64.rpm

?

wget

http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster-56/LATEST/RPM/rhel5/x86_64/Percona-XtraDB-Cluster-devel-56-5.6.15-25.5.759.rhel5.x86_64.rpm

?

wgethttp://www.percona.com/redir/downloads/Percona-XtraDB-Cluster-56/LATEST/RPM/rhel5/x86_64/Percona-XtraDB-Cluster-full-56-5.6.15-25.5.759.rhel5.x86_64.rpm

?

wgethttp://www.percona.com/redir/downloads/Percona-XtraDB-Cluster-56/LATEST/RPM/rhel5/x86_64/Percona-XtraDB-Cluster-galera-3-3.4-1.213.rhel5.x86_64.rpm

?

wget

http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster-56/LATEST/RPM/rhel5/x86_64/Percona-XtraDB-Cluster-galera-3-debuginfo-3.4-1.213.rhel5.x86_64.rpm

?

wget

http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster-56/LATEST/RPM/rhel5/x86_64/Percona-XtraDB-Cluster-server-56-5.6.15-25.5.759.rhel5.x86_64.rpm

?

wget

http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster-56/LATEST/RPM/rhel5/x86_64/Percona-XtraDB-Cluster-shared-56-5.6.15-25.5.759.rhel5.x86_64.rpm

?

wget

http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster-56/LATEST/RPM/rhel5/x86_64/Percona-XtraDB-Cluster-test-56-5.6.15-25.5.759.rhel5.x86_64.rpm

?

l?下載XTRABACKUP包

wgethttp://www.percona.com/redir/downloads/XtraBackup/LATEST/binary/redhat/5/x86_64/percona-xtrabackup-2.2.3-4982.el5.x86_64.rpm

?

wget

http://www.percona.com/redir/downloads/XtraBackup/LATEST/binary/redhat/5/x86_64/percona-xtrabackup-debuginfo-2.2.3-4982.el5.x86_64.rpm

?

wget

ttp://www.percona.com/redir/downloads/XtraBackup/LATEST/binary/redhat/5/x86_64/percona-xtrabackup-test-2.2.3-4982.el5.x86_64.rpm

?

??安裝依賴包

l?安裝包準備

安裝光盤package文件夾下:perl-DBD-MySQL-4.013-3.el6.x86_64.rpm

?

wgethttp://repo.webtatic.com/yum/el6/x86_64/libmysqlclient16-5.1.69-1.w6.x86_64.rpm

?

???? wget?????http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/socat-1.7.2.4-1.el6.rf.x86_64.rpm

????

wget

http://mirror.centos.org/centos/6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm

l?安裝

rpm -ivhlibmysqlclient16-5.1.69-1.w6.x86_64.rpm

?

rpm -ivhperl-DBD-MySQL-4.013-3.el6.x86_64.rpm socat-1.7.2.4-1.el6.rf.x86_64.rpmnc-1.84-22.el6.x86_64.rpm

?

??刪除原有軟件包

? rpm -qa | grep mysql? | xargs sudo rpm -e –nodeps

?

安裝Percona XtraDB Cluster

??安裝percona-xtrabackup

??? rpm -ivhpercona-xtrabackup-2.1.9-744.rhel6.x86_64.rpm

??安裝Percona-XtraDB-Cluster-galera

??? rpm -ivhPercona-XtraDB-Cluster-galera-3-3.5-1.216.rhel6.x86_64.rpmPercona-XtraDB-Cluster-galera-3-debuginfo-3.5-1.216.rhel6.x86_64.rpm

??安裝Percona-XtraDB-Cluster-client

rpm -ivhPercona-XtraDB-Cluster-client-56-5.6.15-25.5.759.rhel6.x86_64.rpm

??安裝libmysqlclient16-5.1.69-1.w6.x86_64

?? rpm -ivhlibmysqlclient16-5.1.69-1.w6.x86_64.rpm

??安裝Percona-XtraDB-Cluster-server

??? rpm -ivhPercona-XtraDB-Cluster-server-56-5.6.15-25.5.759.rhel6.x86_64.rpm

配置第一個節點

1、編輯配置文件

find / -name ‘my-default.cnf‘

cp my-default.cnf /etc/my.cnf

vi /etc/my.cnf

[mysql]

?

# CLIENT #

port?????????????????????????? = 3306

socket???????????????????????? =/data/munion_db/mysql.sock

?

[mysqld]

?

# GENERAL #

user?????????????????????????? = mysql

default-storage-engine???????? = InnoDB

skip-name-resolve

character-set-server?????????? = utf8

socket???????????????????????? =/data/munion_db/mysql.sock

pid-file?????????????????????? =/data/munion_db/mysql.pid

?

# MyISAM #

key-buffer-size??????????????? = 32M

myisam-recover?????????? ??????= FORCE,BACKUP

?

# SAFETY #

max-allowed-packet???????????? = 16M

max-connect-errors???????????? = 1000000

skip-name-resolve

sysdate-is-now???????????????? = 1

innodb???????????????????????? = FORCE

?

# DATA STORAGE #

datadir??????????????????????? = /data/munion_db

?

# BINARY LOGGING #

log-bin??????????????????????? =/data/munion_db/mysql-bin

expire-logs-days?????????????? = 14

sync-binlog??????????????????? = 1

# REPLICATION #

relay-log????????????????????? =/data/munion_db/relay-bin

slave-net-timeout????????????? = 60

?

# CACHES AND LIMITS #

tmp-table-size???????????????? = 250M

max-heap-table-size??????????? = 250M

query-cache-type?????????????? = 0

query-cache-size?????????????? = 0

max-connections??????????????? = 2000

thread-cache-size?????????? ???= 100

open-files-limit?????????????? = 65535

table-definition-cache???????? = 4096

table-open-cache?????????????? = 6000

?

# INNODB #

innodb-flush-method??????????? = O_DIRECT

innodb-log-files-in-group????? = 4

innodb-log-file-size?????????? = 1g

innodb_log_buffer_size???????? = 30M

innodb-flush-log-at-trx-commit = 2

innodb-file-per-table????????? = 1

innodb-buffer-pool-size??????? = 25G

innodb_buffer_pool_instances?? = 24

innodb_thread_sleep_delay????? = 40

innodb_change_buffer_max_size? = 50

innodb_adaptive_hash_index???? = 1

?

?

init_connect=‘SET autocommit=0‘

wait_timeout=100

#interactive_timeout=100

?

# LOGGING #

log-error????????????????????? =/data/munion_db/mysql-error.log

log-queries-not-using-indexes? = 1

slow-query-log???????????????? = 1

slow-query-log-file??????????? = /data/munion_db/mysql-slow.log

?

?

#config for wsrep

wsrep_provider=/usr/lib64/libgalera_smm.so

wsrep_cluster_address=gcomm://10.25.141.55,10.25.141.56

binlog_format=ROW

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

wsrep_node_address=10.25.141.55

wsrep_sst_method=xtrabackup-v2

wsrep_cluster_name=my_centos_cluster

wsrep_sst_auth="sstuser:s3cret"

wsrep_slave_threads=8

wsrep_provider_options=‘gcs.max_packet_size=10485760;gcache.size=2147483648;replicator.commit_order=3‘

wsrep_max_ws_rows=10485760

wsrep_max_ws_size=2147483648

#config for others

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

配置第二個節點

[mysql]

?

# CLIENT #

port?????????????????????????? = 3306

socket???????????????????????? =/data/munion_db/mysql.sock

?

[mysqld]

?

# GENERAL #

user?????????????????????????? = mysql

default-storage-engine???????? = InnoDB

skip-name-resolve

character-set-server?????????? = utf8

socket???????????????????????? =/data/munion_db/mysql.sock

pid-file?????????????????????? =/data/munion_db/mysql.pid

?

# MyISAM #

key-buffer-size??????????????? = 32M

myisam-recover???????????????? = FORCE,BACKUP

?

# SAFETY #

max-allowed-packet????????? ???= 16M

max-connect-errors???????????? = 1000000

skip-name-resolve

sysdate-is-now???????????????? = 1

innodb???????????????????????? = FORCE

?

# DATA STORAGE #

datadir??????????????????????? = /data/munion_db

?

# BINARY LOGGING #

log-bin??????????????????? ????= /data/munion_db/mysql-bin

expire-logs-days?????????????? = 14

?

sync-binlog??????????????????? = 1

?

# REPLICATION #

relay-log????????????????????? =/data/munion_db/relay-bin

slave-net-timeout????????????? = 60

?

# CACHES AND LIMITS #

tmp-table-size?? ??????????????= 32M

max-heap-table-size??????????? = 32M

query-cache-type?????????????? = 0

query-cache-size?????????????? = 0

max-connections??????????????? = 3000

thread-cache-size????????????? = 100

open-files-limit?????????????? = 65535

table-definition-cache???????? = 4096

table-open-cache?????????????? = 3000

?

# INNODB #

innodb-flush-method??????????? = O_DIRECT

innodb-log-files-in-group????? = 4

innodb-log-file-size?????????? = 1g

innodb_log_buffer_size???????? = 30M

innodb-flush-log-at-trx-commit = 2

innodb-file-per-table????????? = 1

innodb-buffer-pool-size??????? = 25G

innodb_buffer_pool_instances?? = 12

innodb_thread_sleep_delay????? = 40

init_connect=‘SET autocommit=0‘

wait_timeout=100

interactive_timeout=100

?

# LOGGING #

log-error????????????????????? =/data/munion_db/mysql-error.log

log-queries-not-using-indexes? = 1

slow-query-log???????????????? = 1

slow-query-log-file??????????? = /data/munion_db/mysql-slow.log

?

#config for wsrep

wsrep_provider=/usr/lib64/libgalera_smm.so

wsrep_cluster_address=gcomm://10.25.141.55,10.25.141.56

binlog_format=ROW

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

wsrep_node_address=10.25.141.56

wsrep_cluster_name=my_centos_cluster

#wsrep_sst_method=xtrabackup-v2

wsrep_sst_method=rsync

wsrep_sst_auth="sstuser:s3cret"

wsrep_slave_threads=8

wsrep_provider_options=‘gcs.max_packet_size=10485760;gcache.size=2147483648;replicator.commit_order=3‘

wsrep_max_ws_rows=10485760

wsrep_max_ws_size=2147483648

?

#config for others

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

LVS+Keepalived配合腳本

#vi /etc/rc.d/init.d/realserver.sh

#!/bin/bash?

# description: Config realserver lo andapply noarp?

SNS_VIP=192.168.0.110?

# /etc/rc.d/init.d/functions?

case "$1" in?

start)?

??????ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP?

??????/sbin/route add -host $SNS_VIP dev lo:0?

??????echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore?

??????echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce?

??????echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore?

??????echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce?

??????sysctl -p >/dev/null 2>&1?

??????echo "RealServer Start OK"?

??????;;?

stop)?

??????ifconfig lo:0 down?

??????route del $SNS_VIP >/dev/null 2>&1?

??????echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore?

??????echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce?

??????echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore?

??????echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce?

??????echo "RealServer Stoped"?

??????;;?

*)?

??????echo "Usage: $0 {start|stop}"?

??????exit 1?

esac?

exit 0?

加入開機自啟動:

vim/etc/rc.local

#!/bin/sh

#

# This script will be executed *after* allthe other init scripts.

# You can put your own initialization stuffin here if you don‘t

# want to do the full Sys V style initstuff.

?

touch /var/lock/subsys/local

./etc/rc.d/init.d/realserver.shstart

啟動相關服務

??主備LVS

#servicekeepalived start #啟動keepalived服務

??MySQL Cluster中的2臺SQL節點

?#cd /etc/rc.d/init.d/

?#chmod 755 realserver.sh

???? #./realserver.sh

測試

方法一:

#telnet192.168.0.110 3306

方法二:

?使用mysql的各種客戶端工具連接mysql。

Mysql上的RAC:Percona XtraDB Cluster負載均衡集群安裝部署手冊