菜鸟学Linux 第090篇笔记 corosync+drbd+mysql

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

菜鸟学Linux 第090篇笔记 corosync+drbd+mysql




内容总览

上节回顾

DRBD (Distributed Replicated Block Device) 分布式复制块设备

配置drbd

配置drbd+corosync的高可用mysql







上节回顾

heartbeat-ldirectord该rpm包 是用来做lvs高可用而且不用再手动写脚本来进行后台的

realserver是否工作正常,此包自己包含


corosync + ldirectord 与上述相同



再次强调 (自行配置安装)

(rsync|sersync) + inotify 


PAE 内核显示PAE

Physical Address Extention






DRBD (Distributed Replicated Block Device) 分布式复制块设备

DRBD是一个类似raid的一个硬盘复制功能,而raid只支持本地的两块硬盘进行存储相同的数据,

而drbd可以将两个基于tcp/ip协议将电脑硬盘进行数据同步扩大到可以在两台互联网的电脑进行

硬盘数据同步。


drbd 工作在内核中 是内核的一个模块

主从架构(防止文件系统崩溃)

primary 可执行读,写操作

secondary 文件系统不能挂载

主从互相切换


DRBD也有双主模型

把drbd做成ha

DLM (Distributed Lock Manager)

集群文件系统

GFS2 OCFS2


只允许两个节点


硬盘高度器 disk schedule   (未必适用于固态硬盘)

合并读请求,合并写请求

nic network interface card



数据协议 protocol

A Async 异步

semi sync 半同步

sync 同步



drbd source DRBD资源

Resource name  (不可包含空白字符任意ASCII)

DRBD device /dev/drbd0 /dev/drbd1...  主设备号为147

Disk Configuration  双方节点上,各自提供的设备

Network configuration  双方数据同步时所使用的网络属性



User space administration

drbdadm

drbdsetup

drbdmeta





配置drbd


1. 首先配置两个电脑

主机名hosts

时间同步

ssh互信通信



2. 安装drbd 软件包

drbd

先将rpm包下载到本地 以下这种方式是第三台电脑 此电脑已经和两个节点建立互信关系

# for I in {1..2}; do ssh node$I 'rpm -ivh /root/drbd/*.rpm'; done


# rpm -ql drbd




3. drbd的配置

在两个节点上都新建要进行做成drbd的分区 分区大小相同  但不要格式化

我这里两个节点都是/dev/sdb1


定义drbd的资源信息

resource name: mydrbd

drbd device: /dev/drbd0

disk configuration: /dev/sdb1

Network configuration: 


drbd的配置文件

/etc/drbd.conf

/etc/drbd.d/global_common.conf

/etc/drbd.d/resource.d


# cp /usr/share/doc/drbd83-8.3.15/drbd.conf /etc/

# vim /etc/drbd.com

注销此项 #       usage-count yes;

将以下几项启用handlers

pri-on-incon-degr

pri-lost-after-sb 

local-io-error 


disk下添加如下内容

on-io-error detach;


net下添加

cram-hmac-alg "sha1";


syncer下添加

rate 200M

保存退出



4. 定义资源

创建在/etc/drbd.d/下.res结尾的资源文件

vim /etc/drbd.d/mydrbd.res


添加内容如下

resource mydrbd {

device /dev/drbd0;

disk /dev/sdb1;

meta-disk internal;

on node1 {

address 192.168.11.111:7789;

}

on node2 {

address 192.168.11.112:7789;

}

}


最后将此文件和global_common.conf复制到另一个节点

# scp -r /etc/drbd.* node2:/etc/



5. 初始化资源

# for I in {1..2}; do ssh node$I 'drbdadm create-md mydrbd'; done

注意此种方式适合是复制过去的配置文件这样操作,,如果不是的话 两边出错可能不同



6. 启动drbd

# service drbd start (两个节点都得执行)



7. 查看drbd启动状态

# service drbd status


# cat /proc/drbd


# drbd-overview

由此可看出两个节点都是secondary



8. 切换其中一台为主节点

# drbdadm -- --overwrite-data-of-peer primary mydrbd


# drbdadm primary mydrbd

(以上为两种方式)


查看其同步过程

# watch 1 'drbd-overview'


同步完成后就会显示当前节点为主节点

primary/secondary



9. 挂载并创建文件系统

# mkdir /mydata

# mke2fs -j /dev/drbd0

# mount /dev/drbd0 /mydata

# cp /etc/inittab /mydata



10. 再次切换主从drbd

(注意要切换主从时,先将主设置为从节点,再将原先为从的设置为主,即可完成主从切换)


主节点先切换为从

# umount /mydata

# drbdadm secondary mydrbd


从节点切换为主

# mkdir /mydata

# drbdadm primary mydrbd

# mount /dev/drbd0 /mydata


(到此,drbd基本已经建立完成)





配置drbd+corosync的高可用mysql



1. 准备工作

首先将drbd的主节点挂载移除mount

将主节点也切换为从节点 drbdadm

然后两个节点drbd服务停止 service

确保其开机后drbd服务不会自己启动 chkconfig



