Mysql+Keepalived实现HA---备份元数据

前言

CDH集群的一些组件的元数据信息都是放在了MySQL中,如果MySQL挂掉,那么整个集群都将无法正常运行,因此,MySQL的元数据备份还是很重要的

环境说明

1、系统版本:Centos7.0
2、mysql版本:5.6.35
3、安装用户:master(需配置无密码的sudo权限)
4、mysql master:192.168.240.167 mysql slave:192.168.240.168 虚拟IP:192.168.240.166
5、目标: 1)通过虚拟IP的3306端口对外提供mysql服务 2)通过keepalived自动切换mysql master和mysql slave的主从 状态

下载mysql的yum源

1、因为Centos7.0本身不带mysql的yum源,所以需要手动下载 wget http://repo.mysql.com/mysql-community-release-el7- 5.noarch.rpm
2、安装sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
3、验证执行完上步命令后,会在 /etc/yum.repos.d/ 目录下看到两个 mysql的源
在这里插入图片描述

安装mysql(master和slave两个节点都安装)

1、安装: yum -y install mysql-server
2、启动:service mysqld start
3、设置开机启动:chkconfig mysqld on
4、设置root密码等:/usr/bin/mysql_secure_installation或者mysqladmin -u root password 'root’
5、登录mysql:mysql -u root -proot
6、为root用户设置可以任意位置登录的权限:1. grant all privileges on *.* to 'root'@'%' identified by 'root'; ##第一个*代表所有库,第二个*代表所有表。第一个root代表root用 户,%代表可以在任何地方远程登录,最后一个root代表root用户登录 时,使用的密码必须为root 2.flush privileges;

配置mysql双主

1、修改master的/etc/my.cnf配置文件,注意以下内容是添加在 [mysqld]的子模块下 log_slave_updates
log-bin = mysql-bin
server-id = 1
slave-skip-errors = all
auto_increment_increment = 2
auto_increment_offset = 1
binlog_format=mixed
2、修改slave的/etc/my.cnf配置文件 log_slave_updates
log-bin = mysql-bin
server-id = 2
slave-skip-errors = all
auto_increment_increment = 2
auto_increment_offset = 2
binlog_format=mixed
3、参数说明
1.slave-skip-errors 跳过错误,可以通过=指定特定的错误, 如:slave-skip-errors=1062(可选)
2.log-bin = mysql-bin 开启二进制日志,必须开启,主从同步 主要是通过二进制日志(必须)。
3.server-id 设置mysql的id号,主从不能相同(必须)。
4.auto_increment_increment 自增增长值,如:id 设置为 auto_increment,则每次插入数据自增值为2,以1,3,5…或2,4,6…方 式增长。(可选)
5.auto_increment_offset 自增初始化便宜值,如果前一个id 为2 则 下一个为3 然后在这个基础上按auto_increment_increment 设置的值 进行自增。(可选)
6.log_slave_updates 同步数据时也写入日志,二进制记录id 号,互为主从时时不会引起循环。建议开启,方便实施日志恢复。(可选)
4、重启两台mysql数据库:sudo service mysqld restart
5、分别在master、slave上通过mysql命令行添加同步帐号:grant replication slave on . to jrq@’%’ identified by ‘root’;,其中 jrq为将要建立的同步帐户名,root为jrq用户对应的密码
6、验证:上条命讼执行成功后,会在mysql的mysql库、user表中看到我们添加成功的账号和密码
7、设置主从
1.在master节点操作:查看master二进制日志状态-- mysql>show master status;
在这里插入图片描述
2.在slave节点操作
mysql>change master to master_host='192.168.240.167',master_user='jrq', master_password='root',master_log_file='mysql- bin.000010',master_log_pos=120;
3.参数说明:
master_host:指向master节点IP
master_user:待同步数据的用户,即上面我们创建过的 jrq用户
master_password:同步数据用户对应的密码
master_log_file:在master节点执行show master status 命令时看到的File内容
master_log_pos:在master节点执行show master status 命令时看到的Position(看上图)
4.start slave;
5.show slave status\G;
6.当看到如下两项均为Yes时,代表主从配置完成
在这里插入图片描述
7.测试:
在master:create database jrq;
在slave:show databases;
当在slave中也看到jrq库时,代表单向主从配置成功
8.配置双主
1.在slave上执行,查看slave节点二进制日志状态show master status;
在这里插入图片描述
2.在master节点执行:
change master to master_host=‘192.168.240.168’,master_user=‘jrq’,master_password=‘root’,master_log_file=‘mysql- bin.000008’,master_log_pos=120;
3.start slave;
4.show slave status\G;
5.当看到如下两项均为Yes时,代表主从配置完成
在这里插入图片描述
6.验证
停掉master的mysql:service mysqld stop
在slave的jrq库中建立jrq表 create table jrq(id int(5) not null auto_increment primary key, name char(10) not null, qqgroup int(10) );
在jrq表中插入数据 insert into jrq(name,qqgroup) values(‘a’,‘123456’);
开启master的mysql: service mysqld start
在master查看jrq表中是否有刚才新插入的数据,如果有,则代表双主配置成功

