Centos 5.2+MYSQL+heartbeat双机互备

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
一、背景
当前大多网站采用Linux MYSQLAPACHE+PHP这种经典配置,如何防止单点失败造成的整个网站的不可用是网站管理者必须要考虑的问题,其中数据库的高可用性(Database server’s high availability)是重中之重。
对于数据库的高可用性,各商业软件的厂商都有各自的解决方案,比如Oracle OPS serverIBM DB2 (share-nothing architecture)。最近MYSQL AB也发布了MYSQL cluster 软件,使用与IBM DB2类似的技术。
MySQL cluster可能会是日后最理想的方案,但是从资源、可集成度方面考虑,给出一个简单实用的方案借鉴。本文介绍的是性价比比较高的一种使用Heartbeat 2.0配置Linux高可用性集群,同时使用Heartbeat也可以实现简单的web集群。
 
二、实现原理
通过Linux HA 软件 heartbeat 实现IP的自动漂移,即当一台服务器宕机后,浮动IP(整个cluster的对外IP )自动漂移到另外一台服务器。
通过Mysql自身的replication 实现不同机器上多个数据库的同步整体性能此方案将会降低MYSQL 1%左右的性能,可用性及数据安全性将大有提高,同时服务器的切换对终端使用者是透明的,终端应用不需要进行更改。
所需硬件:
安装有双网卡的配置大致相同的服务器或工作机两台 一条交叉网线(用于双机对连的心跳线)
 
所需软件:
Linux HA 软件 heartbeat (只支持两个节点),安装盘里集成的有这个软件的rpm
Mysql软件
 
安装步骤:
1、安装MYSQL
#cd /opt
#useradd mysql -d /usr/local/mysql -s /sbin/nologin
#tar -zxvf mysql- 5.1.29 -rc.tar.gz
#cd mysql- 5.1.29 -rc
# ./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql --without-debug --with-big-tables --with-charset=gbk --with-collation=gbk_chinese_ci --with-extra-charsets=all --with-pthread --enable-thread-safe-client --enable-assembler --without-isam --without-innodb --without-ndb-debug --with-mysqli
#make && make install
#/usr/local/mysql/bin/mysql_install_db        //初始化数据库
#chown -R mysql.mysql /usr/local/mysql/     //设置目录宿主
#cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf   //复制配置文件
#cp support-files/mysql.server /etc/rc.d/init.d/mysqld    //设置启动文件 
#chmod 700 /etc/rc.d/init.d/mysqld                         
#/usr/local/mysql/bin/mysqld_safe --user=mysql &         
#/etc/rc.d/init.d/mysqld start
在启动mysql时报错
查看日志发现以下错误:
/etc/my.cnf文件中的skip-federated注释掉即可
#chkconfig --add mysqld
#chkconfig --level 2345 mysqld on
#ln -s /usr/local/mysql/bin/mysql /sbin/mysql
#ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
#mysqladmin –u root password 1q2w3e        //设置root 密码
#配置库文件搜索路径
#echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
#ldconfig
#添加/usr/local/mysql/bin到环境变量PATH
#export PATH=$PATH:/usr/local/mysql/bin
mysqlB也按以上的方式进行安装
2mysqlA设置
设置同步数据库:
   在这里我就用test数据库来做测试,在test数据库里新建一个data表,并添加一些数据,具体操作如下:
#mysql –u root –p1q2w3e
mysql>   create table data(name VARCHAR(20), address VARCHAR(50), phone VARCHAR(20));
mysql> insert into data(name,address,phone) values('jhone',' beijing ','138000000');
mysql> select * from data;
设置数据库同步帐户:
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO 'backup'@' 10.0.0 .2' IDENTIFIED BY 'qawsed';
(授与从 10.0.0 .2主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO backup@10.0.0.2 IDENTIFIED BY 'qawsed';)
mysql>flush privileges;
修改配置文件:
停止mysql服务
[root@mysqlA opt]#service mysqld stop
建立用于更新日志的目录,并给于mysql的权限
[root@mysqlA opt]# mkdir /var/log/mysql
[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/
更改Mysql配置文件/etc/my.cnf
[root@mysqlA opt]# vi /etc/my.cnf
server-id=1                 //服务器ID
log-bin=mysql-bin
log-bin=/var/log/mysql/updatelog   //启用更新日志
binlog-do-db=test       //表示需要备份的数据库是test这个数据库
replicate-same-server-id
master-host= 10.0.0 .2      //指定主服务器IP
master-user=backup       //指定在主服务器上可以同步的帐号
master-password=qawsed //指定帐号对应的密码
master-connect-retry=60  //断点重试间隔为60
replicate-do-db=test      //表示同步test数据库
binlog-ignore-db=mysql   //不同步mysql数据库
test进行备份
[root@mysqlA opt]# service mysqld start    //先启动mysql
[root@mysqlA opt]# /usr/local/mysql/bin/mysqldump -h localhost -u root -p1q2w3e test >test.sql
[root@mysqlA opt]#scp test.sql root@10.0.0.2:/opt     // (将test.sql复制到mysqlB/opt目录下)
至此mysqlA服务器上有关mysql的设置已完成,下一步开始配置mysqlB
设置mysqlB
设置数据库同步帐户:
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO 'backup'@' 10.0.0 .1' IDENTIFIED BY 'qawsed';
(授与从 10.0.0 .1主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO backup@10.0.0.1 IDENTIFIED BY 'qawsed';)
mysql>flush privileges;
修改配置文件:
停止mysql服务
[root@mysqlA opt]#service mysqld stop
建立用于更新日志的目录,并给于mysql的权限
[root@mysqlA opt]# mkdir /var/log/mysql
[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/
更改Mysql配置文件/etc/my.cnf
[root@mysqlA opt]# vi /etc/my.cnf
server-id=2                 //服务器ID
log-bin=mysql-bin
log-bin=/var/log/mysql/updatelog   //启用更新日志
binlog-do-db=test       //表示需要备份的数据库是test这个数据库
replicate-same-server-id
master-host= 10.0.0 .1      //指定主服务器IP
master-user=backup       //指定在主服务器上可以同步的帐号
master-password=qawsed //指定帐号对应的密码
master-connect-retry=60  //断点重试间隔为60
replicate-do-db=test      //表示同步test数据库
binlog-ignore-db=mysql   //不同步mysql数据库
 
还原从mysqlA备份过的test.sql
#service mysqld start
# mysql -u root -p1q2w3e test <test.sql
重启两边的mysql服务
查询配置
Show Slave status:此处Slave_IO_Running ,Slave_SQL_Running 都应该是yes,表示从库的I/O,Slave_SQL线程都正确开启.
Mysql中可通过以下命令来查看主从状态
show master status 查看master状态
show slave status 查看slave状态
show processlist G 查看当前进程
stop slave 暂时停止slave进程
start slave 开始slave进程
primary服务器上 MySQL命令符下输入:
mysql>show master status;
mysql>show slave status\G;
如果出现以错误:
解决办法:在/etc/my.cnf [mysqld]下面加上replicate-same-server-id参数
到此mysql的双机互备已基本完成,在两台服务器的mysql数据库中任意添加数据,都可以同步到对端服务器上
安装配置heartbeat:
Heartbeat下载地址如下:
下载对应的版本,在此我的系统是centos 5.2
rpm -ivh libnet- 1.1.2 .1-2.1.i386.rpm
rpm -ivh heartbeat-pils- 2.1.4 -2.1.i386.rpm
rpm -ivh --nodeps heartbeat-stonith- 2.1.4 -2.1.i386.rpm
rpm -ivh --nodeps heartbeat- 2.1.4 -2.1.i386.rpm
rpm -ivh --nodeps heartbeat-devel- 2.1.4 -2.1.i386.rpm
rpm -ivh --nodeps heartbeat-ldirectord- 2.1.4 -2.1.i386.rpm
rpm -ivh ipvsadm-1.24-8.1.i386.rpm
配置 HA的各配置文件:
复制配置文件
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/authkeys /etc/ha.d/
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/haresources /etc/ha.d/
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/
配置心跳的加密方式:authkeys
[root@mysqlA opt]#vi /etc/ha.d/authkeys
#如果使用双机对联线(双绞线),可以配置如下:
auth 1
1 crc
#存盘退出,然后
[root@mysqlA opt]#chmod 600 authkeys
 
配置心跳的监控:haresources
[root@mysqlA opt]#vi /etc/ha.d/haresources
#各主机这部分应完全相同。
mysqlA IPaddr::192.168.8.155 ipvsadm mysqld
[root@mysqlA opt]# mkdir -p /var/log/ha_log
[root@mysqlA opt]#chmod 777 /var/log/ha_log/
 
配置心跳的配置文件:ha.cf
[root@mysqlA opt]#vi /etc/ha.d/ha.cf
logfile /var/log/ha_log/ha-log.log   ## ha的日志文件记录位置。如没有该目录,则需要手动添加
bcast eth1     ##使用eht1做心跳监测
keepalive 2    ##设定心跳(监测)时间时间为2
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694    ##使用udp端口694 进行心跳监测
auto_failback on
node mysqlA  ##节点1,必须要与 uname -n 指令得到的结果一致。
node mysqlB  ##节点2
ping 192.168.8.100   ##通过ping 网关来监测心跳是否正常。
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
debugfile /var/log/ha_log/ha-debug.log
 
设置ipvsadm的巡回监测
[root@mysqlA opt]#ipvsadm -A -t 192.168.8.155:3306 -s rr
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.151:3306 -m
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.152:3306 –m
 
执行后进行监测:
[root@mysqlA opt]#ipvsadm –list
 
 
HA服务的启动、关闭以及测试
启动HA: service heartbeat start
关闭HA; service heartbeat stop
进行监控: service heartbeat status
防火墙设置
heartbeat 默认使用udp 694端口进行心跳监测。 如果系统有使用iptables 做防火墙,应记住把这个端口打开。
iptables -I INPUT -p udp --dport 694 -j ACCEPT
 
到此mysql双机互备已基本完成,不管哪一台服务器菪机都不会影响mysql的正常运行

本文转自king_819 51CTO博客,原文链接:http://blog.51cto.com/kerry/110206,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
2月前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
571 16
|
3月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
332 10
|
7月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
1820 26
|
10月前
|
安全 关系型数据库 MySQL
CentOS7仅安装部署MySQL80客户端
通过上述步骤,你可以在CentOS 7上成功安装并配置MySQL 8.0客户端。这个过程确保你能够使用MySQL客户端工具连接和管理远程的MySQL数据库,而不需要在本地安装MySQL服务器。定期更新MySQL客户端可以确保你使用的是最新的功能和安全修复。
969 16
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
640 3
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
133 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
3月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。
|
2月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。