heatbeat-gui实现基于nfs的mysql高可用集群

一、简述HA高可用集群

高可用集群就是当集群中的一个节点发生各种软硬件及人为故障时,集群中的其他节点能够自动接管故障节点的资源并向外提供服务。以实现减少业务中断时间,为用户提供更可靠,更高效的服务。

二、基于nfs实现mysql的高可用集群配置

环境准备接上文 heartbeat-gui部署

实验环境:

nfs server准备

1、在nfs server准备LVM存储空间
[[email protected] ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x61284c6a.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won‘t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1-1305, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +10G
Value out of range.
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +5G 

Command (m for help): t
Selected partition 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[[email protected] ~]# partx -a /dev/sdb

[[email protected] ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created
[[email protected] ~]# vgcreate myvg /dev/sdb3
  Volume group "myvg" successfully created
[[email protected] ~]# lvcreate -L 5G -n mydata myvg
  Logical volume "mydata" created.
[[email protected] ~]# mke2fs -t ext4 /dev/myvg/mydata
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

2、开机自动挂载,并nfs导出
[[email protected] ~]# mkdir  /mydata
[[email protected] ~]# vim /etc/fstab 
/dev/myvg/mydata        /mydata                 ext4    defaults        0 0
[[email protected] ~]# mount -a
[[email protected] ~]# mount | grep /mydata
/dev/mapper/myvg-mydata on /mydata type ext4 (rw)

[[email protected] ~]# vim /etc/exports 
/mydata         192.168.0.0/24(rw,no_root_squash)
#共享给192.168.0.0/24网段,可读可写,允许root用户登录便于初始化,配置结束可取消root用户登录

3、导出nfs共享目录
#创建mysql用户,指明uid,gid。各节点的mysql用户uid,gid一致。
[[email protected] ~]# groupadd -r -g 306 mysql
[[email protected] ~]# useradd -r -g 306 -u 306 mysql

#创建共享目录,并修改属主属组。
[[email protected] ~]# mkdir /mydata/data
[[email protected] ~]# chown -R mysql.mysql /mydata/data

#导出nfs共享目录
[[email protected] ~]# exportfs -arv
exporting 192.168.0.0/24:/mydata

各节点准备mysql,并测试nfs。以下步骤,各节点一致。

node1配置

[[email protected] ~]# mkdir /mydata

[[email protected] ~]# showmount -e 192.168.0.20
Export list for 192.168.0.20:
/mydata 192.168.0.0/24
[[email protected] ~]# mount -t nfs 192.168.0.20:/mydata /mydata
[[email protected] ~]# mount | grep /mydata
192.168.0.20:/mydata on /mydata type nfs (rw,vers=4,addr=192.168.0.20,clientaddr=192.168.0.15)

[[email protected] ~]# groupadd -r -g 306 mysql
[[email protected] ~]# useradd -r -g 306 -u 306 mysql

#验证mysql用户是否拥有共享目录权限
[[email protected] ~]# su - mysql
su: warning: cannot change directory to /home/mysql: No such file or directory
-bash-4.1$ 
-bash-4.1$ 
-bash-4.1$ cd /mydata/data
-bash-4.1$ touch node1.txt
-bash-4.1$ ls
node1.txt
-bash-4.1$ rm node1.txt 
-bash-4.1$ exit
logout

#在nfs server端验证
[[email protected] ~]# cd /mydata/data
[[email protected] data]# ll
total 0
-rw-rw-r--. 1 mysql mysql 0 Nov 19 19:59 node2.txt

#验证root用户对目录是否有权限
[[email protected] ~]# touch /mydata/data/node.txt
[[email protected] ~]# ll /mydata/data
total 0
-rw-r--r--. 1 root root 0 Nov 19 20:02 node.txt

#安装mariadb
[[email protected] ~]# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
[[email protected] ~]# cd /usr/local
[[email protected] local]# ln -sv mariadb-5.5.46-linux-x86_64 mysql
`mysql‘ -> `mariadb-5.5.46-linux-x86_64‘
[[email protected] local]# cd mysql/
[[email protected] mysql]# chown -R root.mysql ./*

#初始化mysql至nfs,此步骤只需一个节点操作即可,本文node1执行,那么node2就不需要执行
#初始化操作后,可以将nfs server的共享选项中的no_root_squash移除了
[[email protected] mysql]# ./scripts/mysql_install_db --datadir=/mydata/data/ --user=mysql

#nfs server验证
[[email protected] data]# ls
aria_log.00000001  aria_log_control  mysql  performance_schema  test

#为mysql节点准备配置文件
[[email protected] mysql]# mkdir /etc/mysql
[[email protected] mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf
#编辑配置文件,加入以下三行
[[email protected] mysql]# vim /etc/mysql/my.cnf
datadir = /mydata/data
innodb_file_per_table = on
skip_name_resolve = on

#为mysql节点准备服务脚本,并禁止mysqld开机自启
[[email protected] mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[[email protected] mysql]# chkconfig --add mysqld
[[email protected] mysql]# chkconfig mysqld off

#启动mysql,创建mydb数据库
[[email protected] mysql]# service mysqld start
[[email protected] mysql]# /usr/local/mysql/bin/mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.46-MariaDB-log MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE mydb;
Query OK, 1 row affected (0.03 sec)

MariaDB [(none)]> exit
Bye

[[email protected] mysql]# service mysqld stop

node2配置

[[email protected] ~]# tar xf mariadb-5.5.46-linux-x86_64.tar.gz  -C /usr/local
[[email protected] ~]# cd /usr/local/
[[email protected] local]# ln -sv mariadb-5.5.46-linux-x86_64 mysql
`mysql‘ -> `mariadb-5.5.46-linux-x86_64‘
[[email protected] local]# cd mysql/
[[email protected] mysql]# chown root.mysql ./*

#将node1的mysql配置文件复制给node2
[[email protected] mysql]# scp /etc/mysql/my.cnf node2:/etc/mysql/
#准备服务脚本,并禁止开机自启
[[email protected] mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[[email protected] mysql]# chkconfig --add mysqld
[[email protected] mysql]# chkconfig mysqld off

#启动服务并查看共享数据库
[[email protected] mysql]# service mysqld start
[[email protected] mysql]# /usr/local/mysql/bin/mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.46-MariaDB-log MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.02 sec)

MariaDB [(none)]> EXIT
Bye

#授权root用户远程访问mysql
[[email protected] ~]# /usr/local/mysql/bin/mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.46-MariaDB-log MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MariaDB [(none)]> grant all on *.* to ‘root‘@‘192.168.%.%‘ identified by ‘123456‘;
Query OK, 0 rows affected (0.06 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

[[email protected] mysql]# service mysqld stop

在node1和node2卸载共享目录

[[email protected] mysql]# umount /mydata

三、在heartbeat-gui界面配置

1、添加组资源,以及ip资源

2、添加共享文件系统资源

3、添加mysql-server资源

注意:定义的次序就是启动的次序。

时间: 2024-12-21 15:50:49

heatbeat-gui实现基于nfs的mysql高可用集群的相关文章

基于heartbeat v2 crm实现基于nfs的mysql高可用集群

前言 因heartbeat v1内置的资源管理器haresource功能比较简单,且不支持图形化管理,所以heartbeat v2不再支持haresource,转而使用更加强大的资源管理器crm进行集群管理.本文将讲解如何基于heartbeat v2 crm实现基于nfs的mysql高可用集群. 高可用实现 实验拓扑 实验环境 node1:172.16.10.123 mariadb-5.5.36 CentOS6.6 node2:172.16.10.124 mariadb-5.5.36 CentO

heartbeat v2配置高可用web集群和基于nfs搭建MySQL高可用集群

安装环境:Centos 6.4, httpd2.4,mysql5.5,heartbeat v2 提供两台机器node1和node2,在/etc/hosts文件中添加名称解析,并且主机名称要与节点名称要相同,即uname -n的名称要和hosts定义的名称必须一样. #   IP                         HOSTNAME             ALIAS 10.204.80.79     node1.mylinux.com     node1 10.204.80.80  

基于Corosync + Pacemaker+DRBD实现MySQL高可用集群

前言 在众多的高可用集群解决方案中,除了Heartbeat之外,Corosync也能提供类似于Heartbeat一样的功能,而且目前RedHat官方提供的高可用集群解决方案的程序包都以Corosync为主,所以在未来的日子Corosync会逐渐取代Heartbeat.本文带来的是基于Corosync + Pacemaker+DRBD的MySQL高可用集群解决方案. 相关介绍 Corosync Corosync是从OpenAIS中分支出来的一个项目,它在传递信息的时候可以通过一个简单的配置文件来定

基于corosync+pacmaker实现高可用集群

目前,corosync功能和特性已经非常完善了,所以pacmaker独立出来之后通常都将pacmaker和corosync结合来使用,corosync并没有通用的资源管理器,因此要借助pacmaker来实现 常用的资源管理器: ·cman:rgmanager ·crm: crm的资源约束有: ·location :资源对节点的偏好 ·colocation:排序约束:资源运行在同一节点上的可能性,需要一定评估的 ·order: 资源采取动作的次序 资源有很多属性,以下为最常见的几类 ·集群属性 ·

企业主流MySQL高可用集群架构三部曲之PXC

前段时间,老张给大家介绍了企业中主流MySQL高可用集群架构三部曲中的前两部,有不了解的同学可以去访问我之前的博客内容. 第一部曲直通车>> 企业中MySQL主流高可用架构实战三部曲之MHA 第二部曲直通车>>企业中MySQL高可用集群架构三部曲之MM+keepalived 独家新课程上线>>MySQL体系结构深入剖析及实战DBA视频课程 今儿给大家介绍最后一部曲,是percona公司的percona xtraDB cluster.简称PXC.它是基于GaLera协议的

mysql高可用集群方案

这里有一篇关于Mysql高可用方案的干货文章:[干货分享] 一文了解数据库高可用容灾方案的设计与实现 网友们公司中的使用方案讨论:想问各位大大 MySQL 是怎么做高可用的? 一.Mysql高可用解决方案 方案一:共享存储 一般共享存储采用比较多的是 SAN/NAS 方案. 方案二:操作系统实时数据块复制 这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+Heartbeat) 方案三:主从复制架构 主从复制(一主多从) MMM架构(双主多从) MHA架构(多主多从) 方案四:数

# IT明星不是梦 # MySQL高可用集群之MMM

MySQL高可用集群之MMM 一.MMM简介 MMM即Multi-Master Replication Manager for MySQL(mysql多主复制管理器),基于perl实现,关于mysql主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),MMM也能对从服务器进行读负载均衡,所以可以用它来在一组用于复制的服务器启动虚拟IP,除此之外,它还有实现数据备份.节点之间重新同步功能的脚本.MySQL本身没有提供replication failover

通过MMM构建MYSQL高可用集群系统

本文为南非蚂蚁的书籍<循序渐进linux-第二版>-8.4的读笔记 MMM集群套件(MYSQL主主复制管理器) MMM套件主要的功能是通过下面三个脚本实现的 1)mmm_mond 这是一个监控进程,运行在管理节点上,主要负责都所有数据库的监控工作,同时决定和处理所有节点的角色切换 2)mmm_agentd 这是一个代理进程,运行在每个MYSQL服务器上,主要完成监控的测试工作以及执行简单的远端服务设置 3)mmm_control 简单的管理脚本,用来查看和管理集群运行状态,同事管理mmm_mo

mysql高可用集群——MHA架构

目录 1.下载 2.搭建mha 2.1 系统配置 2.2 架构 2.3 添加ssh公钥信任 2.4 安装mha节点 2.5 manager配置文件 2.6 检查 2.7 启动manager进程 2.8 碰到的问题 3.测试切换 3.1 正常切换测试 3.2 回切测试 3.3 雪崩测试 3.4 主从不一致切换测试 下载 mha链接地址:http://pan.baidu.com/s/1pJkDGX9#dir/path=%2Fmysql%2FHA%2Fmha 或者:https://code.googl