2. 安装corosync + pacemaker 此处前边已经讲过  这里不再细说


# crm configure

verify

property stonish-enabled=false

verify

commit

property no-quorum-policy=ignore

verify

commit

rsc_defaults resource-stickiness=100

commit

show



3. 配置drbd资源

# crm configure

primitive mysqldrbd ocf:heartbeat:drbd params drbd_resource=mydrbd op 

start timeout=240 op stop timeout=100 op monitor role=Master interval=10s

timeout=20s op monitor role=Slave interval=20s timeout=20 (一行命令)


help ms


ms ms_mysqldrdb mysqldrdb meta master-max=1 master-node-max=1 clone-max=2 

clone-node-max=1 notify=true (一行命令)

verify

commit


挂载drbd filesyste

# crm configure

primitive mystore ocf:heartbeat:Filesystem params device=/dev/drbd0 

directory=/mydata fstype=ext3 op start timeout=60 op stop timeout=60 


verify


限制其要跟mysqldrbd:master 在同一台主机上运行,并且定义其启动顺序

colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master

order mystore_after_ms_mysqldrbd mandatory: ms_mysqldrbd:promote mystore:startr

verify

commit




4. 测试主从drbd切换

# crm node standby 

# crm status

# crm node online

# crm status



5. 安装和配置mysql服务并将其安装目录设置在drbd所挂载的目录里(注意要在主节点完成)

测试其可正常运行  主节点测试完成后,

将drbd节点切换到另一台的主节点 此时不需要进行初始化,只需要配置my.cnf里的

innodb-file-per-table 

datadir = /mydata/data


测试没有问题后在crm里配置其mysql资源


6. 配置mysql资源

# crm configure

primitive mysqld lsb:mysqld

verify

colocation mysqld_with_mystore inf: mysqld mystore

show xml

order mysql_after_mystore mandatory: mystore mysqld

show xml

commit

primitive myip ocf:heartbeat:IPaddr params ip=192.168.11.120 nic=eth0 

cidr_netmask=255.255.255.0

verify

colocation myip_with_ms_mysqldrbd inf: ms_mysqldrbd:Master myip

show xml

commit



(至此 mysqld + drbd + corosync 配置完成)

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1894995如需转载请自行联系原作者


Winthcloud

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
17 0
|
1天前
|
关系型数据库 MySQL Linux
Linux联网安装MySQL Server
Linux联网安装MySQL Server
7 0
|
7天前
|
存储 SQL 关系型数据库
【MySQL实战笔记】03.事务隔离:为什么你改了我还看不见?-02
【4月更文挑战第7天】数据库通过视图实现事务隔离,不同隔离级别如读未提交、读已提交、可重复读和串行化采用不同策略。以可重复读为例,MySQL使用多版本并发控制(MVCC),每个事务有其独立的视图。回滚日志在无更早视图时被删除。长事务可能导致大量存储占用,应避免。事务启动可显式用`begin`或设置`autocommit=0`,但后者可能意外开启长事务。建议使用`autocommit=1`并显式管理事务,若需减少交互,可使用`commit work and chain`。
27 5
|
9天前
|
SQL 存储 关系型数据库
【MySQL实战笔记】02.一条SQL更新语句是如何执行的-2
【4月更文挑战第5天】两阶段提交是为确保`redo log`和`binlog`逻辑一致,避免数据不一致。若先写`redo log`, crash后数据可能丢失,导致恢复后状态错误;若先写`binlog`,crash则可能导致重复事务,影响数据库一致性。一天一备相较于一周一备,能缩短“最长恢复时间”,但需权衡额外的存储成本。
15 1
|
1月前
|
关系型数据库 MySQL Linux
【Linux】在Linux上安装MySQL数据库的步骤
【Linux】在Linux上安装MySQL数据库的步骤
116 0
|
1月前
|
关系型数据库 MySQL Linux
【VMware安装+centos 7Linux系统+MySQL安装】——在Linux系统中安装MySQL步骤,以及遇见的各种问题(如:vm两个虚拟网卡消失、vm网络适配器有感叹号等等)
【VMware安装+centos 7Linux系统+MySQL安装】——在Linux系统中安装MySQL步骤,以及遇见的各种问题(如:vm两个虚拟网卡消失、vm网络适配器有感叹号等等)
178 0
|
9天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
|
1月前
|
关系型数据库 MySQL 数据库连接
关于MySQL-ODBC的zip包安装方法
关于MySQL-ODBC的zip包安装方法
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
99 1
|
28天前
|
关系型数据库 MySQL 数据库
rds安装数据库客户端工具
安装阿里云RDS的数据库客户端涉及在本地安装对应类型(如MySQL、PostgreSQL)的客户端工具。对于MySQL,可选择MySQL Command-Line Client或图形化工具如Navicat,安装后输入RDS实例的连接参数进行连接。对于PostgreSQL,可以使用`psql`命令行工具或图形化客户端如PgAdmin。首先从阿里云控制台获取连接信息,然后按照官方文档安装客户端,最后配置客户端连接以确保遵循安全指引。
81 1