mysql用keepalived的实现高可用搭建

本文介绍了使用keepalived实现MySQL高可用性的原理,详细讲解了如何设置MySQL互为主从,并通过keepalived配置主服务和备用服务。在主服务器故障时,虚拟IP将自动切换到备用服务器,确保服务不间断。同时,验证了主从同步的正确性,确保数据一致性。

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

1.高可用搭建原理

当访问mysql时,如果该服务器挂掉如何继续访问该服务器的mysql。

当我们用keepalived提供的虚拟ip提供对外服务,如果该服务器挂掉时虚拟ip会飘到备用服务器继续对外提供服务。

而这时主服务器和备用服务器的mysql应当保持一致。

2.mysql互为主从搭建

主服务器: vim /etc/my.cnf修改配置文件

[mysqld]
server-id = 32  #让服务器拥有唯一的id号,为了让服务器知道谁是master
relay-log = relay-log
skip-name-resolve = on
log_slave_updates = 1
auto_increment_increment=2
auto_increment_offset=1

systemctl restart mysqld

进入数据库创建拷贝用户(两边都要创建)

mysql -uroot -p xxxxxxx(mysql的密码)

create user  'copy'@'%' identified with mysql_native_password by '密码';

grant replcation  slave on *.* to 'copy'@'%';     给拷贝用户加权限

flush privileges ;         刷新mysql库
show master status\G
mysql> show master status\G
*************************** 1. row ***************************
             File: master-log.000023 
         Position: 390
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: 69fe61cb-f1fd-11ed-995f-000c290ba48e:1-13
1 row in set (0.00 sec)

备用服务器:vim /etc/my.cnf修改配置文件

server_id=29
relay-log = relay-log
log-bin = mysql-log
skip-name-resolve = on
log_slave_updates = 1
auto_increment_increment=2
auto_increment_offset=2

systemctl restart mysqld

进入数据库搭建主从

changer master to master_host = '主库ip地址',
master_user = 'copy',
master_password = '密码',
master_log_file = '主库的日志文件',
master_pos = '主库的position'

start slave;  开启slave

show slave status\G    查看slave

Slave_IO_State: Waiting for master to send event
                  Master_Host: 主库服务器IP地址
                  Master_User: copy 拷贝用户名称
                  Master_Port: 3306 端口号
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000024
          Read_Master_Log_Pos: 155
               Relay_Log_File: relay-log.000016
                Relay_Log_Pos: 369
        Relay_Master_Log_File: mysql-bin.000024
             Slave_IO_Running: Yes  判断是否成功
            Slave_SQL_Running: Yes  判断是否成功

在主库创建库和表验证主从是否搭建完成。

3.keepalived搭建主服务和备用服务

主机修改keepqlived配置

vim /etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_script mysql.sh {
script "/root/mysql.sh"
interval 1
}
 vrrp_instance VI_1 {
     state MASTER
     interface ens33
     virtual_router_id 51
     priority 100
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
       }
     virtual_ipaddress {
         主服务器的虚拟ip地址
       }
    track_script {
    mysql.sh
 }
vim /root/mysql.sh      设计shell脚本
#!/bin/bash
/usr/bin/mysql -uroot -pNebula@123 -e "show status" &>/dev/null
if [ $? -ne 0 ] ;then
 service keepalived stop
fi
chmod +x /root/mysql.sh 增加执行权限
systemctl restart keepalived

 ip a  查看虚拟ip是否存在

从机也照上修改配置

将state和priority(权重)修改

     state BACKUP
     interface ens33
     virtual_router_id 51
     priority 80
     advert_int 1

验证:

当主服务器出现虚拟ip时,关闭mysqld查看虚拟ip是否飘移到备用机上,通过虚拟ip进入mysql库查看数据是否丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值