热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

用MySQL+HeartBeat实现MySQL主主自动切换来保证网站不中断服务

对于数据库的高可用性,各商业软件的厂商都有各自的解决方案,比如OracleOPSserver和IBMDB2(share-nothingarchitecture)。最

对于数据库的高可用性,各商业软件的厂商都有各自的解决方案,比如Oracle OPS server和IBM DB2 (share-nothing architecture)。最

Mysql HA实现MYSQL的高可用

一、背景

当前大多网站采用MYSQL+Linux+APACHE这种经典配置,如何防止单点失败造成的整个网站的不可用是网站管理者必须要考虑的问题,其中数据库的高可用性(Database server’s high availability)是重中之重。

对于数据库的高可用性,各商业软件的厂商都有各自的解决方案,比如Oracle OPS server和IBM DB2 (share-nothing architecture)。最近MYSQL AB也发布了MYSQL cluster 软件,使用与IBM DB2类似的技术。

MySQL cluster可能会是日后最理想的方案,但是从资源、可集成度方面考虑,,给出一个简单实用的方案借鉴。本文介绍的是性价比比较高的一种: 使用Heartbeat 2.0配置Linux高可用性集群。

二、实现原理

通过Linux HA 软件 heartbeat 实现IP的自动漂移,即当一台服务器宕机后,浮动IP(整个cluster的对外IP )自动漂移到另外一台服务器。

通过Mysql自身的replication 实现不同机器上多个数据库的同步整体性能此方案将会降低MYSQL 1%左右的性能,可用性及数据安全性将大有提高,同时服务器的切换对终端使用者是透明的,终端应用不需要进行更改。

所需硬件

安装有双网卡的配置大致相同的服务器或工作机两台 一条交叉网线(用于双机对连的心跳线)

所需软件

Linux HA 软件 heartbeat (只支持两个节点),安装盘里集成的有这个软件的rpm包

软件主页:

Mysql软件

软件主页:

实现步骤

一、设置硬件环境:如下表:

计算机名: 网卡 ip地址

primary Eth0

eth1

192.168.0.10/255.255.255.0

10.0.0.1/255.0.0.0 (用于心跳)

backup Eth0

eth1

192.168.0.11/255.255.255.0

10.0.0.2/255.0.0.0 (用于心跳

primary和backup的eth0分别连接到你的交换机

primary和backup的eth1之间用心跳线直连起来,做心跳

浮动IP为192.168.0.8/255.255.255.0

二、安装MYSQL

在primary节点上安装mysql数据库

这里我开始都把它下载到本地了,所以这里我用软件把mysql包上传到服务器root目录下

1、在linux系统中添加运行Mysql的用户和组

[root@primary ~]# groupadd mysql

[root@primary ~]# useradd -g mysql mysql

2、解压缩源码包

[root@primary ~]# tar -zxvf mysql-5.0.22.tar.gz

[root@primary ~]# cd mysql-5.0.22

3、配置编译

配置mysql的安装目录,并制定数据库的存放位置

[root@primary mysql-5.0.22]# ./configure –prefix=/usr/local/mysql \

–localstatedir=/var/lib/mysql

4、编译并安装

[root@primary mysql-5.0.22]#make

[root@primary mysql-5.0.22]#make install

5、装载原始授权到数据库

[root@primary mysql-5.0.22]#./scripts/mysql_install_db

6、copy配置文件到/etc目录

[root@primary mysql-5.0.22]# cp support-files/my-medium.cnf /etc/my.cnf

7、copy启动脚本到资源目录

cp support-files/mysql.server /etc/rc.d/init.d/mysqld

8、添加mysql服务,让系统启动时自动启动mysql服务

[root@primary mysql-5.0.22]#chmod +x /etc/rc.d/init.d/mysqld

[root@primary mysql-5.0.22]#chkconfig –level 235 mysqld on

9、更改目录属主/var/lib/mysql

[root@primary mysql-5.0.22]#chown -R mysql.mysql /var/lib/mysql

10、启动mysql

[root@primary mysql-5.0.22]#service mysqld start

11、设置环境变量

[root@primary ~]# vi /etc/profile添加一行就 ,在运行mysql的时候就不用输入很长的路经了

export PATH=$PATH:/usr/local/mysql/bin

设置好之后,用下行命令是设置立即生效

# source /etc/profile

在backup服务器上安装mysql如同上面的步骤

在mysql数据库中创建一个库,用来同步数据和测试用,mysql安装完后有一个练习库test这里就不建了直接就用它了。在test库里面先建一个表

登陆mysql数据库

mysql -u root -p

(执行后提示输入密码,正确输入mysql root用户密码后,登入mysql,以下操作在mysql命令行下进行)

要使用test数据库,先用use命令选择该数据库:

mysql> use test

创建一个表

下面使用create table语句指定你要建的表的布局,下面只是用于一个测试的表。我就随便建了一个:

mysql> create table data(name VARCHAR(20), address VARCHAR(50), phone VARCHAR(20));

Query OK, 0 rows affected (0.11 sec)

在表中添加一条记录,用insert into语句:

mysql> insert into data(name,address,phone) values(‘jhone’,'beijing’,’138000000′);

Query OK, 1 row affected (0.02 sec)

查看表中的记录

mysql> select * from data;

+——-+———+———–+

| name | address | phone |

+——-+———+———–+

| jhone | beijing | 138000000 |

+——-+———+———–+

1 row in set (0.05 sec)

linux

推荐阅读
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 本文探讨了在MySQL数据库中处理大规模数据删除的最佳实践,包括分批删除、利用索引、管理事务以及选择合适的删除命令等策略,旨在提升删除效率并确保系统稳定。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
  • 在尝试启动Java应用服务器Tomcat时,遇到了org.apache.catalina.LifecycleException异常。本文详细记录了异常的具体表现形式,并提供了有效的解决方案。 ... [详细]
author-avatar
我的天空有点蓝2012_916
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有