keepalived + mysql主主复制实现高可用

本文介绍了如何通过keepalived和mysql主从复制在双机环境中实现高可用性。详细步骤包括环境部署、主从数据库配置、权限管理、故障切换以及常见问题的解决。在主服务器出现问题时,系统能自动切换到备用服务器,保持服务连续性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

双机热备方案
keepalived + mysql主从复制,实现主备
1.1部署方式
两台服务器部署相同的运行环境及服务,其中运行环境包括 java运行环境,redis, mysql, keepalived, java后台服务
1.2实现效果
主服务器后台进程停止或主服务器宕机,后台服务自动切至从服务器,如图
健康检测图解
在主服务器后台服务运行正常的初始状态
健康检测图解

虚拟ip漂移至从服务器
在这里插入图片描述

主从复制图解
MySQL客户端将数据写入master数据库。
master数据库会将变更的记录数据写入二进制日志binlog中。
slave数据库会订阅master数据库的binlog日志,通过一个I/O线程从binlog的指定位置拉取日志进行主从同步,此刻master数据库会一个Binlog Dump线程来读取binlog日志与slave I/O线程进行数据同步。
slave I/O 线程读取到日志后会先写入relay log重放日志中。
slave数据库会通过一个SQL线程读取relay log进行日志重放,实现了主从数据库之间的同步。在这里插入图片描述

1.3缺点
(1)为保证两台服务器的静态资源同步,需要申请静态资源服务器,相关接口业
务代码及库表都需要改动,否则主服务器宕机,备服务器启动时,客户端无法呈现静态资源
(2)为保证两台服务器的数据同步,需要配置主从数据库,且存在数据不同步的
风险,开发成本较高
主从数据库配置
2.1查看账户权限
复制账户需要有 replication slave与replication client权限
查看用户权限

SELECT * FROM mysql.user WHERE user='csdataapp';

有权限:

Repl_slave_priv: Y;
Repl_client_priv: Y;

无权限:

Repl_slave_priv: N;
Repl_client_priv: N;

2.2赋权
(1)授权命令

grant select, Replication Slave, Replication Client on *.* to username@"%" identified by 'password' ;

(2)刷新权限

FLUSH PRIVILEGES;

2.3注意事项
两个服务器mysql都需要开启二进制日志功能
开启主从复制前,一定要保证主从数据库的一致性(库表结构与数据),在进行如下的配置,配置主从复制时禁止对数据库进行任何增删改查的操作,为减少二进制日志传输过程中的错误及数据重写过程中的错误,从数据库设置为只读。
2.4数据初始化
(1)备份
主库mysql执行备份命令:

mysql -uroot -p123456 csdata_app >  20200119.sql

(2)初始化
从库先执行表结构及视图sql;
从库mysql执行还原命令:

mysql -uroot -p123456 csdata_app --one-database <  20200119.sql

2.5主数据库配置
(1)新增配置

打开 vim /etc/my.cnf

新增以下配置
[mysqld]

server-id=110 #设置为ip后六位
log_bin=master-bin

(2)重启mysql

service mysqld restart;

(3)查看二进制日志
进入mysql命令行

mysql -uxxx -pxxx

查看二进制日志是否正常开启,如图所示为正常开启

show variables like 'log_%';
  

在这里插入图片描述

(4)查看二进制文件是否正常生成,如下为正常生成

show master logs; 

在这里插入图片描述

2.6 从数据库配置
(1)新增配置

命令行打开 vim /etc/my.cnf

新增配置:
开启二进制日志与中继日志,允许备库将重放的事件也记录到自身的二进制日志中
将数据库设置为只读

[mysqld]
log_bin = slave-bin
server-id = 2
#relay_log = /opt/app/relay/mysql-relay-bin
read_only=ON
log_slave_updates 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值