一、简述HA高可用集群

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

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

环境准备接上文

实验环境:

nfs server准备

、在nfs server准备LVM存储空间
[root@node3 ~]# 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 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 (-)
p
Partition number (-):
First cylinder (-, default ):
Using default value
Last cylinder, +cylinders or +size{K,M,G} (-, default ): +10G
Value out of range.
Last cylinder, +cylinders or +size{K,M,G} (-, default ): +5G Command (m for help): t
Selected partition
Hex code (type L to list codes): 8e
Changed system type of partition to 8e (Linux LVM) Command (m for help): w
The partition table has been altered! Calling ioctl() to re-read partition table.
Syncing disks. [root@node3 ~]# partx -a /dev/sdb [root@node3 ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created
[root@node3 ~]# vgcreate myvg /dev/sdb3
Volume group "myvg" successfully created
[root@node3 ~]# lvcreate -L 5G -n mydata myvg
Logical volume "mydata" created.
[root@node3 ~]# mke2fs -t ext4 /dev/myvg/mydata
mke2fs 1.41. (-May-)
Filesystem label=
OS type: Linux
Block size= (log=)
Fragment size= (log=)
Stride= blocks, Stripe width= blocks
inodes, blocks
blocks (5.00%) reserved for the super user
First data block=
Maximum filesystem blocks=
block groups
blocks per group, fragments per group
inodes per group
Superblock backups stored on blocks:
, , , , , , Writing inode tables: done
Creating journal ( blocks): done
Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every mounts or
days, whichever comes first. Use tune2fs -c or -i to override. 、开机自动挂载,并nfs导出
[root@node3 ~]# mkdir /mydata
[root@node3 ~]# vim /etc/fstab
/dev/myvg/mydata /mydata ext4 defaults
[root@node3 ~]# mount -a
[root@node3 ~]# mount | grep /mydata
/dev/mapper/myvg-mydata on /mydata type ext4 (rw) [root@node3 ~]# vim /etc/exports
/mydata 192.168.0.0/(rw,no_root_squash)
#共享给192.168.0./24网段,可读可写,允许root用户登录便于初始化,配置结束可取消root用户登录 、导出nfs共享目录
#创建mysql用户,指明uid,gid。各节点的mysql用户uid,gid一致。
[root@node3 ~]# groupadd -r -g mysql
[root@node3 ~]# useradd -r -g -u mysql #创建共享目录,并修改属主属组。
[root@node3 ~]# mkdir /mydata/data
[root@node3 ~]# chown -R mysql.mysql /mydata/data #导出nfs共享目录
[root@node3 ~]# exportfs -arv
exporting 192.168.0.0/:/mydata

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

node1配置

[root@node1 ~]# mkdir /mydata

