Welcome 微信登录

首页 / 数据库 / MySQL / Corosync 实现 MariaDB 数据库服务的高可用

方案:    corosync + pacemaker  提供HA的解决方案。    使用NFS共享服务器导出的共享文件系统做为数据目录;拓扑图如下:在 CentOS/RHEL/Scientific Linux 6 下安装 LAMP (Apache with MariaDB and PHP) http://www.linuxidc.com/Linux/2013-07/86755.htmMariaDB Proxy读写分离的实现 http://www.linuxidc.com/Linux/2014-05/101306.htmMySQL+Corosync+Pacemaker+DRBD构建高可用MySQL http://www.linuxidc.com/Linux/2013-09/90408.htm搭建基于Corosync+DRBD的高可用MySQL集群 http://www.linuxidc.com/Linux/2013-10/91386.htm分别基于NFS服务和DRBD服务利用Corosync配置高可用集群 http://www.linuxidc.com/Linux/2013-09/90410.htmLinux 高可用(HA)集群之Corosync详解 http://www.linuxidc.com/Linux/2013-08/88733.htmpacemaker + Corosync 搭建高可用集群 http://www.linuxidc.com/Linux/2013-06/85972.htmCorosync+pacemaker+RA实现MySQL高可用 http://www.linuxidc.com/Linux/2012-08/67949.htm一、配置HA高可用集群的各节点间能够基于主机名通讯。1、设置主机名(1)、在 192.168.60.128 主机设置编辑/etc/sysconfig/network文件,使得主机名永久有效[root@www ~]# vim /etc/sysconfig/networkHOSTNAME=node2.linuxidc.com使用hostname命令设置主机名,让它即时生效[root@www ~]# hostname node2.linuxidc.com(2)、在 192.168.60.22 主机设置编辑/etc/sysconfig/network文件,使得主机名永久有效[root@stu13 ~]# vim /etc/sysconfig/networkHOSTNAME=node1.linuxidc.com使用hostname命令设置主机名,让它即时生成[root@stu13 ~]# hostname node1.linuxidc.com2、为了,操作方便设置节点之间能够基于密钥通讯。也就是所谓的建立信任主机。[root@node1 ~]# ssh-keygen -t rsa[root@node1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.60.128[root@node2 ~]# ssh-keygen -t rsa[root@node2 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.60.223、节点之间基于主机名通讯,要能够解析主机名才可以。解析主机名有两种方式:(1)、使用DNS地址解析服务器;(2)、使用本地hosts文件解析基于效率和安全方面考虑,这里使用hosts文件解析主机名。[root@node1 ~]# vim /etc/hosts192.168.60.22   node1.linuxidc.com node1192.168.60.128  node2.linuxidc.com node2把/etc/hosts文件复制到node2节点[root@node1 ~]# scp /etc/hosts node2:/etc/hosts                                         100%   78     0.1KB/s   00:004、测试两个节点能够实现基于密钥的方式进行通讯和能否基于主机名进行通讯root@node2 ~]# ssh node1 "hostname"node1.linuxidc.com[root@node1 ~]# ssh node2 "hostname"node2.linuxidc.com[root@node1 ~]# ssh node2 "ping -c 1  node2.linuxidc.com"PING node2.linuxidc.com (192.168.60.128) 56(84) bytes of data.64 bytes from node2.linuxidc.com (192.168.60.128): icmp_seq=1 ttl=64 time=0.061 ms--- node2.linuxidc.com ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 0.061/0.061/0.061/0.000 ms[root@node1 ~]# ping -c 1 node1.linuxidc.comPING node1.linuxidc.com (192.168.60.22) 56(84) bytes of data.64 bytes from node1.linuxidc.com (192.168.60.22): icmp_seq=1 ttl=64 time=0.069 ms--- node1.linuxidc.com ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 0.069/0.069/0.069/0.000 ms 说明:   从上述可以看出,两个节点已经能够实现基于主机名的方式进行通讯。 二、配置NFS服务器Ubuntu下搭建NFS网络文件系统服务器 http://www.linuxidc.com/Linux/2013-07/87367.htmHeartbeat_ldirector+LB+NFS实现HA及LB、文件共享 http://www.linuxidc.com/Linux/2013-06/85292.htmCentOS 5.5配置NFS服务器教程 http://www.linuxidc.com/Linux/2013-03/81737.htmUbuntu 12.10下NFS的安装使用 http://www.linuxidc.com/Linux/2013-03/80478.htm1、提供NFS服务器共享的文件系统使用LVM逻辑卷做为数据库的数据目录,为了使用逻辑卷的快照功能备份数据。(1)、创建分区[root@nsf ~]# fdisk -l /dev/sda | grep "/dev/sda3"/dev/sda3            7859        9164    10489446   8e  Linux LVM(2)、把该分区做成pv [root@nsf ~]# pvcreate /dev/sda3  Physical volume "/dev/sda3" successfully created(3)、创建逻辑卷组myvg,PE大小为8E.[root@nsf ~]# vgcreate -s 8M myvg /dev/sda3  Volume group "myvg" successfully created(4)、创建lvm,大小为:2G[root@nsf ~]# lvcreate -L 2G -n sharedir myvg  Logical volume "sharedir" created[root@nsf ~]# mke2fs -t ext4  /dev/myvg/sharedir[root@nsf ~]# echo $?0(5)、创建挂载点[root@nsf ~]# mkdir /mydata(6)、编辑/etc/fstab文件,实现开机可以自动挂载“/dev/myvg/sharedir”[root@nsf ~]# vim /etc/fstab/dev/mapper/myvg-sharedir /mydata               ext4    defaults,acl    0 0(7)、挂载[root@nsf ~]# mount -a查看是否挂载[root@nsf ~]# mount | grep "mydata"/dev/mapper/myvg-sharedir on /mydata type ext4 (rw,acl) 2、配置挂载NFS服务器共享的文件系统的客户端中的数据库服务进程(mysql)具有共享文件系统(目录)的读写权限。     把NFS服务器导出的文件系统中,作为数据库的数据目录,根据NFS服务器的工作原理,NFS的客户端可以往NFS服务器导出的文件系统(目录)写数据要满足两个条件:     (A)、在NFS服务器级别,做访问控制时候是否授写NFS客户端写(w)的权限;     (B)、在NFS客户端发起写(W)操作的进程的属主对应的UID,在NFS服务器端所在的主机是否该UID          对应的用户。     1)、如果有的话,那么就检查该用户是否有NFS服务器导出的文件系统(目录)的写权限。如果有         写权限的话,那么NFS客户端的进程就可以往NFS服务器导出的文件系统发起写操作了。否则         的话NFS客户端是无权限往NFS服务器导出的文件系统写数据的。     2)、如果没有的话,那就就检查nobody用户是否有NFS服务器导出的文件系统(目录)的写权限。         不过在Linux系统上,nobody用户的权限是最小。     因为,在MySQL数据库中,接收客户端SQL操作请求的进程的属主是:mysql. 所以,我们要配置该用户的UID号在NFS服务器所在的主机上有对应的用户名,且要求该用户有NFS服务器导出的文件系统(目录),有读写权限。对HA高可用节点和NFS服务器,三台主机添加下述用户:规划在三台主机都使用系统用户,且UID都为:404;GID都为:404.(1)、在三台主机设置用户(A)、在node1 主机创建mysql用户[root@node1 local]# useradd -r -u 404 -g 404 -s /sbin/nologin mysql[root@node1 local]# id mysqluid=404(mysql) gid=404(mysql) groups=404(mysql)[root@node1 local]# groupadd -r -g 404 mysql(B)、在node2 主机创建mysql用户[root@node2 ~]# groupadd -r  -g 404 mysql[root@node2 ~]# useradd -r -u 404 -g 404 -s /sbin/nologin mysql[root@node2 ~]# id mysqluid=404(mysql) gid=404(mysql) groups=404(mysql)(C)、在NFS服务器也创建UID、GID都为:404的用户;[root@nsf ~]# groupadd -g 404 -r usenfs[root@nsf ~]# useradd  -r -u 404 -g 404 -s /sbin/nologin usenfs[root@nsf ~]# id usenfsuid=404(usenfs) gid=404(usenfs) groups=404(usenfs)(2)、授权(A)、在文件系统级别授权;使用控制列表方式,授权UID为:404的用户usenfs有NFS服务器导出的文件系统的读写权限。[root@nsf /]# setfacl -m u:usenfs:rwx /mydata[root@nsf /]# getfacl /mydatagetfacl: Removing leading "/" from absolute path names# file: mydata# owner: root# group: rootuser::rwxuser:usenfs:rwx  ----> 表示:usenfs用户有读写执行权限。group::r-xmask::rwxother::r-x(B)、设置NFS服务器导出的文件系统,在NFS级别做访问控制。[root@nsf /]# vim /etc/exports/mydata 192.168.60.0/24(rw)启动NFS服务器[root@nsf /]# service nfs startStarting NFS services:                                     [  OK  ]Starting NFS quotas:                                       [  OK  ]Starting NFS mountd:                                       [  OK  ]Stopping RPC idmapd:                                       [  OK  ]Starting RPC idmapd:                                       [  OK  ]Starting NFS daemon:                                       [  OK  ](3)、查看NFS服务器导出的文件系统[root@nsf /]# showmount -e 192.168.60.40Export list for 192.168.60.40:/mydata 192.168.60.0/24(4)、创建MariDB数据库的数据目录[root@nsf /]mkdir /mydata/mysql使用控制列表方式授与 usefs 用户有该目录的读写执行权限。[root@nsf mysql]# setfacl -m u:usenfs:rwx /mydata/mysql/[root@nsf mysql]# getfacl /mydata/mysql/getfacl: Removing leading "/" from absolute path names# file: mydata/mysql/# owner: root# group: rootuser::rwxuser:usenfs:rwx  ----> usenfs用户的权限group::r-xmask::rwxother::r-x更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-10/107615p2.htm
  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一页
二进制安装MySQL-5.7.4数据库查看Oracle 32位还是64位(x86 or x64)相关资讯      MariaDB  Corosync 
  • Ubuntu 16.04 Dockerfile 安装  (今 10:03)
  • Ansible+Corosync+Pacemaker+NFS实  (04月30日)
  • MariaDB 10.1.11 发布下载,MySQL   (02月04日)
  • Corosync+Pacemaker构建高可用集群  (08月03日)
  • CentOS 7.0 使用 yum 安装 MariaDB  (03月03日)
  • MariaDB 10.1.10 发布下载,MySQL   (12/26/2015 10:55:29)
本文评论 查看全部评论 (0)
表情: 姓名: 字数