mysql drbd pacemaker_corosync+pacemaker+mysql+drbd 实现mysql的高可用
# 接上版 链接: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的高可用相关推荐
- mysql(三)路由器读写分离、MHA高可用
1 mysql 路由器实现读写分离 简介: MySQL 路由器是 InnoDB 集群的一部分,是轻量级中间件,可在应用程序和后端 MySQL 服务器之间提供透明路由.它可用于各种用例,例如通过有效地将 ...
- mysql版本不一致会导致uuid_MySQL性能优化和高可用架构建议
1.主从复制binlog_format要使用row,statement会导致主从数据不一致(基于语句,rand或uuid等函数没法恢复) 2.如果使用binlog恢复数据,标准做法是用mysqlbin ...
- MySQL 5.6通过MMM实现读写分离的高可用架构
上一篇博文我们使用keepalived+主从同步搭建了一个简单的MySQL高可用架构(详见https://blog.51cto.com/jiangjianlong/1981994),今天再分享下通过M ...
- mysql查询每个机构下的账号总数_MySQL高可用方案:实践篇
今天我们就来搭建一个读写分离,负载均衡的MySQL集群.想了解高可用理论方面内容的童鞋可以阅读理论篇. 奥兹·杰克:MySQL高可用方案:理论篇zhuanlan.zhihu.com 搭建的集群的基本 ...
- MySQL搭建主从复制 读写分离 分库分表 MyCat高可用
主从演示 读写演示 分表演示 主从复制 环境的介绍 系统环境:centos7.0 客户端连接工具:xshell 远程文件传输工具:xftp 服务器: 192.168.126.138(主) 192.16 ...
- Keepalived+LVS+MySQL双主复制实现读写负载均衡及高可用
目录 一.Keepalived和LVS简介 1. Keepalived简介 2. LVS简介 二.安装配置 1. 下载安装LVS 2. 下载安装Keepalived 3. Keepalived配置 5 ...
- 数据库mysql工序_网易杭研总结:数据库高可用技术之道(4)
数据库作为IT系统中最关键的服务之一,其可用性一直是系统设计中的重点考虑因素.同时,由于数据库有数据有状态的天性,数据库高可用有其天然的复杂性和难点,云原生架构下尤其如此,是一个值得深入探讨的课题.本 ...
- 利用pcs+pacemaker+corosync实现(HA)高可用集群
实验环境搭建 创建一台操作系统是rhel7.6的虚拟机node,配置好网络仓库,解析,网卡设置,关闭火墙和selinux后封装 克隆node虚拟机,虚拟机域名为node1,node2,node3,主机 ...
- Pacemaker+Corosync+Mfs+Iscsi+Fence实现高可用和Fence管理
前言: 分布式文件系统(DIstributed File System) 时值文件系统管理的物理存储资源不一定直接连接在本地 的节点上,而是通过计算机网络与节点相连,简单的来讲,就是把一些分散 ...
最新文章
- binlog2mysql,MySQL 数据恢复工具之binlog2sql
- 基于FFmpeg和Android的音视频同步播放实现
- Python中type()详解:动态创建类
- 【渝粤题库】广东开放大学 文化市场营销 形成性考核 (2)
- linux优先级队列,Python3 线程优先级队列( Queue)
- redis启动管理脚本
- html5 canvas 获取当前坐标,html5 canvas fillRect坐标和大小的问题解决方法
- elasticsearch5.0.1集群排错的几个思路总结
- 为什么时间是60进制的啊? ? ?
- 微博爬虫思路:Python通过移动端接口爬取,简单易操作
- VTK:线宽用法实战
- 《你必须知道的.NET》读书实践:一个基于OO的万能加载器的实现
- uniapp 添加地图标记点
- Java:IO流的概念、作用、分类
- 联想A800新蜂ROM刷机包 官方4.0.4优化 精简省电稳定 V1.2
- mock模拟接口测试 vue_VUE使用Mock模拟接口
- 帆软中python调用_如何1min了解台灣及全球地震分佈情況:用PythonFineReport培養分析思維(上)...
- 阿里云服务器搭建WORDPRESS案例
- 【花雕体验】14 行空板pinpong库测试外接传感器模块
- 安全运维工资平均收入¥20-30k ???
热门文章
- angular基本知识学习笔记 - Component的基本概念
- Netweaver的端口号和Spring boot内嵌的Tomcat端口
- 一个好用的临时文件上传和下载工具 - 奶牛快传
- how is json model initialized with json data
- SAP OData 后台ETAG校验逻辑
- When is abap.js loaded by Launchpad
- 借助Fiddle使用不同版本的UI5库文件进行测试
- 关于错误Resource interpreted as Script but transferred with MIME type text_html
- SAP ABAP实用技巧介绍系列之如何生成值为NULL的table row
- pom.xml dependency依赖的研究