编译安装MySQL实现corosync+pacemaker+drbd+mysql高可用

实验拓扑图:

实验节点:节点一:IP:172.16.249.248    host:  node1.stu11.com  node1

节点二:IP:172.16.249.122    host: node3.stu11.com    node3

wKiom1S58bCwx945AADEhiTB-SY859.jpg

节点二的配置前准备:

##########下载安装drbd,以及依赖的包########

[root@node3 ~ ]# rpm -ivh drbd84-utils-8.9.1-1.el6.elrepo.x86_64.rpm kmod-drbd84-8.4.5-504.1.el6.x86_64.rpm

[root@node3 ~ ]# yum install corosync pacemaker -y ####安装corosync和pacemaker

[root@node3 .ssh ]#fdisk /dev/sda       ####创建用作drbd的磁盘,我这里使用分区模拟了

Command (m for help): n

Command action e  extended p

primary partition (1-4) p

Partition number (1-4): 3

First cylinder (7859-15665, default 7859):

Using default value 7859

Last cylinder,

+cylinders or +size{K,M,G} (7859-15665, default 15665): +2G ##2G同步快一点,实际大小看生产需要

Command (m for help): w

[root@node3 .ssh ]#partx -a /dev/sda

节点一配置:

[root@node1 ~ ]# rpm -ivh drbd84-utils-8.9.1-1.el6.elrepo.x86_64.rpm kmod-drbd84-8.4.5-504.1.e

[root@node1 ~ ]# yum install corosync pacemaker -y

[root@node1 ~ ]#fdisk /dev/sda

Command (m forhelp): n

Command action e  extended  p

primary partition (1-4) p

Partition number(1-4): 3

First cylinder(7859-15665, default 7859):

Using default value7859

Last cylinder,

+cylinders or +size{K,M,G} (7859-15665, default 15665): +2G

Command (m forhelp): w

[root@node1 ~ ]#partx -a /dev/sda

##############################编辑corosync配置文件##############################

[root@node1 corosync]# cp corosync.conf.example corosync.conf

[root@node1 corosync]# vim corosync.conf    ##仅显示的是在使用的部分

2 compatibility: whitetank

3

4 totem {

5     version: 2

10     secauth: on

12     threads: 0

17     interface {

19         ringnumber: 0

25         bindnetaddr: 172.16.0.0

39         mcastaddr: 239.22.11.123  ##指定组播地址

44         mcastport: 5405

49         ttl: 1

50     }

51 }

53 logging {

57     fileline: off

60     to_stderr: no

63     to_logfile: yes

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

66     to_syslog: yes

68     debug: off

72     timestamp: on

73    logger_subsys {

74        subsys: AMF

75        debug: off

76     }

77 }

78 service {         ####将pacemaker以模块方式和corosync结合工作

79    ver: 0

80    name: pacemaker

81 }

##########################################生成密钥########################################

[root@node1 yum.repos.d ]# corosync-keygen

Writing corosync key

to /etc/corosync/authkey.

[root@node1 drbd.d]# ls

global_common.conf  global_common.conf.bak  mydisk.res

[root@node1 corosync]# ll

total 24

-r-------- 1 root

root  128 Jan 17 09:38 authkey    ###保证权限是600或400

-rw-r--r-- 1 root

root 2701 Jan 17 09:38 corosync.conf

[root@node1 corosync]# scp corosync.conf authkey node3:/etc/corosync/

corosync.conf                   100% 2701     2.6KB/s   00:00

authkey                         100%  128     0.1KB/s  00:00

[root@node3 corosync ]# ll    //查看各节点密钥文件权限都是600,默认是不需要修改的。

total 24

-r-------- 1 root

root  128 Jan 17 09:38 authkey

############################配置各节点DRBD配置文件配置##############################################

[root@node1 drbd.d]# vim global_common.conf

5 global {

6    usage-count no;

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

8 }

10 common {

11    handlers {

17         pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh;/usr/lib/drbd/notify-emergency-reboot.sh; echo     b > /proc/sysrq-trigger ; reboot-f";

18         pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh;/usr/lib/drbd/notify-emergency-reboot.sh; echo     b > /proc/sysrq-trigger ; reboot-f";

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

25     }

26

27    startup {

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

29     }

30

31    options {

32        # cpu-mask on-no-data-accessible

33     }

35     disk {

36          on-io-error detach; ###磁盘故障直接拆除

41     }

42

43    net {

44         protocol C; ###最稳妥的协议

45         cram-hmac-alg "sha1";

46         shared-secret "test";

54     }

56 syncer {

57    rate 100M;

58

59 }

60 }    //一定要注意最后一个引号,是全局段的。

##################################配值DRBD资源文件##################################################

[root@node1 drbd.d ]#vim mydisk.res

