基于corosync和NFS服务器实现mysql的高可用

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

 一、实验拓扑结构图

二、实验说明

   本实验是基于corosync和NFS服务器实现mysql的高可用服务,在其中一台服务器出现故障的时候,另一台服务器仍旧能够运作正常

三、实验准备

  请参照http://sxhxt.blog.51cto.com/5126000/954545的实验准备

四、实验步骤

配置NFS服务器

1.创建逻辑卷

 
 
  1. #fdisk /dev/sda 
  2. #partprobe /dev/sda 
  3. #pvcreate /dev/sda5 
  4. #vgcreate myvg /dev/sda5  
  5. #lvcreate -n mylv -L 10G myvg 
  6. #mke2fs -j /dev/myvg/mylv 

2.创建共享目录并开机自动挂载逻辑卷

 
 
  1. #mkdir /mydata                   //创建共享目录 
  2. #vim /etc/fstab                  //开机自动挂载 
  3.      /dev/myvg/mydata        /mydata           ext3    defaults        0 0 

3.添加mysql用户

 
 
  1. #groupadd -g 306 -r mysql 
  2. useradd -g mysql -r -u 306 mysql 
  3. #chown mysql:mysql /mydata       //修改共享目录的属主属组为mysql 

4.添加共享

 

 
 
  1.  #vim /etc/exports                
  2.   /mydata     172.16.29.1(rw,no_root_squash) 172.16.29.2(rw,no_root_squash) 
  3. #exportfs -ra                     //导出共享目录  
  4. #service nfs start                 //启动nfs服务 
  5. #chkconfig nfs on                   //开机自动启动 
  6. #showmount -d localhost                  //查看是否导出成功 

 

 配置节点一node1

1、添加用户,用户UID和NFS服务器上的mysql用户a的UID相同

 
 
  1. #groupadd -g 306 -r mysql 
  2.  #usradd -g mysql -r -u 306 mysql 

2、创建目录并挂载

 
 
  1.  #mkdir -pv /mydata/data 
  2. #chown -R mysql:mysql /mydata/data 
  3. #mount -t nfs 172.16.26.1:/sharedata  /mydata/data 

 以上步骤在node2上执行相同操作

3、 安装mysql并初始化

 
 
  1. #tar xf mysql-5.5.20-linux2.6-i686 -C /usr/local 
  2.       # cd  /usr/local 
  3.       #ln -sv mysql-5.5.20-linux2.6-i686  mysql //创建连接  
  4.       #chown -R mysql:mysql . 
  5.       #cp support-files/my-large.cnf  /etc/my.cnf  //配置文件 
  6.       #vim /etc/my.cnf  
  7.         在[mysqld]处 添加datadir=/mydata/data    //添加数据存放位置 
  8.       #scripts/mysql_install_db --user=mysql --datadir=/mydata/data //初始化Mysql 
  9.       #chown -R root . 
  10.       #cp support-files/mysql.server  /etc/rc.d/init.d/mysqld //提供mysql脚本 
  11.       #servie mysqld start 
  12.       #/usr/local/mysql/bin/mysql        //启动并测试mysql是否可用 
  13.       #service mysqld stop                     //必须关闭,否则在节点2上无法启动 
  14.       #scp /etc/my.cnf node2:/etc/my.cnf           //把mysql的配置文件复制到node2上 
  15.       #scp /etc/rc.d/init.d/mysqld node2:/etc/rc.d/init.d/mysqld  //复制服务脚本 

 

 在节点node2上只需执行一下内容即可,然后直接连接mysql,可以看到node1上mysql用户创建的文件在节点一上安装集群软件并配置

 

4.安装并配置集群软件

   cluster-glue-1.0.6-1.6.el5.i386.rpm       libesmtp-1.0.4-5.el5.i386.rpm
   cluster-glue-libs-1.0.6-1.6.el5.i386.rpm  resource-agents-1.0.4-1.1.el5.i386.rpm
   corosync-1.2.7-1.1.el5.i386.rpm           pacemaker-1.1.5-1.1.el5.i386.rpm
   corosynclib-1.2.7-1.1.el5.i386.rpm        pacemaker-cts-1.1.5-1.1.el5.i386.rpm
   heartbeat-3.0.3-2.3.el5.i386.rpm          pacemaker-libs-1.1.5-1.1.el5.i386.rpm
   heartbeat-libs-3.0.3-2.3.el5.i386.rpm
  #yum -y --nogpgcheck localinstall *.rpm
 
 
  1. # cd /etc/corosync 
  2.    # cp corosync.conf.example corosync.conf 
  3.    # vim corosync.conf  添加如下内容 
  4.     service { 
  5. ver:  0 
  6. name: pacemaker 
  7. # use_mgmtd: yes 
  8.      } 
  9.     aisexec { 
  10. user:   root 
  11. group:  root 
  12.        } 
  13.      并设定此配置文件中 bindnetaddr后面的IP地址为你的网卡所在网络的网络地址 
  14.      我们这里设定为 bindnetaddr:172.16.0.0 
  15.         to_logfile: yes   
  16.         to_syslog: no      //关闭系统日志文件 
  17.        logfile: /var/log/cluster/corosync.log 
  18.        secauth: on         //启用认证 
  19.     # corosync-keygen        //生成节点间的密钥文件 
  20.     # scp -p corosync authkey  node2:/etc/corosync/   //复制文件到Director2上 
  21.     # mkdir /var/log/cluster                          //创建日志所用到的目录 
  22.     # ssh node2  'mkdir /var/log/cluster' 

 

