# 接上版 链接:http://xiong51.blog.51cto.com/5239058/1929054

########### node1 mysql安装开始 ##################

[root@node1 ~]# pcs cluster stop --all

[root@node1 ~]# systemctl  start drbd

[root@node2 ~]# systemctl  start drbd

# 将节点1设为主节点挂载磁盘配置mariadb

[root@node1 ~]# drbdadm primary mystore

[root@node1 ~]# drbd-overview

0:mystore/0  Connected Primary/Secondary UpToDate/UpToDate

[root@node1 ~]# groupadd -r -g 3000 mysql

[root@node1 ~]# useradd -r -g 3000 -u 3001 mysql

# 挂载drbd磁盘并创建目录

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

[root@node1 ~]# mkdir /mydata/mysql

# 设置目录权限为mysql组,mysql用户

[root@node1 ~]# chown mysql.mysql /mydata/mysql/ -R

# 解压至/usr/local 并软链成mysql目录

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

[root@node1 ~]# cd !$

[root@node1 local]# chown mysql.mysql mariadb-5.5.54-linux-x86_64/ -R

[root@node1 local]# ln -sv mariadb-5.5.54-linux-x86_64/ mysql

[root@node1 local]# cd mysql/

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

# 添加文件属性,不检查名称,目录   添加如下几行

[root@node1 mysql]#  vim /etc/my.cnf

innodb_file_per_table = 1

skip_name_resolve = 1

datadir = /mydata/mysql

basedir = /usr/local/mysql

# 初始化数据库

[root@node1 mysql]# ./scripts/mysql_install_db --user=mysql --group=mysql --basedir=/usr/local/mysql/ --datadir=/mydata/mysql/

# 复制启动脚本

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

[root@node1 mysql]# chmod +x  /etc/init.d/mysqld

# 安装完成 直接

[root@node1 mysql]# service mysqld start

Starting MySQL.170524 17:12:04 mysqld_safe Logging to '/mydata/mysql/node1.err'.

170524 17:12:04 mysqld_safe Starting mysqld daemon with databases from /mydata/mysql

.. SUCCESS!

# 设置环境变量

[root@node1 bin]# vim /etc/profile.d/mysql.sh

export PATH=/usr/local/mysql/bin:$PATH

[root@node1 bin]# source !$

# 能直接登陆说明安装成功

[root@node1 bin]# mysql

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

Your MariaDB connection id is 2

Server version: 5.5.54-MariaDB MariaDB Server

[root@node1 bin]# service mysqld stop

Shutting down MySQL...... SUCCESS!

# 卸载磁盘 注意上面那步停止mysql一定要做

[root@node1 mysql]# umount /mydata/

# 将node1设置为从节点

[root@node1 bin]# drbdadm secondary mystore

[root@node1 bin]# drbd-overview

0:mystore/0  Connected Secondary/Secondary UpToDate/UpToDate

# 复制配置至另一主机中

[root@node1 mysql]# scp /etc/my.cnf node2:/etc/

################## node1 mysql安装完成 ###################

################## node2 mysql安装开始 ###################

# 此处为节点2新建mysql用户

[root@node2 ~]# groupadd -r -g 3000 mysql

[root@node2 ~]# useradd -r -g 3000 -u 3001 mysql

[root@node2 ~]# drbdadm primary mystore

[root@node2 ~]# drbd-overview

0:mystore/0  Connected Primary/Secondary UpToDate/UpToDate

# 挂载drbd磁盘并创建目录

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

# 解压至/usr/local 并软链成mysql目录

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

[root@node2 ~]# cd !$

[root@node2 local]# chown mysql.mysql mariadb-5.5.54-linux-x86_64/ -R

[root@node2 local]# ln -sv mariadb-5.5.54-linux-x86_64/ mysql

[root@node2 local]# cd mysql/

#无需初始化,配置启动文件

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

[root@node2 mysql]# chmod +x  /etc/init.d/mysqld

# 安装完成 直接

[root@node2 mysql]# service mysqld start

Starting MySQL.170524 17:12:04 mysqld_safe Logging to '/mydata/mysql/node2.err'.

170524 17:12:04 mysqld_safe Starting mysqld daemon with databases from /mydata/mysql

.. SUCCESS!

# 设置环境变量

[root@node2 bin]# vim /etc/profile.d/mysql.sh

export PATH=/usr/local/mysql/bin:$PATH

[root@node2 bin]# source !$

# 能直接登陆说明安装成功

[root@node1 bin]# service mysqld stop

Shutting down MySQL...... SUCCESS!

# 卸载磁盘 注意上面那步停止mysql一定要做

[root@node1 mysql]# umount /mydata/

# 将node1设置为从节点

[root@node1 bin]# drbdadm secondary mystore

[root@node1 bin]# drbd-overview

0:mystore/0  Connected Secondary/Secondary UpToDate/UpToDate

#################### node2 mysql安装完成 #####################

# 配置高可用 必须停止drbd

[root@node1 ~]# systemctl  stop drbd

[root@node2 ~]# systemctl  stop drbd

[root@node1 ~]# pcs cluster start --all

