linux heartbeat MySql双机热备
一、heartbeat 的安装和配置 集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始了对集群系统的研究和开发。由于主要用于科学工程计算,所以这些系统并不为大家所熟知。直到Linu
一、heartbeat 的安装和配置 集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始
了对集群系统的研究和开发。由于主要用于科学工程计算,

所以这些系统并不为大家所熟知。直到Linux 集群的出现,集群的概念才得以广为传播。集群系统主要分为高可用(High Av ailability) 集群, 简称 HA 集群。常见的就是2个节点做成的

HA 集群,有很多通俗的不科学的名称,比如" 双机热备", " 双机互备", " 双机" 。 这样做的好处是当服务启动的时候,两台服务器一个作为主,另一个是从。测试机每几秒会ping 主机,当发现主机没有回应,就证明主机宕机了,那么从机马上会启动相应的服务,继续进行服务。这样就可以保证服务不间断。
具体的拓扑图如下:
1.1.1安装网络环境设定
分别设置两台服务器eth1、eth0的IP 地址,如:server1所示
,
更改计算机名称


设置DNS 解析


1.1.2、安装
1)先要检查系统中是否有下面软件开发包的支持,包括pkgconfig g lib2-devel e2fsprogs 和libnet
2) 我的系统中只缺少libnet ,安装libnet ,这里使用的是1.1.2. 1版本
tar -zxvf libnet.tar .gz
cd libnet
./configure
make
make install
,3) 安装heartbeat
tar -zxvf heartbeat-2.0.7.tar .gz
cd heartbeat-2.0.7
./ConfigureMe configure
make
make install
4) 当安装好heartbeat 后,系统会在/etc/下建立一个ha.d 的目录,我们需要把一些文件拷到里面去。
cp /soft/heartbeat-2.0.7/doc/ha.cf /etc/ha.d
cp /soft/heartbeat-2.0.7/doc/haresources /etc/ha.d cp /soft/heartbeat-2.0.7/doc/authkeys /etc/ha.d
1.1.3配置主要文件的配置
vi /etc/ha.d/ha.cf
具体要把下面的选项前的注释去掉
logfile /var/log/ha-log
logfacility local0
keepalive 2 每2秒钟 测试机发送一个广播 deadtime 30 30秒内没有反应,立即切换服务 warntime 10
initdead 120
udpport 694
bcast eth1 指明心跳连接的接口号
,ucast eth1 192.168.10.1 心跳连接的pc 的ip
auto_failback on
node

server1 两个的主机名(最好用uname -n 察看) node server2
ping 192.168.0.1 测试机的ip (要写外部的测试IP ) vi /etc/ha.d/haresources 这个主要是指明资源的来源,添加一条指定虚拟

IP
表示server2是主服务器,虚拟IP 地址
为192.168.0.10 ,IP 启动虚拟服务器HTTPD 。
vi /etc/ha.d/authkeys 这个是安全方面的配置,里面有三种认证方式:crc md5 sha1
启动sha1 认证,密码为123456
注:authkeys 文件权限必须为 600 否则报错。
Chmod 600 authkeys
启动服务
Service heartbeat start
二、MYSQL 数据库同步
2.1.1Mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好Mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现Mysql 数据库的热备份。要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备Mysql 的版本都要高于3.2,还有一个基本的原则就是作
,为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。首先查看主服务器的版本是否是支持热备的版本。然后查看my.cnf(类unix) 或者my.ini(windows)中Mysqld 配置块的配置有没有log-bin(记录数据库更改日志) ,因为Mysql 的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。
2.1.2安装MYSQL 5.1.41
两台服务器(主从服务器)做同样mysql 删除和重新安装的安装过程
备份数据库:mysqldump T_SIP >/home/T_SIP.sql
Mysqldump T_USER >/home/T_USER.sql
删除旧数据库:rm –rf /usr/local/mysql
Rm –rf /etc/rc.d/init.d/mysqld
安装新数据库: 安装之前,先将my.snf 文件拷贝到/etc目录下。使用的安装命令为 rpm –vhi MySQL******。安装完成之后确定mysql server能够正常启动。
cp my.cnf /etc/
rpm –vhi MySQL-server-community-5.1.41-0.rhe15.i386.rpm
rpm -vhi MySQL-client-community-5.1.39-0.rhel4.i386.rpm
rpm -vhi MySQL-devel-community-5.1.39-0.rhel4.i386.rpm

