一、简述HA高可用集群

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

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

环境准备接上文

实验环境:

nfs server准备

  1. 、在nfs server准备LVM存储空间
  2. [root@node3 ~]# fdisk /dev/sdb
  3. Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
  4. Building a new DOS disklabel with disk identifier 0x61284c6a.
  5. Changes will remain in memory only, until you decide to write them.
  6. After that, of course, the previous content won't be recoverable.
  7.  
  8. Warning: invalid flag 0x0000 of partition table will be corrected by w(rite)
  9.  
  10. WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
  11. switch off the mode (command 'c') and change display units to
  12. sectors (command 'u').
  13.  
  14. Command (m for help): n
  15. Command action
  16. e extended
  17. p primary partition (-)
  18. p
  19. Partition number (-):
  20. First cylinder (-, default ):
  21. Using default value
  22. Last cylinder, +cylinders or +size{K,M,G} (-, default ): +10G
  23. Value out of range.
  24. Last cylinder, +cylinders or +size{K,M,G} (-, default ): +5G
  25.  
  26. Command (m for help): t
  27. Selected partition
  28. Hex code (type L to list codes): 8e
  29. Changed system type of partition to 8e (Linux LVM)
  30.  
  31. Command (m for help): w
  32. The partition table has been altered!
  33.  
  34. Calling ioctl() to re-read partition table.
  35. Syncing disks.
  36.  
  37. [root@node3 ~]# partx -a /dev/sdb
  38.  
  39. [root@node3 ~]# pvcreate /dev/sdb3
  40. Physical volume "/dev/sdb3" successfully created
  41. [root@node3 ~]# vgcreate myvg /dev/sdb3
  42. Volume group "myvg" successfully created
  43. [root@node3 ~]# lvcreate -L 5G -n mydata myvg
  44. Logical volume "mydata" created.
  45. [root@node3 ~]# mke2fs -t ext4 /dev/myvg/mydata
  46. mke2fs 1.41. (-May-)
  47. Filesystem label=
  48. OS type: Linux
  49. Block size= (log=)
  50. Fragment size= (log=)
  51. Stride= blocks, Stripe width= blocks
  52. inodes, blocks
  53. blocks (5.00%) reserved for the super user
  54. First data block=
  55. Maximum filesystem blocks=
  56. block groups
  57. blocks per group, fragments per group
  58. inodes per group
  59. Superblock backups stored on blocks:
  60. , , , , , ,
  61.  
  62. Writing inode tables: done
  63. Creating journal ( blocks): done
  64. Writing superblocks and filesystem accounting information: done
  65.  
  66. This filesystem will be automatically checked every mounts or
  67. days, whichever comes first. Use tune2fs -c or -i to override.
  68.  
  69. 、开机自动挂载,并nfs导出
  70. [root@node3 ~]# mkdir /mydata
  71. [root@node3 ~]# vim /etc/fstab
  72. /dev/myvg/mydata /mydata ext4 defaults
  73. [root@node3 ~]# mount -a
  74. [root@node3 ~]# mount | grep /mydata
  75. /dev/mapper/myvg-mydata on /mydata type ext4 (rw)
  76.  
  77. [root@node3 ~]# vim /etc/exports
  78. /mydata 192.168.0.0/(rw,no_root_squash)
  79. #共享给192.168.0./24网段,可读可写,允许root用户登录便于初始化,配置结束可取消root用户登录
  80.  
  81. 、导出nfs共享目录
  82. #创建mysql用户,指明uid,gid。各节点的mysql用户uid,gid一致。
  83. [root@node3 ~]# groupadd -r -g mysql
  84. [root@node3 ~]# useradd -r -g -u mysql
  85.  
  86. #创建共享目录,并修改属主属组。
  87. [root@node3 ~]# mkdir /mydata/data
  88. [root@node3 ~]# chown -R mysql.mysql /mydata/data
  89.  
  90. #导出nfs共享目录
  91. [root@node3 ~]# exportfs -arv
  92. exporting 192.168.0.0/:/mydata

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