安装keepalived(两个节点都要操作)

1.sudo yum install -y keepalived
2.设置开机启动:sudo chkconfig keepalived on
注意:为确保keepalived在mysql之后启动,需要添加如下内 容: sudo vi /usr/lib/systemd/system/keepalived.service
在这里插入图片描述
3.修改配置文件
1.修改master节点的keepalived配置:sudo vi /etc/keepalived/keepalived.conf
先将原始内容全部清空
插入如下内容:粗的部分需要根据实际情况修改

! Configuration File for keepalived 
global_defs 
	{ notification_email 
		{ guolong@guanghe.tv }
		notification_email_from guangheauto@126.com smtp_server smtp.126.com smtp_connect_timeout 30 router_id MySQL-ha 
	}
vrrp_instance VI_1 { 
	state master 
	interface **em3** 
	virtual_router_id 51 
	priority 100 
	advert_int 1 
	nopreempt 
	authentication { 
	auth_type PASS 
	auth_pass 1111 
	} 
	virtual_ipaddress { 
		**192.168.240.168** 
		} 
	}
	virtual_server **192.168.240.168 3306** { 
		delay_loop 6 
		lb_algo wrr 
		lb_kind DR 
		persistence_timeout 30 
		protocol TCP 
	real_server **192.168.240.166 3306** { 
		weight 3 notify_down /var/lib/mysql/killkeepalived.sh 
		TCP_CHECK { 
			connect_timeout 10
			nb_get_retry 5 
			delay_before_retry 5 
			connect_port **3306** } } }

2.修改slave节点的keepalived配置:sudo vi /etc/keepalived/keepalived.conf
先将原始内容全部清空
插入如下内容:粗的部分需要根据实际情况修改

! Configuration File for keepalived 
global_defs 
	{ notification_email 
		{ guolong@guanghe.tv }
		notification_email_from guangheauto@126.com smtp_server smtp.126.com smtp_connect_timeout 30 router_id MySQL-ha 
	}
vrrp_instance VI_1 { 
	state master 
	interface **em3** 
	virtual_router_id 51 
	priority 100 
	advert_int 1 
	nopreempt 
	authentication { 
	auth_type PASS 
	auth_pass 1111 
	} 
	virtual_ipaddress { 
		**192.168.240.168** 
		} 
	}
	virtual_server **192.168.240.168** 3306 { 
		delay_loop 6 
		lb_algo wrr 
		lb_kind DR 
		persistence_timeout 30 
		protocol TCP 
	real_server **192.168.240.167** 3306 { 
		weight 3 notify_down /var/lib/mysql/killkeepalived.sh 
		TCP_CHECK { 
			connect_timeout 10
			nb_get_retry 5 
			delay_before_retry 5 
			connect_port 3306 } } }

4.master和slave均编写脚本本件:sudo vi /var/lib/mysql/killkeepalived.sh
1.内容如下

#!/bin/sh 
pkill keepalived

赋与执行权限:sudo chmod 777 /var/lib/mysql/killkeepalived.sh
5.验证
1.在master和slave上分别执行sudo tail -50f /var/log/messages,监控keepalived状态切换
2.新开两个控制台,先后开启master和slave的keepalived服务:sudo service keepalived start(mysql服务已经开启的前提下,否则要先开启mysql服务)
3.开启keepalived后,可以在master和slave的监控日志控制台 看到如下输入:
1)master控制台输出:master的keepalived为MASTER STATE状态
2)slave控制台输出:slave的keepalived为BACKUP STATE 状态
4.此时可使用虚拟IP来访问Mysql:mysql -h 192.168.240.168 -u root -proot,如访问成功,则代表虚拟IP配置正确
5.验证自动切换
1)停止master的mysql服务:sudo service mysqld stop, 可以发现slave的keepalived状态由之前的BACKUP变为MASTER,此时
重新访问mysql -h 192.168.240.168 -u root -proot,如访问成功,则代表配 置正确
2)再开启master的mysql和keepalived服务,注意一点要先 开启mysql,再开启keepalived,否则keepalived会认为mysql进程已经 死掉而自杀 sudo service mysqld start sudo service keepalived start 此时可以看到master的keepalived进入了BACKUP状态
3)停止slave上的mysql服务:sudo service mysqld stop, 可以发现master的keepalived状态由之前的BACKUP变为MASTER,此时 重新访问mysql -h 192.168.240.168 -u root -proot,如访问成功,则代表配 置正确

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值