[root@node1 ~]# showmount -e 192.168.0.20
Export list for 192.168.0.20:
/mydata 192.168.0.0/
[root@node1 ~]# mount -t nfs 192.168.0.20:/mydata /mydata
[root@node1 ~]# mount | grep /mydata
192.168.0.20:/mydata on /mydata type nfs (rw,vers=,addr=192.168.0.20,clientaddr=192.168.0.15) [root@node1 ~]# groupadd -r -g mysql
[root@node1 ~]# useradd -r -g -u mysql #验证mysql用户是否拥有共享目录权限
[root@node1 ~]# 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端验证
[root@node3 ~]# cd /mydata/data
[root@node3 data]# ll
total
-rw-rw-r--. mysql mysql Nov : node2.txt #验证root用户对目录是否有权限
[root@node2 ~]# touch /mydata/data/node.txt
[root@node2 ~]# ll /mydata/data
total
-rw-r--r--. root root Nov : node.txt #安装mariadb
[root@node1 ~]# tar xf mariadb-5.5.-linux-x86_64.tar.gz -C /usr/local
[root@node1 ~]# cd /usr/local
[root@node1 local]# ln -sv mariadb-5.5.-linux-x86_64 mysql
`mysql' -> `mariadb-5.5.46-linux-x86_64'
[root@node1 local]# cd mysql/
[root@node1 mysql]# chown -R root.mysql ./* #初始化mysql至nfs,此步骤只需一个节点操作即可,本文node1执行,那么node2就不需要执行
#初始化操作后,可以将nfs server的共享选项中的no_root_squash移除了
[root@node1 mysql]# ./scripts/mysql_install_db --datadir=/mydata/data/ --user=mysql #nfs server验证
[root@node3 data]# ls
aria_log.00000001 aria_log_control mysql performance_schema test #为mysql节点准备配置文件
[root@node1 mysql]# mkdir /etc/mysql
[root@node1 mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf
#编辑配置文件,加入以下三行
[root@node1 mysql]# vim /etc/mysql/my.cnf
datadir = /mydata/data
innodb_file_per_table = on
skip_name_resolve = on #为mysql节点准备服务脚本,并禁止mysqld开机自启
[root@node1 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@node1 mysql]# chkconfig --add mysqld
[root@node1 mysql]# chkconfig mysqld off #启动mysql,创建mydb数据库
[root@node1 mysql]# service mysqld start
[root@node1 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 [root@node1 mysql]# service mysqld stop

node2配置

[root@node2 ~]# tar xf mariadb-5.5.-linux-x86_64.tar.gz  -C /usr/local
[root@node2 ~]# cd /usr/local/
[root@node2 local]# ln -sv mariadb-5.5.-linux-x86_64 mysql
`mysql' -> `mariadb-5.5.46-linux-x86_64'
[root@node2 local]# cd mysql/
[root@node2 mysql]# chown root.mysql ./* #将node1的mysql配置文件复制给node2
[root@node1 mysql]# scp /etc/mysql/my.cnf node2:/etc/mysql/
#准备服务脚本,并禁止开机自启
[root@node2 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@node2 mysql]# chkconfig --add mysqld
[root@node2 mysql]# chkconfig mysqld off #启动服务并查看共享数据库
[root@node2 mysql]# service mysqld start
[root@node2 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
[root@node2 ~]# /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) [root@node2 mysql]# service mysqld stop

在node1和node2卸载共享目录

[root@node1 mysql]# umount /mydata

三、在heartbeat-gui界面配置

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

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

3、添加mysql-server资源

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

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

  1. 基于keepalived搭建MySQL高可用集群

    MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和 ...

  2. Mysql 高可用集群PXC

    PXC是percona公司的percona  xtraDB  cluster,简称PXC.它是基于Galera协议的高可用集群方案.可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可 ...

  3. MySQL高可用集群方案

    一.Mysql高可用解决方案 方案一:共享存储 一般共享存储采用比较多的是 SAN/NAS 方案. 方案二:操作系统实时数据块复制 这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+ ...

  4. MySQL高可用集群MHA方案

    MySQL高可用集群MHA方案 爱奇艺在用的数据库高可用方案 MHA 是目前比较成熟及流行的 MySQL 高可用解决方案,很多互联网公司正是直接使用或者基于 MHA 的架构进行改造实现 MySQL 的 ...

  5. 基于docker实现redis高可用集群

    基于docker实现redis高可用集群 yls 2019-9-20 简介 基于docker和docker-compose 使用redis集群和sentinel集群,达到redis高可用,为缓存做铺垫 ...

  6. Mysql高可用集群环境介绍

    MySQL高可用集群环境搭建 01.MySQL高可用环境方案 02.MySQL主从复制原理 03.MySQL主从复制作用 04.在Linux环境上安装MySQL 05.在MySQL集群环境上配置主从复 ...

  7. 部署MYSQL高可用集群

                                                  mysql-day08     部署MYSQL高可用集群 u 集群架构                   ...

  8. keepalived+MySQL高可用集群

    基于keepalived搭建MySQL的高可用集群   MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Clus ...

  9. corosync+pacemaker and drbd实现mysql高可用集群

    DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD 有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的 ...

随机推荐

  1. Dealing with a Stream-based Transport 处理一个基于流的传输 粘包 即使关闭nagle算法,也不能解决粘包问题

    即使关闭nagle算法,也不能解决粘包问题 https://waylau.com/netty-4-user-guide/Getting%20Started/Dealing%20with%20a%20S ...

  2. qt and redis desktop manager

    (ubuntu desktop)http://blog.csdn.net/ficksong/article/details/7497827 redis manager in ubuntu wget h ...

  3. ACME[free https] Linux中使用curl命令访问https站点4种常见错误和解决方法

    free https certification generator https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E 每一种客户 ...

  4. 三种方案在Windows系统下安装ubuntu双系统

    一.虚拟机安装(不推荐) 使用工具:Vmware 如果不是因为迫不得已,比如Mac OS对硬件不兼容,Federa安装频繁出错,各种驱动不全等等,不推荐使用虚拟机安装. 个人感觉这是一种对操作系统的亵 ...

  5. Systemd mysql,nginx,php启动配置文件

    systemctl的配置文件目录一般在 /usr/lib/systemd/system/ 或者/etc/systemd/system/ 需要注意的是,nginx与php运行用户必须是root,所以不需 ...

  6. linux下非root用户的sudo问题

    linux下的root用户是个超级管理员,一般是不用这个用户登录进行操作的,但有时候需要root权限,又不想切换用户的话可以使用sudo命令.但是不是所有的用户都可以使用sudo命令的. 首先可能会遇 ...

  7. Python在向CSV文件写中文时乱码的处理办法

    前言 python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode.decode.当list.tuple.dict里面有中文时,打印出来的是Unicode编码,这个是无解的.对中文 ...

  8. VirtualBox中安装Ubuntu12.04/Ubuntu14.04虚拟机(转)

    add by zhj: 如果宿主机是win7,那VirtualBox建议安装4.3.12,再高的版本在Windows7上运行会报错,从4.3.14到5.0.xx版本,一直报错,搞了半天也解决不了.如果 ...

  9. Spring-ApplicationContext容器

    Spring ApplicationContext容器 ApplicationContext是spring中比较高级的容器.和BeanFactory类似,它可以加载配置文件中定义的bean,并将所有b ...

  10. redis的相关信息

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). string类型是Redis最基本的数据类型,一个 ...