# 定义一个虚拟IP地址

crm(live)configure# primitive mysqlip ocf:heartbeat:IPaddr2 params ip=200

# 定义mysql启动服务

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

# Mandatory: 也可定义成inf

# 定义mysqlip必须跟mysqlserver一起

crm(live)configure# colocation mysqlip_with_mysqlserver inf: mysqlip mysqlserver

# 定义顺序约束 主从启动后跟挂载,(排序约束中也有一条,定义的是mount必须跟drbd的主节点在一起)

crm(live)configure# order mount_after_ms_mydatas_master Mandatory: ms_mydatas:promote mount

# 顺序约束大概如下意思     drbd(启动主节点时直接挂载) --> mysqlip -->  mount --> mysqlserver

crm(live)configure# order mysqlip_after_mount Mandatory: mysqlip mount

crm(live)configure# order mysqlserver_after_mysqlip Mandatory: mysqlip mysqlserver

###################查看所有定义资源的信息####################

crm(live)# configure

crm(live)configure# show

node 1: node1

node 2: node2

primitive mount Filesystem \

params device="/dev/drbd0" directory="/mydata" fstype=ext4 \

op start timeout=60s interval=0 \

op stop timeout=60s interval=0

primitive mydatas ocf:linbit:drbd \

params drbd_resource=mystore \

op monitor role=Master interval=10s timeout=20s \

op monitor role=Slave interval=20s timeout=20s \

op start timeout=240s interval=0 \

op stop timeout=100s interval=0

primitive mysqlip IPaddr \

params ip=192.168.8.200 broadcast=192.168.8.255

primitive mysqlserver lsb:mysqld \

op monitor timeout=30s interval=20s

ms ms_mydatas mydatas \

meta clone-max=2 clone-node-max=1 master-max=1 master-node-max=1 notify=true

order mount_after_ms_mydatas_master inf: ms_mydatas:promote mount

colocation mount_with_ms_mydatas_master inf: mount ms_mydatas:Master

order mysqlip_after_mount Mandatory: mysqlip mount

colocation mysqlip_with_mysqlserver inf: mysqlip mysqlserver

order mysqlserver_after_mysqlip Mandatory: mysqlip mysqlserver

##################################################################

##############################状态查看##############################

crm(live)# show

ERROR: show: No such command

crm(live)# status

Last updated: Fri May 26 11:51:42 2017

Last change: Fri May 26 11:43:38 2017 by root via cibadmin on node1

Stack: corosync

Current DC: node1 (version 1.1.13-10.el7-44eb2dd) - partition with quorum

2 nodes and 5 resources configured

Online: [ node1 node2 ]

Full list of resources:

Master/Slave Set: ms_mydatas [mydatas]

Masters: [ node1 ]

Slaves: [ node2 ]

mount(ocf::heartbeat:Filesystem):Started node1

mysqlip(ocf::heartbeat:IPaddr):Started node1

mysqlserver(lsb:mysqld):Started node1

####################################################################

# 切换节点,查看状态是否能够转移

crm(live)# node

crm(live)node# standby node1

# 错误提示

Master/Slave Set: ms_mydatas [mydatas]

Masters: [ node2 ]

Stopped: [ node1 ]

mount(ocf::heartbeat:Filesystem):Stopped

mysqlip(ocf::heartbeat:IPaddr):Stopped

mysqlserver(lsb:mysqld):Stopped

Failed Actions:

* mysqlserver_start_0 on node2 'unknown error' (1): call=216, status=complete, exitreason='none',

last-rc-change='Fri May 26 11:52:53 2017', queued=0ms, exec=1060ms

* mount_start_0 on node2 'unknown error' (1): call=215, status=complete, exitreason='Couldn't mount filesystem /dev/drbd0 on /mydata',

last-rc-change='Fri May 26 11:52:53 2017', queued=0ms, exec=349ms

# 解决方案:当出现无法挂载之类的情况首先先清空一下状态,可能是前一个节点信息还没有传递到另一个节点

crm(live)node# clearstate node2

Do you really want to drop state for node node2 (y/n)? y

Waiting for 1 replies from the CRMd. OK

############清空之后再查看#############

crm(live)# status

Last updated: Fri May 26 11:54:28 2017

Last change: Fri May 26 11:52:47 2017 by root via crm_attribute on node1

Stack: corosync

Current DC: node1 (version 1.1.13-10.el7-44eb2dd) - partition with quorum

2 nodes and 5 resources configured

Node node1: standby

Online: [ node2 ]

Full list of resources:

Master/Slave Set: ms_mydatas [mydatas]

Masters: [ node2 ]

Stopped: [ node1 ]

mount(ocf::heartbeat:Filesystem):Started node2

mysqlip(ocf::heartbeat:IPaddr):Started node2

mysqlserver(lsb:mysqld):Started node2

############成功切换至另一节点

# 避免node1恢复抢回,抢回可能也会导致服务无法正常使用,设置黏性

crm(live)configure# property default-resource-stickiness=100

# 然后将node1设置为online状态

crm(live)node# online

# 再次查看服务, node2依旧正常运行

