mysql高可用 packmaker_corosync+pacemaker+drbd+mysql来实现mysql的高可用和数据的同步

实现拓扑图:

3c8ce6380daa33c267ccb0e2e66a02de.png

实验流程:

先对两主机安装上corosync和pacemaker

两主机安装drbd服务,并且设置好drbd的组设备

选择drbd主节点上,进行数据库的初始化

进行资源的定义和配置

测试

实验前,我们还需要做一些准备工作:

1、时间必须保持同步

使用ntp服务器

2、节点必须名称互相通信

解析节点名称

/etc/host

集群中使用的主机名为`uname -n`表示的主机名;

3、ping node

仅偶数节点才需要;

4、ssh密钥认证进行通信;

实验步骤:

安装corosync和pacemaker:

yum install corosync pacemaker -y

配置corosync,同时让pacemaker在corosync以插件的方式运行:

vim /etc/corosync/corosync.conf

compatibility: whitetank

totem {

version: 2

secauth: off

threads: 0

interface {

ringnumber: 0

bindnetaddr: 172.16.100.0

mcastaddr: 226.94.1.1

mcastport: 5405

ttl: 1

}

}

service {

ver: 0

name: pacemaker

}

aisexec {

user: root

group: root

}

logging {

fileline: off

to_stderr: no

to_logfile: yes

to_syslog: yes

logfile: /var/log/cluster/corosync.log

debug: off

timestamp: on

logger_subsys {

subsys: AMF

debug: off

}

}

amf {

mode: disabled

}

为corosync服务提供密钥文件:

corosync-keygen

然后,我们需要把这些配置都要往另一个主机上配置一次。

安装drbd,并且进行全局配置和配置drbd组资源的定义:

这里说明一下,我已经把分区准备好了,且容量一样,分区为/dev/sdb1

rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm(这个包的后缀要与你uanme -r的一致)

vim /etc/drbd.d/global_common.conf 配置drbd全局配置文件

global {

usage-count no;

# minor-count dialog-refresh disable-ip-verification

}

common {

protocol C;

handlers {

# These are EXAMPLE handlers only.

# They may have severe implications,

# like hard resetting the node under certain circumstances.

# Be careful when chosing your poison.

# local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";

# fence-peer "/usr/lib/drbd/crm-fence-peer.sh";

# split-brain "/usr/lib/drbd/notify-split-brain.sh root";

# out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";

# before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";

# after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;

}

startup {

# wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb

}

options {

# cpu-mask on-no-data-accessible

}

disk {

# size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes

# disk-drain md-flushes resync-rate resync-after al-extents

# c-plan-ahead c-delay-target c-fill-target c-max-rate

# c-min-rate disk-timeout

on-io-error detach;

}

net {

# protocol timeout max-epoch-size max-buffers unplug-watermark

# connect-int ping-int sndbuf-size rcvbuf-size ko-count

# allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri

# after-sb-1pri after-sb-2pri always-asbp rr-conflict

# ping-timeout data-integrity-alg tcp-cork on-congestion

# congestion-fill congestion-extents csums-alg verify-alg

# use-rle

cram-hmac-alg "sha1";

shared-secret "mydrbdlab";

}

syncer {

rate 1000M;

}

}

配置drbd组资源的配置文件:

vim /etc/drbd.d/mysqldata.res

resource mysqldata {

on www.bwei.com {

device /dev/drbd0;

disk /dev/sdb1;

address 172.16.100.1:7789;

meta-disk internal;

}

on www2.bwei.com {

device /dev/drbd0;

disk /dev/sdb1;

address 172.16.100.5:7789;

meta-disk internal;

}

}

drbdadm create-md mysqldata

启动drbd服务:

service drbd start

我们查看drbd的状态:

[root@www drbd.d]# drbd-overview

0:mysqldata/0  Connected Secondary/Secondary Inconsistent/Inconsistent C r-----

我们把一个节点设置成主节点:

[root@www drbd.d]# drbdadm -- --overwrite-data-of-peer primary mysqldata

[root@www drbd.d]# drbd-overview

