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

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

一、简述HA高可用集群

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


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

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

     实验环境:

    wKioL1gwZJGREhRLAAAhpP38qyw735.png

nfs server准备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
1、在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 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.
 
[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.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导出
[root@node3 ~] # mkdir  /mydata
[root@node3 ~] # vim /etc/fstab 
/dev/myvg/mydata         /mydata                  ext4    defaults        0 0
[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 /24 (rw,no_root_squash)
#共享给192.168.0.0/24网段,可读可写,允许root用户登录便于初始化,配置结束可取消root用户登录
 
 
3、导出nfs共享目录
#创建mysql用户,指明uid,gid。各节点的mysql用户uid,gid一致。
[root@node3 ~] # groupadd -r -g 306 mysql
[root@node3 ~] # useradd -r -g 306 -u 306 mysql
 
#创建共享目录,并修改属主属组。
[root@node3 ~] # mkdir /mydata/data
[root@node3 ~] # chown -R mysql.mysql /mydata/data
 
#导出nfs共享目录
[root@node3 ~] # exportfs -arv
exporting 192.168.0.0 /24 : /mydata

   

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


node1配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
[root@node1 ~] # mkdir /mydata
 
[root@node1 ~] # showmount -e 192.168.0.20
Export list  for  192.168.0.20:
/mydata  192.168.0.0 /24
[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=4,addr=192.168.0.20,clientaddr=192.168.0.15)
 
[root@node1 ~] # groupadd -r -g 306 mysql
[root@node1 ~] # useradd -r -g 306 -u 306 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 0
-rw-rw-r--. 1 mysql mysql 0 Nov 19 19:59 node2.txt
 
#验证root用户对目录是否有权限
[root@node2 ~] # touch /mydata/data/node.txt
[root@node2 ~] # ll /mydata/data
total 0
-rw-r--r--. 1 root root 0 Nov 19 20:02 node.txt
 
#安装mariadb
[root@node1 ~] # tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
[root@node1 ~] # cd /usr/local
[root@node1  local ] # ln -sv mariadb-5.5.46-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配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[root@node2 ~] # tar xf mariadb-5.5.46-linux-x86_64.tar.gz  -C /usr/local
[root@node2 ~] # cd /usr/local/
[root@node2  local ] # ln -sv mariadb-5.5.46-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卸载共享目录

1
[root@node1 mysql] # umount /mydata


三、在heartbeat-gui界面配置

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

wKiom1gwUpPjPeESAAC4LqjgjRw030.png


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

wKioL1gwU_eSQjafAAC1zfD5c24481.png



3、添加mysql-server资源

wKioL1gwUy-wA25fAACkAzq0tq4511.png


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




本文转自 元婴期 51CTO博客,原文链接:http://blog.51cto.com/jiayimeng/1874668

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
缓存 监控 关系型数据库
MySQL PXC 集群死锁分析案例
前不久一个系统死锁导致部分业务受到影响,今次补上详细的节点日志分析过程。
21 1
|
1月前
|
运维 容灾 关系型数据库
介绍几种 MySQL 官方高可用方案
MySQL 官方提供了多种高可用部署方案,从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准,介绍下不同高可用方案架构原理及使用场景。
236 3
介绍几种 MySQL 官方高可用方案
|
12天前
|
关系型数据库 MySQL Serverless
体验阿里云PolarDB MySQL Serverless集群
体验阿里云PolarDB MySQL Serverless集群
|
27天前
|
关系型数据库 MySQL Serverless
Serverless 应用引擎产品使用合集之在SAE2.0上的应用如何访问云原生数据库PolarDB MySQL版集群
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
1月前
|
SQL 关系型数据库 MySQL
MySQL高可用架构设计:从主从复制到分布式集群
MySQL高可用性涉及主从复制、半同步复制和Group/InnoDB Cluster。主从复制通过二进制日志同步数据,保证故障时可切换。半同步复制确保事务在至少一个从服务器确认后才提交。Group Replication是多主复制,支持自动故障切换。InnoDB Cluster是8.0的集成解决方案,简化集群管理。使用这些技术能提升数据库的稳定性和可靠性。
223 2
|
11天前
|
存储 SQL 关系型数据库
实时计算 Flink版产品使用问题之要配置MySQL集群存储节点,该如何配置
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
12天前
|
负载均衡 关系型数据库 MySQL
MySQL PXC集群多个节点同时大量并发update同一行
如本文标题,MySQL PXC集群多个节点同时大量并发update同一行数据,会怎样? 为此,本人做了一个测试,来验证到底会怎样!
17 0
|
15天前
|
网络协议 关系型数据库 MySQL
【最佳实践】MySQL数据库迁移到PXC集群
借本次数据库迁移实践,再次总结一下MySQL数据库迁移到PXC的最佳操作路径。
25 0
|
15天前
|
网络协议 关系型数据库 MySQL
MySQL PXC集群配置IPv6
前阵子为PXC集群配置IPv6支持,遇见奇怪的问题,就是SST同步时总是报错,为此在官网论坛提交了问题,未得到答案,最后偶然得到了答案
23 0
|
2月前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL版集群版本支持库表恢复功能的版本要求是什么?
【5月更文挑战第13天】PolarDB MySQL版集群版本支持库表恢复功能的版本要求是什么?
29 0

推荐镜像

更多