登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 342|回复: 0

基于keepalived搭建mysql双主高可用

[复制链接]

168

主题

168

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2018-12-23 04:21:11 | 显示全部楼层 |阅读模式 来自 江苏徐州
目次


  • 概述
  • 情况预备
  • keepalived搭建
  • mysql搭建
  • mysql双主搭建
  • mysql双主高可用搭建
概述

传统(不借助中心件)的数据库主从搭建,假如主节点挂掉了,从节点只能读取无法写入,只能把人肉去规复故障,既不想引用中心件也不想人肉规复故障,可以折中选择双主方案,本文将先容通过keepalived搭建mysql双主方案。
本例中vip为:172.16.0.169, 两台mysql实例服务器ip分别为:172.16.0.1和172.16.0.2
转帖请注明泉源: http://my.oschina.net/u/2342969/blog/2963153
情况预备


  • 最小化安装centos7
  • mysql-5.7.23
  • keepalived 1.4.5
  • 假造ip(下文简称vip):172.16.0.169
keepalived搭建

点击检察keepalived搭建教程,博主亲身操纵过来的,如有疑问接待随时私信大概批评
mysql单机搭建

点击检察mysql搭建教程,博主亲身操纵过来的,如有疑问接待随时私信大概批评
双主搭建

本方案仅限两台均是全新安装的mysql,假如是旧mysql实例和新mysql实例改为双主,在新mysql实例中记得导入旧mysql实例的数据,别的大概同步复制还会报非常,自行办理一下。
情况安装查抄

  • 两台mysql实例均可以访问
  • keepalived可以正常漂移
数据库设置更改
#vim /etc/my.cnf
进入mysql设置修改一下设置:

  • server-id 两台mysql要不一样,一样平常是ip末了一位。留意定名规范不要加下划线/中横线/点等特别符号
  • #skip_slave_start = 1 解释掉这个设置
创建复制账号
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'172.16.0.%' identified by 'repl_password';
mysql> flush privileges;
mysql> select @@server_id;
两台mysql分别实行以上语句,语句剖析:

  • 创建mysql复制账号
  • repl_user: 复制权限账号的用户名,可自行更改
  • 172.16.0.%: 此处利用的通配符,也可以写固定ip,可同步的mysql实例ip
  • repl_password: 复制权限账号的暗码,自行更改
  • select @@server_id; 查询出的效果肯定要不一样
设置互为主备
mysql> CHANGE MASTER TO MASTER_HOST="对方ip", MASTER_USER="repl_user", MASTER_PASSWORD="repl_password", MASTER_PORT=3316, MASTER_AUTO_POSITION = 1;
mysql> start slave;
mysql> show slave status\G;
两台mysql分别实行以上sql,语句剖析:

  • 相互设置对方为主节点,本身为备节点
  • MASTER_HOST:对方ip
  • MASTER_USER:对方复制权限账号用户名,即上一步设置的用户名
  • MASTER_PASSWORD:对方复制权限账号暗码,即上一步设置的暗码
  • MASTER_PORT:对方mysql实例的端口, 假如开了防火墙肯定要记得打开端口
  • show slave status\G; 留意检察Slave_IO_Running 和 Slave_SQL_Running 状态假如有一个为no 就代表设置失败
查抄点:

  • Master_Host: 是否是对方ip
  • Master_User: 是否是对方的复制账号的用户名
  • Master_Port: 是否是对方mysql实例的端标语
  • Last_SQL_Errno:近来sql错误条数,正常环境为0
  • Last_SQL_Error:最新sql错误具体信息,正常环境为空
假如有非常,根据非常信息办理掉题目后,实行一下下令
mysql> stop slave;
mysql> reset master;
两台mysql分别实行以上下令,再实行一下上一步的设置。
验证

  • 在恣意一台mysql创建数据库,另一台也会同步到
  • 在恣意一台mysql创建表,另一台也会同步到
  • 在恣意一台mysql表中插入数据,另一台也会同步到
双主高可用

修改keepalived设置
# vim /etc/keepalived/keepalived.conf
设置内容如下:
! Configuration File for keepalived
global_defs {
router_id MYSQL-1 ## 名称自界说,两台呆板必要不一样
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 60
priority 100 # 两台呆板必要一个大一个小,数值大的先启动,哪台先启动vip会先在哪台呆板
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
172.16.0.169 # 填写本身的vip
}
}
virtual_server 172.16.0.169 3316 { # 填写本身的vip 和mysql端口
delay_loop 2
#lb_algo rr
#lb_kind DR
persistence_timeout 60
protocol TCP
real_server 172.16.0.1 3316 { # 填写mysql服务器真实ip 和mysql端口
weight 3
notify_down /etc/keepalived/checkmysql.sh # 查抄mysql是否存活脚本,根据脚本位置自行填写
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 3316 # mysql的端标语
}
}
}
留意: 上面设置解释的部门,两台呆板根据现实环境修改,设置文件中的解释肯定要去掉,以免出现希奇题目
编写mysql监测脚本
#vim /etc/keepalived/checkmysql.sh
脚本内容如下:
#!/bin/sh
datetime=`date +20\%y\%m\%d_\%H\%M\%S`
isok=$(/usr/local/mysql/bin/mysql -h localhost -u数据库账号 -p数据库暗码 -P数据库端口 -S /tmp/mysql3316.sock 2>/dev/null -e 'select 1' |sed -n '2p')
function error_query(){
systemctl stop keepalived
echo $datetime >> /etc/keepalived/keepalived.log
echo "mysql down, keepalived 切换" >> /etc/keepalived/keepalived.log
}
echo "isok: $isok" >> /etc/keepalived/keepalived.log
if [ "$isok" != "1" ]
then
error_query
fi
留意:根据现实环境调解脚本中的中文部门
给脚本赋权限:
# chmod +x /etc/keepalived/*.sh
验证
肯定要先阅读博文[centos7 下源码安装keepalived踩坑记],根据这篇博文中"操纵keepalived"章节操纵keepalived

  • 两台服务器分别启动keepalived, 留意先启动keepalived设置中priority 数值大的
  • 停掉vip地点呆板的mysql实例,检察别的一台呆板ip是否有vip了
两台呆板记得交织验证,以免有题目, 假如不能正常漂移,请认真查抄操纵步调,是否和本文同等
YI6J0s9M9M7kM4mi.jpg




上一篇:centos7安装elasticsearch5.3过程超具体
下一篇:centos7安装redis访问全过程详解
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-20 12:14 , Processed in 0.053194 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表