0:mysqldata/0  Connected Primary/Secondary UpToDate/UpToDate C r-----

把这个分区进行格式化:

mke2fs -t ext4 /dev/drbd0

创建mysql的数据目录:

mkdir /data

mount /dev/drbd0 /data

mkdir /data/mysql

提供mysql的用户和组,把数据目录的属主和属组改为mysql:

[root@www ~]# groupadd -r mysql -g 360

[root@www ~]# useradd mysql -g mysql -u 360 -r

[root@www ~]# chown mysql:mysql /data/mysql/

接着,我们开始进行数据的初始化:

[root@www ~]# tar xf mariadb-10.0.10-linux-x86_64.tar.gz -C /usr/local/

[root@www local]# ln -sv mariadb-10.0.10-linux-x86_64 mysql

`mysql' -> `mariadb-10.0.10-linux-x86_64'

[root@www local]# mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql/

[root@www local]# cp mysql/support-files/my-huge.cnf /etc/my.cnf

cp: overwrite `/etc/my.cnf'? y

[root@www local]# vim /etc/my.cnf

[mysqld]

datadir = /data/mysql

[root@www local]# cp mysql/support-files/mysql.server /etc/init.d/mysqld

[root@www local]# chkconfig --add mysqld

[root@www local]# chkconfig mysqld off

[root@www local]# service mysqld start

Starting MySQL..                                           [  OK  ]

[root@www local]# mysql/bin/mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 4

Server version: 10.0.10-MariaDB-log MariaDB Server

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

我们的mysql已经做好了,注意另一个主机也是需要mysql的配置文件和启动脚本,不需要再进行mysql的初始化了。

下面我们需要安装crmsh进行资源配置文件的定义:

rpm -ivh crmsh-1.2.6-4.el6.x86_64.rpm pssh-2.3.1-2.el6.x86_64.rpm

service corosync start

crm

crm(live)# configure

crm(live)configure# property no-quorum-policy=ignore

crm(live)configure# property stonith-enabled=false

crm(live)configure# verify

crm(live)configure# commit

crm(live)configure# primitive mysqldrbd ocf:linbit:drbd params drbd_resource=mysqldata op monitor interval=30 role=Master timeout=30 op monitor interval=40 role=Slave timeout=30 op start timeout=240 op stop timeout=100

crm(live)configure#primitive mysqlfs ocf:heartbeat:Filesystem params device=/dev/drbd0 directory=/data/mysql fstype=ext4 op start timeout=60 op stop timeout=60

crm(live)configure# primitive mysqld lsb:mysqld

crm(live)configure# primitive mysqlvip ocf:heartbeat:IPaddr params ip=172.16.100.4

crm(live)configure# ms ms_mysqldrbd mysqldrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true

crm(live)configure# colocation mysqld_with_mysqlfs inf: mysqld mysqlfs

crm(live)configure#

crm(live)configure#

crm(live)configure# order mysqlfs_after_ms_mysqldrbd inf: ms_mysqldrbd:promote mysqlfs:start

crm(live)configure# order mysqld_after_mysqlfs inf: mysqlfs mysqld

crm(live)configure# commit

crm(live) status

Last updated: Thu Nov  5 05:29:23 2015

Last change: Thu Nov  5 05:26:49 2015 via cibadmin on www.bwei.com

Stack: classic openais (with plugin)

Current DC: www2.bwei.com - partition with quorum

Version: 1.1.10-14.el6-368c726

2 Nodes configured, 2 expected votes

5 Resources configured

Online: [ www.bwei.com www2.bwei.com ]

mysqlfs        (ocf::heartbeat:Filesystem):    Started www.bwei.com

mysqlvip       (ocf::heartbeat:IPaddr):        Started www.bwei.com

Master/Slave Set: ms_mysqldrbd [mysqldrbd]

Masters: [ www.bwei.com ]

Slaves: [ www2.bwei.com ]

mysqld (lsb:mysqld):   Started www.bwei.com

这里看出,我们的服务已经配置完毕!!

原创文章,作者:13-广州-杨过,如若转载,请注明出处:http://www.178linux.com/9071

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值