1 resource mydisk {

2    on node1.stu11.com {

3        device /dev/drbd0;

4        disk /dev/sda3;

5        address 172.16.249.248:7789;

6        meta-disk internal;

7        }

8        on node3.stu11.com {

9        device /dev/drbd0;

10        disk /dev/sda3;

11        address 172.16.249.122:7789;

12        meta-disk internal;

13        }

14 }

#################################同步两个节点的配置文件###########################################

[root@node1 drbd.d]# scp global_common.conf mydisk.res node3:/etc/drbd.d/

global_common.conf                    100% 2101     2.1KB/s   00:00

mydisk.res                            100%  257     0.3KB/s   00:00

##################################各节点资源初始化#################################################

[root@node1 corosync]# drbdadm create-md mydisk

initializing

activity log

NOT initializing

bitmap

Writing meta data...

New drbd meta data

block successfully created.

[root@node3 drbd.d]# drbdadm create-md mydisk

initializing

activity log

NOT initializing

bitmap

Writing meta data...

New drbd meta data

block successfully created.

[root@node3 corosync]# service drbd start

Starting DRBD

resources:

##########################################启动各节点DRBD###########################################

[root@node1 corosync]# service drbd start

Starting DRBD

resources:

wKiom1S5-P-yT5ifAADHFsB3Q2U098.jpg

[root@node1 corosync ]# drbd-overview     //查看节点状态

0:mydisk/0  Connected Secondary/Secondary Inconsistent/Inconsistent

##########################提升一个节点为主节点:并且查看数据在同步######################################

[root@node1 corosync]# drbdadm primary --force mydisk

[root@node1 corosync]# drbd-overview

0:mydisk/0

SyncSource Primary/Secondary UpToDate/Inconsistent

[>...................]

sync'ed:  7.1% (1959028/2103412)K

wKioL1S5-zLRwAzuAAGTM_9o4Nw385.jpg

##################################对DRBD格式化####################################################

[root@node1 corosync ]# mke2fs -t ext4 /dev/drbd0   //对主节点格式化

wKiom1S5-sOy7yq9AADDFnFRipc185.jpg

#####################################挂载创建测试文件############################################

[root@node1 corosync ]# mount /dev/drbd0 /mnt/

[root@node1 corosync]# cd /mnt/

[root@node1 mnt ]#ls

lost+found

[root@node1 mnt ]#touch test.txt

[root@node1 mnt ]#ls

lost+found  test.txt

##################### ##降为从节点把另一个节点升为主节点挂载查看测试文件########################

[root@node1 ~ ]# umount /mnt/

[root@node1 ~ ]#drbd

drbdadm        drbdmeta       drbd-overview  drbdsetup

[root@node1 ~ ]#drbdadm secondary mydisk

[root@node1 ~ ]#drbd-overview

0:mydisk/0

Connected Secondary/Secondary UpToDate/UpToDate

#####################节点二升级主节点,查看测试文件#################################

wKiom1S5-_ihLcNtAAEVRvGonog788.jpg

至此:两个节点的DRBD已经建成同步完成。开始布置两个节点的mysql。

######################准备各节点的mysql#############################################                     准备编译环境及安装:

[root@node3 /]# yum groupinstall "Development Tools" -y

[root@node3 /]# yum install "Server Platform Developmnet"

[root@node3 ~ ]# yum install cmake -y     //mariadb是使用cmake的编译安装的

[root@node3 ~ ]# tar xf mariadb-10.0.13.tar.gz -C /usr/local/

[root@node3 local ]#groupadd -g 306 mysql

[root@node3 local ]#useradd -u 306 -g 306 mysql

[root@node3 local ]#id mysql

uid=306(mysql) gid=306(mysql) groups=306(mysql)

[root@node3 local ]#mkdir /mydata

[root@node3 ~ ]#umount /mnt/

[root@node3 local ]#chown -R mysql:mysql /mydata

[root@node3 ~ ]#mount /dev/drbd0 /mydata

[root@node3 mariadb-10.0.13 ]#cmake .

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \##指定安装路径

-DMYSQL_DATADIR=/mydata \                ##指定库位置

-DWITH_INNOBASE_STORAGE_ENGINE=1 \       ##指定存储引擎

-DWITH_ARCHIVE_STORAGE_ENGINE=1\

-DWITH_BLACKHOLE_STORAGE_ENGINE=1\

-DWITH_READLINE=1\

-DWITH_SSL=system\                      ##定制SSL功能

-DWITH_ZLIB=system\                     ##定制ZLIB功能

-DWITH_LIBWRAP=0\

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock\      ##sock位置

-DDEFAULT_CHARSET=utf8 \                 ##默认字符集

-DDEFAULT_COLLATION=utf8_general_ci

#make

#make之后

Linking CXX

