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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

菜鸟学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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
关系型数据库 MySQL Linux
Linux下mysql数据库的导入与导出以及查看端口
本文详细介绍了在Linux下如何导入和导出MySQL数据库,以及查看MySQL运行端口的方法。通过这些操作,用户可以轻松进行数据库的备份与恢复,以及确认MySQL服务的运行状态和端口。掌握这些技能,对于日常数据库管理和维护非常重要。
33 8
|
9天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
100 7
|
28天前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
2月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
133 3
|
2月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
56 3
|
10天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
36 3
|
10天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
37 3
|
10天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
52 2
|
24天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
167 15
|
17天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。