node1配置

  1. [root@node1 ~]# mkdir /mydata
  2.  
  3. [root@node1 ~]# showmount -e 192.168.0.20
  4. Export list for 192.168.0.20:
  5. /mydata 192.168.0.0/
  6. [root@node1 ~]# mount -t nfs 192.168.0.20:/mydata /mydata
  7. [root@node1 ~]# mount | grep /mydata
  8. 192.168.0.20:/mydata on /mydata type nfs (rw,vers=,addr=192.168.0.20,clientaddr=192.168.0.15)
  9.  
  10. [root@node1 ~]# groupadd -r -g mysql
  11. [root@node1 ~]# useradd -r -g -u mysql
  12.  
  13. #验证mysql用户是否拥有共享目录权限
  14. [root@node1 ~]# su - mysql
  15. su: warning: cannot change directory to /home/mysql: No such file or directory
  16. -bash-4.1$
  17. -bash-4.1$
  18. -bash-4.1$ cd /mydata/data
  19. -bash-4.1$ touch node1.txt
  20. -bash-4.1$ ls
  21. node1.txt
  22. -bash-4.1$ rm node1.txt
  23. -bash-4.1$ exit
  24. logout
  25.  
  26. #在nfs server端验证
  27. [root@node3 ~]# cd /mydata/data
  28. [root@node3 data]# ll
  29. total
  30. -rw-rw-r--. mysql mysql Nov : node2.txt
  31.  
  32. #验证root用户对目录是否有权限
  33. [root@node2 ~]# touch /mydata/data/node.txt
  34. [root@node2 ~]# ll /mydata/data
  35. total
  36. -rw-r--r--. root root Nov : node.txt
  37.  
  38. #安装mariadb
  39. [root@node1 ~]# tar xf mariadb-5.5.-linux-x86_64.tar.gz -C /usr/local
  40. [root@node1 ~]# cd /usr/local
  41. [root@node1 local]# ln -sv mariadb-5.5.-linux-x86_64 mysql
  42. `mysql' -> `mariadb-5.5.46-linux-x86_64'
  43. [root@node1 local]# cd mysql/
  44. [root@node1 mysql]# chown -R root.mysql ./*
  45.  
  46. #初始化mysql至nfs,此步骤只需一个节点操作即可,本文node1执行,那么node2就不需要执行
  47. #初始化操作后,可以将nfs server的共享选项中的no_root_squash移除了
  48. [root@node1 mysql]# ./scripts/mysql_install_db --datadir=/mydata/data/ --user=mysql
  49.  
  50. #nfs server验证
  51. [root@node3 data]# ls
  52. aria_log.00000001 aria_log_control mysql performance_schema test
  53.  
  54. #为mysql节点准备配置文件
  55. [root@node1 mysql]# mkdir /etc/mysql
  56. [root@node1 mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf
  57. #编辑配置文件,加入以下三行
  58. [root@node1 mysql]# vim /etc/mysql/my.cnf
  59. datadir = /mydata/data
  60. innodb_file_per_table = on
  61. skip_name_resolve = on
  62.  
  63. #为mysql节点准备服务脚本,并禁止mysqld开机自启
  64. [root@node1 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
  65. [root@node1 mysql]# chkconfig --add mysqld
  66. [root@node1 mysql]# chkconfig mysqld off
  67.  
  68. #启动mysql,创建mydb数据库
  69. [root@node1 mysql]# service mysqld start
  70. [root@node1 mysql]# /usr/local/mysql/bin/mysql
  71. Welcome to the MariaDB monitor. Commands end with ; or \g.
  72. Your MariaDB connection id is 3
  73. Server version: 5.5.46-MariaDB-log MariaDB Server
  74.  
  75. Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
  76.  
  77. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  78.  
  79. MariaDB [(none)]> CREATE DATABASE mydb;
  80. Query OK, 1 row affected (0.03 sec)
  81.  
  82. MariaDB [(none)]> exit
  83. Bye
  84.  
  85. [root@node1 mysql]# service mysqld stop

node2配置

  1. [root@node2 ~]# tar xf mariadb-5.5.-linux-x86_64.tar.gz -C /usr/local
  2. [root@node2 ~]# cd /usr/local/
  3. [root@node2 local]# ln -sv mariadb-5.5.-linux-x86_64 mysql
  4. `mysql' -> `mariadb-5.5.46-linux-x86_64'
  5. [root@node2 local]# cd mysql/
  6. [root@node2 mysql]# chown root.mysql ./*
  7.  
  8. #将node1的mysql配置文件复制给node2
  9. [root@node1 mysql]# scp /etc/mysql/my.cnf node2:/etc/mysql/
  10. #准备服务脚本,并禁止开机自启
  11. [root@node2 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
  12. [root@node2 mysql]# chkconfig --add mysqld
  13. [root@node2 mysql]# chkconfig mysqld off
  14.  
  15. #启动服务并查看共享数据库
  16. [root@node2 mysql]# service mysqld start
  17. [root@node2 mysql]# /usr/local/mysql/bin/mysql
  18. Welcome to the MariaDB monitor. Commands end with ; or \g.
  19. Your MariaDB connection id is 2
  20. Server version: 5.5.46-MariaDB-log MariaDB Server
  21.  
  22. Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
  23.  
  24. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  25.  
  26. MariaDB [(none)]> SHOW DATABASES;
  27. +--------------------+
  28. | Database |
  29. +--------------------+
  30. | information_schema |
  31. | mydb |
  32. | mysql |
  33. | performance_schema |
  34. | test |
  35. +--------------------+
  36. 5 rows in set (0.02 sec)
  37.  
  38. MariaDB [(none)]> EXIT
  39. Bye
  40.  
  41. #授权root用户远程访问mysql
  42. [root@node2 ~]# /usr/local/mysql/bin/mysql
  43. Welcome to the MariaDB monitor. Commands end with ; or \g.
  44. Your MariaDB connection id is 3
  45. Server version: 5.5.46-MariaDB-log MariaDB Server
  46.  
  47. Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
  48.  
  49. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  50.  
  51. MariaDB [(none)]> grant all on *.* to 'root'@'192.168.%.%' identified by '123456';
  52. Query OK, 0 rows affected (0.06 sec)
  53.  
  54. MariaDB [(none)]> flush privileges;
  55. Query OK, 0 rows affected (0.01 sec)
  56.  
  57. [root@node2 mysql]# service mysqld stop

在node1和node2卸载共享目录

  1. [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. mysql - json - look up subobjects or nested values directly by key or array index without reading all values

    w https://dev.mysql.com/doc/refman/5.7/en/json.html

  2. iass,pass,cass,sass,vm,container

    分布式存储hdfs 大文件,swift 对象存贮. 为七牛的CDN系统目前大部分还不是自建的,采用的是整合其它CDN的方式做的.也就是说出了七牛的文件分发使用的是网宿和蓝汛的老牌CDN的分发节点,自身 ...

  3. 解决kindeidtor与struts2框架交互WARN OgnlValueStack:68 - Error setting value [[Ljava.lang.String;@10da4df]的bug

    当用使用ssh框架,前端用到kindeitor富文本编辑器时候,上传文件后有一个图片管理.当点击图片管理的时候,在后台会报一个异常: WARN OgnlValueStack:68 - Error se ...

  4. python学习笔记(二)— 字典(Dictionary)

    字典是另一种可变容器模型,且可存储任意类型对象.字典是无序的,因为它没有下标,用key来当索引,所以是无序的. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分 ...

  5. 最长回文---hdu3068 (回文串 manacher 算法模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068 题意很清楚:就是求一个串s的子串中最长回文串的长度:这类题用到了manacher算法 #incl ...

  6. JS代码识别扫码设备

    <!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8" ...

  7. cordova 入门

    1. npm install -g cordova On Windows, npm can usually be found at C:\Users\username\AppData\Roaming\ ...

  8. C#建WindowForm调用R可视化

    众所周知R软件功能非常强大,可以很好的进行各类统计,并能输出图形.下面介绍一种R语言和C#进行通信的方法,并将R绘图结果显示到WinForm UI界面上的方法,文中介绍的很详细,需要的朋友可以参考下. ...

  9. 19.如何在vue里面调用其他js

    可以通过把js放到服务器,然后再html文件中通过链接的形式引入,这是目前我试过成功的唯一方法

  10. 微信小程序组件toast

    操作反馈toast:官方文档 Demo Code: var toastNum = 2 var pageData = {} pageData.data = {} for(var i = 0; i < ...