路由器snmp配置_基于keepalived配置数据库主从实现高可用
基于keepalived配置数据库主从实现高可用
使用keepalived来监听端口,实现数据库的高可用。实现效果,其中一台数据库服务器突然出故障或关机时,应该不影响应用正常运行,等待服务器启动之后,数据能够自动同步,保持数据一致性。
主从配置
架构图及原理
- 主从状态下,必须保证业务数据实际写入Master数据库,Slave数据库只承担读的作用;
- Master 数据库只要发生变化,立马记录到Binary log日志文件中;
- Slave数据库启动一个I/O thread连接Master数据库,请求Master变化的二进制日志;
- Slave I/O获取到的二进制日志,保存到自己的Relay log 日志文件中;
- Slave 有一个 SQL thread定时检查Realy log是否变化,变化那么就更新数据。
数据库资源
数据库数据库IP节点Gbase1192.168.0.52MasterGbase2192.168.0.53Slave
配置步骤
主master配置
- 修改配置文件,添加以下内容(gs.cnf)
server-id=1
log-bin=gbase-log #开启binlog日志
binlog_fromat=row
重启数据库
- 重启数据库并登陆数据库 #创建同步用的账号
set SQL_LOG_BIN=0;
CREATE USER 'save'@'%' IDENTIFIED WITH gbase_native_password BY '123456';
#添加权限
grant replication slave on *.* to 'save'@'%' ;
#刷新权限(使立即生效)
flush privileges;
set SQL_LOG_BIN=1;
3、获取binlog文件名和POS
SHOW MASTER STATUS;
配置从slave库
- 修改配置文件,添加以下内容(gs.cnf)
server-id=2
log-bin=gbase-log #开启binlog日志
binlog_fromat=row # 设置binlog日志格式
重启数据库
- 登陆数据库,根据主master库的binlog文件名和POS进行同步配置
#先停止同步
stop slave;
#同步信息配置
CHANGE MASTER TO
MASTER_HOST='192.168.1.101',
MASTER_USER='save',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='bin-log.000003',
MASTER_LOG_POS=817;
#启动slave同步
start slave;
#查看同步状态
show slave statusG;
基于keepalived实现高可用
- 下载安装包
- 解压到指定目录 tar -zxvf keepalived-1.2.2.tar.gz
- 执行安装检测
./configure --prefix=/usr/local/keepalived
错误代码
configure: error:OpenSSL is not properly installed on your system. !!!Can not include OpenSSL headers files.
解决方法
正常如果能够连网络执行一下命令即可,但是由于是内网,通过yum直接安装缺少的包是安装不了的
yum install -y openssl openssl-devel
所以这种环境下只能通过下载离线的相关包。下载地址如下,这个网站rpm包比较齐全,可以收藏一下linux相关包下载
分别下载并安装:
keepalived-1.3.5-1.ns7_4.mips64el.rpm
net-snmp-5.7.2-28.ns7_4.2.mips64el.rpm
net-snmp-agent-libs-5.7.2-28.ns7_4.2.mips64el.rpm
net-snmp-libs-5.7.2-28.ns7_4.2.mips64el.rpm
openssl-1.0.2k-12.ns7_4.2.mips64el.rpm
openssl-devel-1.0.2k-12.ns7_4.2.mips64el.rpm
openssl-libs-1.0.2k-12.ns7_4.2.mips64el.rpmrpm -ivh example.rpm
配置keepalived
实现原理,主从服务器都设置同一个虚拟ip,如果两台服务器都开启了了数据库服务,则会根据keepalived的priority设置的优先级跳转到优先级高的服务器,keepalived服务通过监听数据库端口,如果监听发现该端口已经关闭,则需要关闭keepalived服务,此时ip自动漂移到备用服务器。
keepalived 相关操作
systemctl start keepalived #启动服务
systemctl stop keepalived #停止服务
systemctl status keepalived # 查看keepalived状态
systemctl restart keepalived # 重启服务
修改默认keepalived.conf
vim /etc/keepalived/keepalived.confvrrp_script check_port {#创建一个vrrp_script脚本,检查配置script "/etc/keepalived/check_port.sh 5258" #配置监听的端口interval 3 #检查脚本的频率,单位(秒)
}
vrrp_instance VI_1 {state MASTER #配置为BACKUP节点,一般有三个配置可选MASTER(主机)、BACKUP(备机)interface ens33 #ifconfig确定virtual_router_id 51 #路由器标识,MASTER和BACKUP必须是一致的priority 100 #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。这样MASTER故障恢复后,就可以将VIP资源再次抢回来advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.11.25 # 虚拟ip}track_script {check_port #执行指定vrrp_script脚本}
}
check_port.sh脚本
#!/bin/bash
#keepalived 监控端口脚本
CHK_PORT=$1
echo $CHK_PORT
if [ "$CHK_PORT" != "" ];thenPORT_PROCESS=`lsof -i:$CHK_PORT|grep LISTEN|wc -l`if [ $PORT_PROCESS -eq 0 ];thenecho "Port $CHK_PORT Is Not Used,End."sleep 2PORT_PROCESS=`lsof -i:$CHK_PORT|grep LISTEN|wc -l`if [ $PORT_PROCESS -eq 0 ];then#停止keepalived服务systemctl stop keepalived.servicefifi
elseecho "Check Port Cant Be Empty!"
fi
验证结果
- 首先启动两台服务器的数据库、keepalived服务。
- 连接指定虚拟 ip 访问数据库,此时应该先跳转到优先级高的 master 服务器。
- 此时关闭优先级高的数据库服务器,通过虚拟ip访问数据库,此时应该跳转到 Slave 服务器。
- 再次开启主数据库服务器,通过虚拟 ip 访问数据库,此时再次跳转到 master 服务器。
配置过程中遇到的问题及解决方法
shell脚本一直不行
执行shell脚本一直运行不了,提示结束符错误,后面将里面内容只保留了几行,还是有错,
解决2
最后解决办法,将脚本内容copy,然后新建一个脚本。才能够正常执行。 原因:由于开始的脚本是从windows机器拷贝进去的,可能由于中间编码存在一些问题,所以一直报错。
keepalived监听脚本一直执行不了
解决方法
- 需要确定该脚本能够正常执行,所以需要手动执行一下看脚本是否有错。
- 查看系统tail -f /var/log/messages 监控主机日志。 /etc/keepalived/check_port.sh exited due to signal 15 3.vrrp_script{}中的interval时间需大于脚本中的sleep时间,开始两个时间设置成一样大小了。
数据库突然主从同步不了
show slave status /G; 查看slave状态
Slave_IO_Running: Yes
Slave_SQL_Running: No
而且出现了1062错误,还提示
Last_SQL_Error: Error 'Duplicate entry '1020202' for key 'PRIMARY'' on query. Default database: 'bug'. Query: 'insert into testtable (id,mid,pid) values (1020202,1001,0)'
很显然,由于主库重启导致 从库数据不同步而且主键冲突。查看error 日志发现error日志文件变得好大,比以前大了将近好几倍, tail -f gbase_error.log 最开始查看到的是这条信息。 此时由于我在测试时两边数据不一致导致。后面用新建的一个库来测试正常。 如查出现错误,会导造主从复制破坏,此时将不能同步数据,需要手工处理,把两边数据保持一致后,再重新设置同步节点。并针对于一些错误代码,可以选中跳过,否则主从同步容易停止。 修改gs.cnf slave-skip-errors = 1062 (忽略所有的1062错误) 并需要对从库进行数据恢复,保持主从数据库一致性。
总结
这一次设置的主从数据库是用的国产数据库gbase的,但是他是基于mysql的,所以主从的原来和mysql是一模一样的。我们只要掌握了mysql的基础,就能够用同样的方式配置出来gbase的主从。操作数据库时一定要注意备份。慎用rm -rf /xxx 命令。不然真的要删库跑路了。公众号:科比可比克 希望大家能够关注一下。
路由器snmp配置_基于keepalived配置数据库主从实现高可用相关推荐
- Redis主从配置及通过Keepalived实现Redis自动切换高可用
Redis主从配置及通过Keepalived实现Redis自动切换高可用 [日期:2014-07-23] 来源:Linux社区 作者:fuquanjun [字体:大 中 小] 一:环境介绍: Mas ...
- 基于keepalived的mysql_【实用】基于keepalived的mysql双主高可用系统
原标题:[实用]基于keepalived的mysql双主高可用系统 mysql单节点存储时,系统出现故障时服务不可用.不能及时恢复的问题,因此实际使用时,一般都会使用mysql双机方案,使用keepa ...
- ef mysql 读写分离_基于 EntityFramework 的数据库主从读写分离服务插件
基于 EntityFramework 的数据库主从读写分离服务插件 1. 版本信息和源码 1.1版本信息 v1.01 beta(2015-04-07),基于 EF 6.1 开发,支持 EF 6.1 之 ...
- 基于keepalived实现多种模式的高可用集群网站架构
一. 实现主从服务器高可用技术. 大概网络拓扑图: 前提准备条件: 准备四台机器,一台为keepalived的master,一台为keepalived的backup,一台为rs1,一台为rs2,同时都 ...
- 基于keepalived+nginx部署强健的高可用7层负载均衡方案20151214
高可用是个老生常谈的问题了,开源的高可用软件已经做的相当成熟了,之前也在debian下做过lvs+heartbeat的4层LB,一直很稳定(可惜流量不大啊),现在由于业务的需要,做一个基于keepal ...
- sqlserver date类型和字符串比较_基于SQL Server数据库搭建主从复制实现读写分离实战演练...
一.课程介绍 读写分离(主从同步)从字面意思就可以理解,就是把对数据库的读操作和写操作分离开.读写分离在网站发展初期可以一定程度上缓解读写并发时产生锁的问题,将读写压力分担到多台服务器上.读写分离的基 ...
- 用haproxy结合keepalived实现基于LNMP的负载均衡和高可用
今天我们讲haproxy结合keepalived实现LNMP的负载均衡和高可用,现在的公司大部分都基于haproxy实现负载均衡.下面以一个事例去给大家详细讲解如何去实现: 一.用haproxy结合k ...
- 基于 EntityFramework 的数据库主从读写分离架构(1) - 原理概述和基本功能实现...
回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目录: src\ NDF.Data.EntityFramework\Maste ...
- mysql架构 视频_企业常见MySQL架构应用实战(高可用集群系统+调优经验)视频课程...
第一章 MySQL企业常用架构应用实战(主从复制+性能调优) 1.企业级MySQL发行版Percona Server.MariaDB选型 2.常用MYSQL性能调优策略之系统级别调优(1) 3.常用M ...
最新文章
- electron 开发环境搭建
- python画图哆啦a梦-Python小白绘图 哆唻A梦 turtle真的很强大!
- find到带空格文件名用xargs处理的技巧
- 【下拉刷新】WEUI下拉刷新
- 肖战被抵制?Python爬虫揭秘关于肖战粉丝的人群画像
- 网络通信-2(TCP通信、ServerSocket、Socket)
- 阿里云推出免费套餐 30余款云产品半年免费
- [19/03/21-星期四] 异常(Exception) (一)
- 黑客SQL服务器入侵实战演习
- 看懂 ,学会 .NET 事件的正确姿势-简单版
- 设计灵感|优秀案例教你如何像杂志一样排版?
- 白话设计模式--结构型模式之 适配器模式(Adapter)
- python教程七牛云_通过Python来使用七牛云存储的方法详解
- Windows 未能启动。原因可能是最近更改了硬件或软件。解决此问题的步骤
- 泛化误差,偏差方差分解
- 如何用友远程到服务器,怎么安装用友T3远程通
- 牛血清白蛋白刺槐豆胶壳聚糖缓释纳米微球/多西紫杉醇的纳米微球DTX-DHA-BSA-NPs
- 聚类算法及其模型评估指标【Tsai Tsai】
- java 线程resume_为什么java线程不推荐调用stop,suspend,resume方法
- 22.JS+jQuery