executable my_safe_process

[100%] Built target

my_safe_process

[root@node3 mysql ]#ls /mydata/

aria_log.00000001  aria_log_control  ibdata1

ib_logfile0  ib_logfile1  mysql performance_schema  test

[root@node3support-files ]# cp my-large.cnf /etc/mysql/my.cnf

[root@node3support-files ]# cd /etc/mysql

[root@node3 mysql ]#ls

my.cnf

[root@node3 mysql ]#vim my.cnf  #####在mysqld添加如下

innodb_file_per_table = on

datadir = /mydata

[root@node3 mysql ]#

service mysqld start

Starting

MySQL...

[  OK  ]

[root@node3 mysql ]# mysql   //登陆已经正常了

Welcome to the MySQL

monitor.  Commands end with ; or \g.

Your MySQL

connection id is 4

Server version: 5.5.5-10.0.13-MariaDB-log Source

distribution

Copyright (c) 2000,

2013, Oracle and/or its affiliates. All rights reserved.

wKioL1S6AKiBdZmaAACOJ8rbeRU363.jpg

注意:同样的步骤部署第二个节点mysql但是,不要初始化。因为共享磁盘已经初始化过了。

########################下面,就可以使用crmsh配置资源了。###########################

下面,就可以使用crmsh配置资源了。

首先:保证我们两个节点的服务不会开机自动启动。

wKioL1S6AhCjIfplAADGdV1gZTs642.jpg

wKiom1S6AV3BIyK6AAEBu0s2HYQ789.jpg

##################启动两个节点的corosync##########################################################

[root@node3 ~ ]#service corosync start

Starting Corosync

Cluster Engine (corosync):              [  OK  ]

[root@node3 ~ ]# service mysqld stop    ##停掉我们使用的所有资源

Stopping

mysqld:                                          [  OK  ]

[root@node3 ~ ]#umount /mydata/

[root@node3 ~ ]#drbd-overview

0:mydisk/0 Connected Primary/Secondary UpToDate/UpToDate

[root@node3 ~ ]#drbdadm secondary mydisk

[root@node3 ~ ]#drbd-overview

0:mydisk/0 Connected Secondary/Secondary UpToDate/UpToDate

[root@node3 ~ ]#service drbd stop

Stopping all DRBD

resources: .

wKioL1S6Av7xuRf-AAE6aE3fG9I709.jpg

安装crmsh    ##安装并且定义

[root@node3 ~ ]# yum install crmsh-2.1-1.6.x86_64.rpm

[root@node3 ~ ]# crm

crm(live)# configure

#####################第一步:定义前提属性#############################

crm(live)configure# property stonith-enabled=false            //禁用stonish

crm(live)configure# property no-quorum-policy=ignore    //定义无票策略

#####################第二步:定义DRBD主资源###########################

crm(live)configure#

primitive mydrbd ocf:linbit:drbd params drbd_resource="mydisk" op

monitor role=Master timeout=20 interval=10 op monitor role=Slave timeout=20

interval=10 op start timeout=240 op stop timeout=100

####################第三步:定义DRBD主从资源##########################

crm(live)configure#ms ms_mydrbd mydrbd meta master-max="1" master-node-max="1"

clone-max="2" clone-node-max="1" notify="true"

####################第四步:定义文件系统资源##########################

crm(live)configure#primitive myfs ocf:heartbeat:Filesystem params device=/dev/drbd0

directory=/mydata fstype="ext4" op monitor timeout=40 interval=20 op start timeout=60 op stop timeout=60

####################第五步:定义协同约束##############################

crm(live)configure#colocation mydrbd-master_with_myfs inf: ms_mydrbd:Master myfs

crm(live)configure#

####################第六步:定义顺序约束##############################

crm(live)configure#order ms_mydrbd-master_before_myfs inf: ms_mydrbd:promote myfs:start

#################第七步:定义流动IP###################################

crm(live)configure#primitive myvip ocf:heartbeat:IPaddr params ip=172.16.11.11 op monitor

timeout=20 interval=10 op start timeout=20 op stop timeout=20

###################第八步:定义mysql服务资源############################

crm(live)configure#primitive myservice lsb:mysqld op monitor timeout=20 interval=20

crm(live)configure#

###################第九步:定义他们为一个组资源########################

crm(live)configure#group mygroup myvip myfs ms_mydrbd:Master myservice

####################第十步:定义他们的协同约束#########################

crm(live)configure#order myfs_before_myservice inf: myfs:start myservice:start

crm(live)configure# commit     ##提交

interval in monitor_Master must be unique

crm(live)configure#show     ##查看我们定义的所有资源

wKiom1S6A5azjLKOAAVVzvgpk14762.jpg

切换测试结果:

wKiom1S6A_Cj3MhEAACrW42JB6g335.jpg

