热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PerconaXtraDBCluster安装部署手册_MySQL

PerconaXtraDBCluster安装部署手册

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

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 {

duhj@c-sunrise.com

}

notification_email_from duhj@c-sunrise.com

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 60

protocol TCP

real_server 192.168.0.7 3306

weight 3

# notify_down /root/sh/mysql.sh

TCP_CHECK {

connect_timeout 10

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 10

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

}

2. 从服务器配置/etc/keepalived/keepalived.conf

global_defs {

notification_email {

duhj@c-sunrise.com

}

notification_email_from duhj@c-sunrise.com

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 60

protocolTCP

real_server192.168.0.7 3306

weight 3

#notify_down /root/sh/mysql.sh

TCP_CHECK {

connect_timeout 10

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 10

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

启动相关服务

Ø 主备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。

推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • 对于一般的扩展包,我们一般直接pipinstallxxx即可安装,但是unrar直接安装后,发现并不能通过Python程序实现解压的功能& ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • Linux 服务器修改用户名
    Linux服务器修改用户名1、编辑名称vimetchostname2、保存编辑并退出wq3、重 ... [详细]
author-avatar
api
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有