码迷,mamicode.com
首页 > 数据库 > 详细

mysql双机热备

时间:2018-02-09 20:51:06      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:登录   文档   daemon   tran   bzip2   tmp   tail   子网   添加   

1.添加共享存储资源

上一节已经讲了如何添加资源,这里练习一下如何添加共享存储资源,为httpd添加一个共享存储,使得资源切换的时候,用户看到的数据是一样的。

在node(物理机)上创建一个nfs共享存储

[root@server ~]# mkdir /web

[root@server ~]# chmod o+w /web

[root@server ~]# echo '/web *(rw,async)' > /etc/exports.d/aa.exports

[root@server ~]# systemctl start nfs-server

[root@server ~]#

在任一节点上测试nfs正常工作,并在共享存储里创建index.html

[root@nodeX ~]# showmount -e node

Export list for node:

/web *

[root@nodeX ~]# mount node:/web /mnt

[root@nodeX ~]# echo 'share storage node xxxxxxxx' > /mnt/index.html

[root@nodeX ~]# umount /mnt

下面添加资源

技术分享图片 

class/provider里选择ocf:heatbeat

Type里选择Filesystem

Resource Group里选择group_1

Resource ID里可以随便填写,这里填写nfs_web

device里填写nfs共享目录的路径,这里是node:/web

dirctory是在节点上的挂载点,因为默认httpd的文档目录是/var/www/html,所以这里填写/var/www/html

fstype填写nfs

 

技术分享图片 

点击"Create Resource"

因为涉及到资源约束条件(后面会讲),此处先把webserver所在组设置为none

技术分享图片 

点击"Apply Changes"

再次把webserver设置到group_1里:

技术分享图片 

 

点击"Apply Changes"

此时集群可以正常工作了

验证

技术分享图片 

查看集群运行状态:

技术分享图片 

可以看到所有节点均在node1上运行。

在node1~node3任一节点上对node1执行standby操作:

[root@node1 ~]# pcs cluster standby node1

技术分享图片 

可以看到集群已经跑到node2上运行,验证资源是否真的node2上运行:

技术分享图片 

因为访问的数据放在共享存储里,所以看到的内容仍然是相同的:

技术分享图片 

2.实战: mysql双击热备

创建mysql高可用集群需要三个资源:

mysql_vip: 192.168.122.201/24

mysql服务: mysql_service

mysql共享存储 : mysql_storage

所属组: group_2

 

先创建第一个资源mysql_vip:

技术分享图片 

Class/Provider选择ocf:heatbeat

Type选择IPaddr2

Resource ID 用来标记不同资源,这里填写mysql_ip

ip用来填写所选择的vip,这里填写为192.168.122.201,记住要选择一个没有使用过的ip

cidr_netmask 填写子网掩码长度,这里写24

技术分享图片 

点击"Create Resource"

创建组group_2,选中mysql_vip,点击"create group"

技术分享图片 

Group Name填写group_2

技术分享图片 

点击"Create Group"

 

添加共享存储

在node(物理机)上创建共享目录/mysql,并把所有者所属组设置为27

[root@server ~]# mkdir /mysql

[root@server ~]# chown 27:27 /mysql

[root@server ~]# echo '/mysql *(rw,async)' > /etc/exports.d/mysql.exports

[root@server ~]# exportfs -arv

exporting *:/mysql

exporting *:/web

[root@server ~]#

 

在node1~node3任一节点上上测试nfs共享目录正常工作:

[root@node2 ~]# mount node:/mysql /mnt

[root@node2 ~]# df -hT | tail -1

node:/mysql           nfs4      120G  7.3G  113G    7% /mnt

[root@node2 ~]# umount /mnt

[root@node2 ~]#

[root@node2 ~]#

添加共享存储资源:

技术分享图片 

Class/Provider选择ocf:heatbeat

Type选择Filesystem

Resource Group选择group_2

Resource ID 用于区分不同的资源,这里填写mysql_storage

device处填写nfs共享目录的路径,这里填写node:/mysql

directory是mysql数据存放的目录,这里填写/var/lib/mysql

fstype填写nfs

技术分享图片 

点击"Create Resource"

添加第三个资源mariadb

在三个节点上安装mariadb

[root@nodeX ~]# yum install mariadb-server mariadb -y

已加载插件:product-id, subscription-manager

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

正在解决依赖关系

–> 正在检查事务

已安装:

  mariadb.x86_64 1:5.5.41-2.el7_0                                    mariadb-server.x86_64 1:5.5.41-2.el7_0                                  

作为依赖被安装:

  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7      perl-DBD-MySQL.x86_64 0:4.023-5.el7       

  perl-DBI.x86_64 0:1.627-4.el7 perl-Data-Dumper.x86_64 0:2.145-3.el7        perl-IO-Compress.noarch 0:2.061-2.el7     

  perl-Net-Daemon.noarch 0:0.48-5.el7        perl-PlRPC.noarch 0:0.2020-14.el7               

 

完毕!

[root@nodeX ~]#

在node1~node3所有节点上修改配置文件,设置编码为utf8

[root@nodeX ~]# sed -i '/mysqld\]/acharacter-set-server=utf8' /etc/my.cnf

添加mariadb资源

技术分享图片 

Class/Provider选择systemd

Type选择mariadb

Resource Group选择group_2

Resource ID用于区分不同的资源,这里填写mysql_service

技术分享图片 

点击"Create Resource"

稍等一会集群正常工作:

技术分享图片 

技术分享图片 

由此可以看到集群现在在node3上工作,现在在node3上登录mysql创建一个可以远程登录的用户:

[root@node3 ~]# mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 5.5.41-MariaDB MariaDB Server

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

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

MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by 'redhat';

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>

验证

下面开始在客户端(这里选择物理机node)上进行验证。

首先安装客户端工具:

[root@server ~]# yum install mariadb -y

已加载插件:langpacks, product-id, subscription-manager

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

正在解决依赖关系

–> 正在检查事务

—> 软件包 mariadb.x86_64.1.5.5.41-2.el7_0 将被 安装

–> 解决依赖关系完成

依赖关系解决

….

已安装:

  mariadb.x86_64 1:5.5.41-2.el7_0                                                                                                              

完毕!

[root@server ~]#

连接mysql_vip

[root@server ~]#  mysql -uroot -predhat -h192.168.122.201 -e \

>   "create database aa ; use aa ; create table aa (id int); insert into aa values (1);"

[root@server ~]#

[root@server ~]# mysql -uroot -predhat -h192.168.122.201 -e \

'use aa; select * from aa;'

+——+

| id   |

+——+

|    1 |

+——+

[root@server ~]#

 

现在对node3执行standby操作:

技术分享图片 

可以看到mysql已经在node2上运行了,我们仍然连接mysql_vip:

[root@server ~]# mysql -uroot -predhat -h192.168.122.201 -e 'use aa; select * from aa;'

+——+

| id   |

+——+

|    1 |

+——+

[root@server ~]#

依然是可以连接的,mysql服务成功切换!

 

关注“老段工作室公众号”,文章更新早知道,每天几分钟,轻轻松松学知识

技术分享图片


mysql双机热备

标签:登录   文档   daemon   tran   bzip2   tmp   tail   子网   添加   

原文地址:http://blog.51cto.com/lduan/2070731

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!