Linux下搭建高可用MySQL

Linux下搭建高可用MySQL

说明:首先准备两台centos 7系统的虚拟机,MySQL使用5.6版本。

安装MySQL

分别在两台虚拟机中安装MySQL
在Linux中解压mysql-libs.zip包,包内包含三个文件

-rw-r--r--. 1 root root 18509960 3月  26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
-rw-r--r--. 1 root root  3575135 12月  1 2013 mysql-connector-java-5.1.27.tar.gz
-rw-r--r--. 1 root root 55782196 3月  26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm
1.检查有没有MySQL的服务
[root@hadoop101 mysql-libs]# rpm -qa | grep -i mysql
2.1卸载MySQL
rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
2.2拆卸mariadb(centos7默认安装)
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
3.安装MySQL
	0)安装autoconf
		yum -y install autoconf
	1)安装MySQL服务端
		[root@hadoop101 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
	2)安装MySQL客户端	
		[root@hadoop101 mysql-libs]# rpm -vih MySQL-client-5.6.24-1.el6.x86_64.rpm
	3)查看产生的随机密码
		[root@hadoop101 mysql-libs]# cat /root/.mysql_secret
		5DWcGJQj_fbBWGby
	4)启动MySQL服务
		[root@hadoop101 mysql-libs]# service mysql start
	5)使用随机密码登录MySQL
		[root@hadoop101 mysql-libs]# mysql -uroot -p5DWcGJQj_fbBWGby
	6)修改密码
		mysql> set password=password("****");
	7)进入MySQL,配置无主机登录
		进入mysql库
		mysql> update user set Host='%' where Host='localhost';
	8)刷新用户
		flush privileges;
配置两台MySQL互为主从

两台虚拟机都要进行如下配置,注意server_id不能相同

[root@hadoop101 mysql-libs]# rm -rf /etc/my.cnf
[root@hadoop101 mysql-libs]# cp /usr/share/mysql/my-default.cnf /etc/my.cnf
[root@hadoop101 mysql-libs]# vi /etc/my.cnf
添加配置:
server_id = 101
log-bin = mysql-bin
binlog_format = mixed
relay_log = mysql-relay
log_bin_trust_function_creators=1
将my.conf配置文件分发至hadoop102机器,并修改server_id = 102
  
两台机器配置好后重启服务 service mysql restart
  
在主机上使用root用户登录MySQL,授权从机可以使用哪个用户登录,注意授权是双向的。
mysql> GRANT replication slave ON *.* To 'slave'@'%' IDENTIFIED BY 'liuhao';

以hadoop101为主机,hadoop102为从机

查看主机binlog文件的最新位置并记下
mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      311 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

在从机hadoop012上备份主机的binlog文件

mysql> change master to master_user='slave',master_password='****',master_host='192.168.1.101',master_log_file='mysql-bin.000001',master_log_pos=311;
在从机上开启同步线程
mysql> start slave;
查看同步线程的状态
show slave status \G;

下面以hadoop102为主机,hadoop101为从机重复上面步骤

安装keepalived

高可用的MySQL需要借助keepalived实现

1.安装 openssl、openssl-devel、gcc glibc
yum install -y openssl
yum install -y openssl-devel
yum install -y gcc glibc

2.http://www.keepalived.org/software/keepalived-1.2.22.tar.gz通过网址
下载keepalive压缩包并放入两台机器

3.解压至目标目录/opt/module

4.进入解压目录
[root@hadoop101 keepalived-1.2.13]# ./configure --prefix=/root/keepalived-1.2.13

5.编译并安装
[root@hadoop101 keepalived-1.2.13]# make && make install
安装完成后系统会在/root/keepalived-1.2.13目录下生成 bin  etc  sbin  share 这 4 个目录

6.在系统的etc下创建keepalived文件夹
[root@hadoop101 keepalived-1.2.13]# mkdir -p /etc/keepalived/
启动时默认去这个路径加载配置文件

7.复制配置文件到刚才新创建的文件夹下
[root@hadoop101 keepalived-1.2.13]# cp /root/keepalived-1.2.13/etc/keepalived/keepalived.conf /etc/keepalived/

8.keepalived启动脚本变量引用文件,默认文件路径是/etc/sysconfig/,也可以不做软链接,直接修改启动脚本中文件路径即可(安装目录下)
[root@hadoop101 keepalived-1.2.13]# cp /root/keepalived-1.2.13/etc/sysconfig/keepalived /etc/sysconfig/keepalived

9.将keepalived主程序加入到环境变量(安装目录下)
[root@hadoop101 keepalived-1.2.13]# cp /root/keepalived-1.2.13/sbin/keepalived /usr/sbin/keepalived

10.# keepalived启动脚本(源码目录下),放到/etc/init.d/目录下就可以使用service命令便捷调用
[root@hadoop101 keepalived-1.2.13]# cp keepalived/etc/init.d/keepalived.init /etc/init.d/keepalived

修改配置文件

[root@hadoop101 keepalived-1.2.13]# vi /etc/keepalived/keepalived.conf

全部替换为以下配置:
! Configuration File for keepalived
global_defs {
    router_id MySQL-ha
}
vrrp_instance VI_1 {
    state master #初始状态
    interface ens33 #网卡
    virtual_router_id 51 #虚拟路由id
    priority 100 #优先级
    advert_int 1 #Keepalived心跳间隔
    nopreempt #只在高优先级配置,原master恢复之后不重新上位
    authentication {
        auth_type PASS #认证相关
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100 #虚拟ip
    }
} 

#声明虚拟服务器
virtual_server 192.168.1.100 3306 {
    delay_loop 6
    persistence_timeout 30
    protocol TCP
    #声明真实服务器
    real_server 192.168.1.101 3306 {
        notify_down /var/lib/mysql/killkeepalived.sh #真实服务故障后调用脚本
        TCP_CHECK {
            connect_timeout 3 #超时时间
            nb_get_retry 1 #重试次数
            delay_before_retry 1 #重试时间间隔
        }
    }
}

编辑 /var/lib/mysql/killkeepalived.sh 脚本

[root@hadoop101 keepalived-1.2.13]# vi /var/lib/mysql/killkeepalived.sh

编写脚本:
#!/bin/bash
#结束当前机器的keepalive
service keepalived stop

给脚本赋予权限

chmod 777 /var/lib/mysql/killkeepalived.sh

配置keepalive开机自启动

加为系统服务:chkconfig --add keepalived
开机启动:chkconfig keepalived on
查看开机启动的服务:chkconfig --list
启动、关闭、重启service keepalived start|stop|restart

修改mysql和keepalive开机自启动脚本,保证mysql在keepalive之前启动

开机自启动脚本目录/etc/init.d
主要修改开机顺序,保证mysql在keepalive之前启动
chkconfig: 2345(启动级别 -代表全级别) 64(开机启动顺序,号小先启动) 36(关机顺序)

在另一台机器进行同样配置
全部配置完成后需要使用上面设置的虚拟IP连接MySQL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值