wKiom1S6BBvRHUnUAACjCpLd-ME589.jpg

至此高可用全部完成!

©著作权归作者所有:来自51CTO博客作者观千剑的原创作品,如需转载,请注明出处,否则将追究法律责任

mysqldrbdcorosync服务的高可用

mysql pacemaker_编译安装MySQL实现corosync+pacemaker+drbd+mysql高可用相关推荐

  1. corosync+pacemaker+crmsh的高可用web集群的实现

    网络规划: node1:eth0:172.16.31.10/16 node2: eth0: 172.16.31.11/16 nfs:   eth0: 172.16.31.12/15 注: nfs在提供 ...

  2. 基于corosync+pacemaker实现主从高可用集群

    本实验由两个节点组成高可用主从集群,在实际中不常用,目的是通过实验来加深对corosync的认识和理解. 环境设置: node1:node1.magedu.com ip 172.16.14.10 no ...

  3. corosync+pacemaker+crmsh配置高可用集群。

    实验环境: admin1.tuchao.com 192.168.18.100  ansible管理节点 admin2.tuchao.com 192.168.18.101  集群节点一 admin3.t ...

  4. corosync+pacemaker+drbd构建mysql高可用平台的简单案例

    写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 案例拓扑图 说明: ansible主机主要作用在于配置和安装两台corosync+pacemake ...

  5. Corosync+Pacemaker+DRBD实现Mysql服务的高可用

    一.Corosync概述 请点击查看详细介绍 1.什么是AIS和OpenAIS? AIS是应用接口规范,是用来定义应用程序接口(API)的开放性规范的集合,这些应用程序作为中间件为应用服务提供一种开放 ...

  6. mysql pacemaker_集群:corosync+pacemaker实现MySQL服务高可用

    高可用集群是指以减少服务中断时间为目的的服务器集群技术.它通过保护用户的业务程序对外不间断提供的服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度.高可用集群的应用系统有多样化发展趋势,用 ...

  7. MySQL共享存储主备模式利用Keepalived实现双机高可用

    简单介绍 先简单说下MySQL主从复制与keepalived模式和MySQL共享存储与Keepalived模式 MySQL共享存储主备模式不同于MySQL主主复制模式,MySQL主主是利用MySQL自 ...

  8. MySQL主从复制与lvs+keepalived单点写入读负载均衡高可用实验

    http://blog.csdn.net/wzy0623/article/details/38757561 MySQL主从复制与lvs+keepalived单点写入读负载均衡高可用实验 分类: MyS ...

  9. Redis Sentinel安装与部署,实现redis的高可用

    Redis Sentinel安装与部署,实现redis的高可用 原文:Redis Sentinel安装与部署,实现redis的高可用 前言 对于生产环境,高可用是避免不了要面对的问题,无论什么环境.服 ...

最新文章

  1. [vb+mo] visual baisc 6.0 基于mapobjects 2.4 开发的数字化校园电子地图
  2. oracle简单命令
  3. JVM知识点总览:高级Java工程师面试必备
  4. jquery表单验证
  5. js事件里面套事件怎么不管用_原生js利用localstorage实现简易TODO list应用
  6. 下载文件扩展名php,[宜配屋]听图阁
  7. 通过DriverManager接口获取连接
  8. CodeForces 632C The Smallest String Concatenation(水)
  9. 机器学习:金融领域的岗位需求
  10. 命里有时终须有,命里无时莫强求
  11. Hadoop系列之MapReduce 数据本地化 (29)
  12. OFD文件怎么转PDF?ofd文件转换为pdf格式教程
  13. 图形学基础之透视校正插值
  14. Codeforces 85D Sum of Medians(线段树)
  15. [机器学习][基础编程][pandas]pandas基本操作
  16. 通过海康SDK预览获取回调的PS流数据自己解析然后前端播放
  17. MRP是MRPII的核心,也是系统实施的难点及系统成效的关键
  18. 河北师范大学的计算机专业好吗,河北师范大学计算机应用技术到底咋样啊?
  19. IT管理成功者的蜕变 看致命七宗罪
  20. 图谱实战 | OPPO自研大规模知识图谱及其在小布助手中的应用

热门文章

  1. 【基于flutter的计算器】基础型的flutter计算器
  2. AES加密算法之字节替换操作
  3. Android之BroadcastReceiver使用
  4. Toronto Research Chemicals 杀菌抗生素丨磷霉素-蔗糖醚二钠盐
  5. 中国数字化转型为全球带来机遇
  6. MySQL数据库备份恢复(日志管理)
  7. Vim 替换操作中的特殊字符
  8. 大数据技术原理与应用考试复习
  9. 2017计算机考研考什么时候,2017年考研各科考试时间
  10. android 一起关闭_与Android一起成长