5.查看是否正常启动和配置集群属性

  详见http://sxhxt.blog.51cto.com/5126000/955061

6.添加资源,在定义资源之前首先卸载挂载点
通过crm ra list ocf查看到Filesystem如下图所示

 
 
  1. #crm configure primitive mynfs ocf:heartbeat:Filesystem params device="172.16.26.1:/sharedata" 
  2. directory="/mydata" fstype="nfs"  op start timeout=60s op stop timeout=60s  
  3. #crm configure primitive mysql lsb:mysqld 
  4. #crm configure primitive vip  ocf:heartbeat:IPaddr params ip=172.16.200.1 

查看定义的资源如下图所示

现在不能资源没有在同一个节点,所以不能正常启动现在要定义如下约束

 

  1. #crm configure colocation mysql_adn_mynfs_vip inf: mysql mynfs vip 
  2. #crm configure order mysql_after_mynfs inf: mynfs mysql:start 
  3. #crm configure order mysql_after_vip inf: vip mysql 

 

  现在可以再次使用crm_mon -1查看结果如下图所示(在这里说明一下,因为在实验过程中,虚拟机出现问题了,然后资源重新定义了,资源名字可能会稍有不同。)

然后可以在节点一上查看/mydata/data目录下已经有了mysql的文件信息,接下来使用如下命令连接尽mysql并创建用户授权然后可以远程连接进行测试。

 
 
  1. #/usr/local/mysql/bin/mysql  
  2. mysql>grant all on *.*  TO root@'%' identified by '1234' 

 在另外一台虚拟机上测试结果如下图所示:

现在资源都在节点一上运行,那如果node1出现故障呢?在节点node1上执行如下命令

 
 
  1. #crm node standby 

然后使用crm_mon -1查看状态信息如下图所示:

五、实验总结

    在这个实验中出现了很多问题,整的我很头大,但是问题总是一步步解决的,最后总算是功夫不负有心人呢!呵呵

   首先是安装mysql的问题,在/etc/my.cnf里面的datadir的目录没有在[mysqld]下 定义,还有在节点一和节点二同时挂载之后其中一个节点启动了mysql然后忘记停止了,就在另一个节点上启动了等问题都出现了下图所示的错误。

 然后就是资源定义了,在资源定义的时候重复提交好像也是会出错的。其他的问题就都是本人的误操作导致的,这里就不赘述了。

 

本文转自  沐木小布丁  51CTO博客,原文链接:http://blog.51cto.com/sxhxt/955306

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
云数据库:从零到一,构建高可用MySQL集群
在互联网时代,数据成为企业核心资产,传统单机数据库难以满足高并发、高可用需求。云数据库通过弹性扩展、分布式架构等优势解决了这些问题,但也面临数据安全和性能优化挑战。本文介绍了如何从零开始构建高可用MySQL集群,涵盖选择云服务提供商、创建实例、配置高可用架构、数据备份恢复及性能优化等内容,并通过电商平台案例展示了具体应用。
如何解决 MySQL 数据库服务器 CPU 飙升的情况
大家好,我是 V 哥。当 MySQL 数据库服务器 CPU 飙升时,如何快速定位和解决问题至关重要。本文整理了一套实用的排查和优化套路,包括使用系统监控工具、分析慢查询日志、优化 SQL 查询、调整 MySQL 配置参数、优化数据库架构及检查硬件资源等步骤。通过一个电商业务系统的案例,详细展示了从问题发现到解决的全过程,帮助你有效降低 CPU 使用率,提升系统性能。关注 V 哥,掌握更多技术干货。
215 0
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
85 25
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
180 12
阿里云ECS提供强大的云上灾备解决方案,通过高可用基础设施、多样的数据备份方式及异地灾备服务,帮助企业实现业务的持续稳定运行
在数字化时代,企业对信息技术的依赖加深,确保业务连续性至关重要。阿里云ECS提供强大的云上灾备解决方案,通过高可用基础设施、多样的数据备份方式及异地灾备服务,帮助企业实现业务的持续稳定运行。无论是小型企业还是大型企业,都能从中受益,确保在面对各种风险时保持业务稳定。
109 4
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
391 5
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
478 3
Mysql高可用架构方案
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。

热门文章

最新文章