rpm -vhi MySQL-shared-community-5.1.39-0.rhel4.i386.rpm
安装mysql 数据库二进制日志记录插件:此插件mysql5.1里面没有,mysql5.0自带。 tar -zxvf innodb_plugin-1.0.6-rhel5.i486
cp ha_innodb.so /usr/lib/mysql/plugin/
chmod 777 ha_innodb.so
chown –R root:root ha_innodb.so
导入boromax 数据库:使用mysql 命令进入mysql 数据库控制台
use T_SIP;
source /home/www/db/T_SIP.sql;
use T_USER;
source /home/www/db/T_USER.sql;
在主服务器中建立从服务器访问主服务器mysql 上的用户:使用mysql 命令进入mysql 数据库控制台
grant replication slave on *.* to 'ccc'@'192.168.10.1' identified by '654321'; flush privileges;
2.1.3 数据库备份设置
A 、配置主服务器my.cnf 文件:vi /etc/my.cnf 在[mysqld]块添加
ignore_builtin_innodb
,plugin_load=innodb=ha_innodb.so;innodb_trx=ha_innodb.so;innodb_locks=ha_innodb.so;innodb_lock_waits=ha_innodb.so;innodb_cmp=ha_innodb.so;innodb_cmp_reset=ha_innodb.so;innodb_cmpmem=ha_innodb.so;innodb_cmpmem_reset=ha_innodb.so
指用二进制的形式记录日志
server-id=1 服务器的ID
log-bin=mysql-bin 日志文件的名称
binlog-do-db=T_SIP,T_USER 记录日志的数据库
binlog-ignore-db=mysql,test, information_schema 不记录日志的数据库
innodb_data_home_dir = /apps/mysql/lib/
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
innodb_log_group_home_dir = /apps/mysql/lib/
# You can set .._buffer_pool_size up to 50 - 80
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 128M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 of buffer pool size
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
B 、配置从服务器my.cnd 文件:vi /etc/my.cnf 在[mysqld]块添加
ignore_builtin_innodb
plugin_load=innodb=ha_innodb.so;innodb_trx=ha_innodb.so;innodb_locks=ha_innodb.so;innodb_lock_waits=ha_innodb.so;innodb_cmp=ha_innodb.so;innodb_cmp_reset=ha_innodb.so;innodb_cmpmem=ha_innodb.so;innodb_cmpmem_reset=ha_innodb.so
指用二进制的形式记录日志
Server-id=2 //设置数据库id 默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。
Master-host=192.168.10.1 //主服务器的IP 地址或者域名
Master-port=3306 //主数据库的端口号
Master-user=ccc //同步数据库的用户
Master-password=654321 //同步数据库的密码
master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差 report-host=192.168.10.2 //报告错误的服务器
innodb_data_home_dir = /apps/mysql/lib/
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
innodb_log_group_home_dir = /apps/mysql/lib/
# You can set .._buffer_pool_size up to 50 - 80
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 128M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 of buffer pool size
,innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
对/etc/my.cnf文件设置完成之后看mysql 服务是否可以启动,如可以启动那说明没问题了,如果不能启动说my.cnf 文件设置有问题。
C 、备份主服务器数据库,导入到从服务器中 (主服务器操作以下命令)
备份之前先锁定数据库,使用mysql 命令进入mysql 数据库控制台
FLUSH TABLES WITH READ LOCK; 锁定数据库
unlock tables; 解除锁定
show master status; 查看主服务器的二进制日志名称和偏移量,如下图:
日志名称:mysql-bin.000001
偏移量:106
到这界面不用动了,另外打开一个窗口进行备份数据库。

Cd /apps/mysql/lib 这是数据库存储目录
Tar –zcvf 123.tgz ib* T_SIP T_USER
Scp 123.tgz
D 、设置从服务器的二进制日志和偏移量
覆盖主服务器拷贝过来的数据库和记录文件
Cd /apps/mysql/lib
Tar –zxvf 123.tgz
使用mysql 命令进入mysql 数据库控制台:
slave stop; 停止slave 的服务:
Change master to master_log_file='mysql-bin-000001',master_log_pos=106;
Slve stop; 启动slave 服务
在主服务器查看状态和信息
防火墙设置:udp654
-A RH-Firewall-1-INPUT -p udp -m udp –dport 694 -d 10.0.0.201 -j ACCEPT