VC中文网-VC-MFC编程论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 483|回复: 3
打印 上一主题 下一主题

基于keepalived搭建mysql双主高可用

[复制链接]

6

主题

57

帖子

12

金币

连长

Rank: 7Rank: 7Rank: 7

积分
183

小资土豪新兵社区QQ达人

跳转到指定楼层
楼主
发表于 2018-12-3 09:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目录

    概述 环境准备 keepalived搭建 mysql搭建 mysql双主搭建 mysql双主高可用搭建

概述

传统(不借助中间件)的数据库主从搭建,如果主节点挂失落了,从节点只能读取无法写入,只能把人肉去恢复故障,既不想引用中间件也不想人肉恢复故障,可以折中选择双主方案,本文将介绍通过keepalived搭建mysql双主方案。

本例中vip为:172.16.0.169, 两台mysql实例办事器ip别离为:172.16.0.1和172.16.0.2

转帖请注明来源: https://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了

两台机器记得交叉验证,以免有问题, 如果不克不及正常漂移,请认真检查操作步调,是否和本文一致
<div class="pgc-img">



更多内容回复查看:
游客,如果您要查看本帖隐藏内容请回复
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

8

主题

45

帖子

17

金币

连长

Rank: 7Rank: 7Rank: 7

积分
132
沙发
发表于 2018-12-3 09:26:32 | 只看该作者
转发了
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

17

主题

58

帖子

36

金币

连长

Rank: 7Rank: 7Rank: 7

积分
162

新兵

板凳
发表于 2018-12-3 09:26:58 | 只看该作者
转发了
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VC中文网 - 豫ICP备14012807号|小黑屋|联系客服|金币冲值|VC中文网

GMT+8, 2019-11-20 07:07 , Processed in 0.304688 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表
pk10投注技巧分享