mysql热备+heartbeat集群


1、环境说明

Master : 192.168.3.37

Slave: 192.168.3.38

V IP:192.168.3.55


2、mysql的安装(主备)

groupaddmysql

useradd -g  mysql -s /sbin/nologin -M mysql


tar -zxvf mysql-5.0.67.tar.gz

cd mysql-5.0.67

./configure --prefix=/usr/local/mysql --with-charset=gbk--with-extra-charset=all --enable-hread-safe-client --enable-local-infile--with-low-memory

Make && make install


chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
cp support-files/my-medium.cnf /etc/my.cnf

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


/usr/local/mysql/bin/mysql_install_db-�Cbasedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql


/usr/local/mysql/bin/mysqld_safe --user=mysql&


添加到系统服务

chkconfig --addmysqld

chkconfig--levels 2345 mysqld on


添加/usr/local/mysql/bin到环境变量PATH

echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

source /etc/profile  


设置数据库密码

service mysqld start

mysqladmin password 123456


开启root远程访问权限

mysql �Cp123456

mysql> grant all on *.* to root@'%' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

mysql> quit  


2.1 主服务器上进行的操作
  启动mysql服务
      servicemysqld start

  通过命令行登录管理MySQL服务器

      mysql -uroot-p'new-password'授权给从数据库服务器192.168.3.38
      mysql> GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.3.38' identified by‘password’;

  查询主数据库状态
      Mysql>show master status;
      +------------------+----------+--------------+------------------+
       | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
      +------------------+----------+--------------+------------------+
      | mysql-bin.000005 | 261 | | |
       +------------------+----------+--------------+------------------+

  记录下 FILE Position 的值,在后面进行从服务器操作的时候需要用到

2.2 配置从服务器
  修改从服务器的配置文件/etc/my.cnf
  将 server-id =1修改为server-id = 10,并确保这个ID没有被别的MySQL服务所使用。

  启动mysql服务
      service mysqld start

  通过命令行登录管理MySQL服务器
      mysql -uroot -p'new-password'

  执行同步SQL语句
      mysql> change master to
      master_host=’192.168.3.37’,
      master_user=’rep1’,
      master_password=’password’,
      master_log_file=’mysql-bin.000005’,
      master_log_pos=261;

  正确执行后启动Slave同步进程
     mysql> start slave;

  主从同步检查
     mysql> show slave status\G
    ==============================================
    * *************** 1. row *******************

 Slave_IO_State:
 Master_Host: 192.168.3.37
 Master_User: rep1
 Master_Port: 3306
 Connect_Retry: 60
 Master_Log_File: mysql-bin.000005
 Read_Master_Log_Pos: 415
 Relay_Log_File: localhost-relay-bin.000008
 Relay_Log_Pos: 561
 Relay_Master_Log_File: mysql-bin.000005
 Slave_IO_Running: YES
 Slave_SQL_Running: YES
 Replicate_Do_DB:
 ……………
省略若干……………
 Master_Server_Id: 1
 1 row in set (0.01 sec)
 ==============================================

其中Slave_IO_Running Slave_SQL_Running的值都必须为YES,才表明状态正常

如果主服务器已经存在应用数据,则在进行主从复制时,需要做以下处理:
(1)
主数据库进行锁表操作,不让数据再进行写入动作
mysql> FLUSH TABLES WITH READ LOCK;

(2)查看主数据库状态
mysql> show master status;

(3)记录下FILE Position 的值。
将主服务器的数据文件(整个/opt/mysql/data目录)复制到从服务器,建议通过tar归档压缩后再传到从服务器解压。

(4)取消主数据库锁定
mysql> UNLOCK TABLES;

3、heartbeat的安装

(主备机一样,唯独ha.cf里面ucast那条信息)

两台机器都要安装双机软件libnet.tar.gzheartbeat-2.1.3.tar.gz

Groupaddhaclient

useradd -g haclienthacluster

tar -zxvf heartbeat-2.1.3.tar.gz

cd heartbeat-2.1.3

./ConfigureMe configure

make && make install


heartbeat配置

总共有三个文件需要配置:
ha.cf
监控配置文件
haresources
资源管理文件
authkeys
心跳线连接加密文件
1
、同步两台节点的时间

  1. rm -rf /etc/localtime

  2. \cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  3. yum install -y ntp

  4. ntpdate -d cn.pool.ntp.org

2、配置ha.cf

  1. vi /etc/ha.d/ha.cf

  1. debugfile /var/log/ha-debug                                 #打开错误日志报告

  2. keepalive 2                                                     #两秒检测一次心跳线连接

  3. deadtime 10                                                     #10 秒测试不到主服务器心跳线为有问题出现

  4. warntime 6                                                      #警告时间(最好在 2 10 之间)

  5. initdead 120                                                    #初始化启动时 120 秒无连接视为正常,或指定heartbeat

  6.                                                                #在启动时,需要等待120秒才去启动任何资源。


  7. udpport 694                                                     # udp 694 端口连接

  8. ucast eth0 192.168.3.38                                    #单播方式连接(主从都写对方的 ip 进行连接)

  9. node  master                                                   #声明主服(是主机名uname -n不是域名)

  10. node   slave                                                   #声明备服(是主机名uname -n不是域名)

  11. auto_failback on                                                #自动切换(主服恢复后可自动切换回来)

  12. ping_group group1 192.168.3.37 192.168.3.38 (ping对方和自己的,如果都ping不通则自己挂了,释放自己的资源).

  13. respawn hacluster /usr/lib/heartbeat/ipfail               #监控ipfail进程是否挂掉,如果挂掉就重启它

3、配置authkeys

vi /etc/ha.d/authkeys

  写入:

  1. auth 1

  2. 1 crc

存盘退出,然后

#chmod 600 authkeys

4、创建检测脚本(本处如果没有个监测脚本hearbeat 无法启动)

vi /etc/init.d/test(内容如下)

#!/bin/bash

echo "" $>/dev/null

chmod 777 /etc/init.d/test

#vi /etc/ha.d/haresources(配置资源文件)

各主机这部分应完全相同。

master 192.168.3.55 test

指定 master 调用预先写好的一个测试脚本,系统附加一个虚拟IP

192.168.3.55 eth0:0

这里如果master 宕机后slave 可以新分配IP

192.168.10.200

(以下配置结合DRBD

配置haresources

  1. vi /etc/ha.d/haresources    

写入:

  1. masterIPaddr::192.168.3.55/24/eth0     drbddisk::r0 Filesystem::/dev/drbd1::/data::ext3

node1:master主机名
IPaddr::192.168.79.135/24/eth0:
设置虚拟IP
drbddisk::r0:
管理资源r0
Filesystem::/dev/drbd1::/data::ext3:
执行mountunmout操作
node2
配置基本相同,不同的是ha.cf中的192.168.3.38改为192.168.3.37)

5serviceheartbeat start


你可能感兴趣的:(mysql,数据库,local,高可用集群)