http://litaotao.blog.51cto.com/6224470/1303307

mysql drbd pacemaker_corosync+pacemaker+mysql+drbd 实现mysql的高可用相关推荐

  1. mysql(三)路由器读写分离、MHA高可用

    1 mysql 路由器实现读写分离 简介: MySQL 路由器是 InnoDB 集群的一部分,是轻量级中间件,可在应用程序和后端 MySQL 服务器之间提供透明路由.它可用于各种用例,例如通过有效地将 ...

  2. mysql版本不一致会导致uuid_MySQL性能优化和高可用架构建议

    1.主从复制binlog_format要使用row,statement会导致主从数据不一致(基于语句,rand或uuid等函数没法恢复) 2.如果使用binlog恢复数据,标准做法是用mysqlbin ...

  3. MySQL 5.6通过MMM实现读写分离的高可用架构

    上一篇博文我们使用keepalived+主从同步搭建了一个简单的MySQL高可用架构(详见https://blog.51cto.com/jiangjianlong/1981994),今天再分享下通过M ...

  4. mysql查询每个机构下的账号总数_MySQL高可用方案:实践篇

    今天我们就来搭建一个读写分离,负载均衡的MySQL集群.想了解高可用理论方面内容的童鞋可以阅读理论篇. 奥兹·杰克:MySQL高可用方案:理论篇​zhuanlan.zhihu.com 搭建的集群的基本 ...

  5. MySQL搭建主从复制 读写分离 分库分表 MyCat高可用

    主从演示 读写演示 分表演示 主从复制 环境的介绍 系统环境:centos7.0 客户端连接工具:xshell 远程文件传输工具:xftp 服务器: 192.168.126.138(主) 192.16 ...

  6. Keepalived+LVS+MySQL双主复制实现读写负载均衡及高可用

    目录 一.Keepalived和LVS简介 1. Keepalived简介 2. LVS简介 二.安装配置 1. 下载安装LVS 2. 下载安装Keepalived 3. Keepalived配置 5 ...

  7. 数据库mysql工序_网易杭研总结:数据库高可用技术之道(4)

    数据库作为IT系统中最关键的服务之一,其可用性一直是系统设计中的重点考虑因素.同时,由于数据库有数据有状态的天性,数据库高可用有其天然的复杂性和难点,云原生架构下尤其如此,是一个值得深入探讨的课题.本 ...

  8. 利用pcs+pacemaker+corosync实现(HA)高可用集群

    实验环境搭建 创建一台操作系统是rhel7.6的虚拟机node,配置好网络仓库,解析,网卡设置,关闭火墙和selinux后封装 克隆node虚拟机,虚拟机域名为node1,node2,node3,主机 ...

  9. Pacemaker+Corosync+Mfs+Iscsi+Fence实现高可用和Fence管理

    前言: 分布式文件系统(DIstributed File System)     时值文件系统管理的物理存储资源不一定直接连接在本地 的节点上,而是通过计算机网络与节点相连,简单的来讲,就是把一些分散 ...

最新文章

  1. binlog2mysql,MySQL 数据恢复工具之binlog2sql
  2. 基于FFmpeg和Android的音视频同步播放实现
  3. Python中type()详解:动态创建类
  4. 【渝粤题库】广东开放大学 文化市场营销 形成性考核 (2)
  5. linux优先级队列,Python3 线程优先级队列( Queue)
  6. redis启动管理脚本
  7. html5 canvas 获取当前坐标,html5 canvas fillRect坐标和大小的问题解决方法
  8. elasticsearch5.0.1集群排错的几个思路总结
  9. 为什么时间是60进制的啊? ? ?
  10. 微博爬虫思路:Python通过移动端接口爬取,简单易操作
  11. VTK:线宽用法实战
  12. 《你必须知道的.NET》读书实践:一个基于OO的万能加载器的实现
  13. uniapp 添加地图标记点
  14. Java:IO流的概念、作用、分类
  15. 联想A800新蜂ROM刷机包 官方4.0.4优化 精简省电稳定 V1.2
  16. mock模拟接口测试 vue_VUE使用Mock模拟接口
  17. 帆软中python调用_如何1min了解台灣及全球地震分佈情況:用PythonFineReport培養分析思維(上)...
  18. 阿里云服务器搭建WORDPRESS案例
  19. 【花雕体验】14 行空板pinpong库测试外接传感器模块
  20. 安全运维工资平均收入¥20-30k ???

热门文章

  1. angular基本知识学习笔记 - Component的基本概念
  2. Netweaver的端口号和Spring boot内嵌的Tomcat端口
  3. 一个好用的临时文件上传和下载工具 - 奶牛快传
  4. how is json model initialized with json data
  5. SAP OData 后台ETAG校验逻辑
  6. When is abap.js loaded by Launchpad
  7. 借助Fiddle使用不同版本的UI5库文件进行测试
  8. 关于错误Resource interpreted as Script but transferred with MIME type text_html
  9. SAP ABAP实用技巧介绍系列之如何生成值为NULL的table row
  10. pom.xml dependency依赖的研究