首页 > 数据库 >MySQL + Keepalived自动切换

MySQL + Keepalived自动切换

时间:2024-06-15 13:58:01浏览次数:26  
标签:+--------------------+ IP Keepalived MySQL keepalived 主机 master 切换 mysql

目录

一. 环境准备

二. 部署软件

三. master主机配置keepalived

四. slave主机配置keepalived

五. 两台机器配置数据库检查脚本

六. 客户端模拟访问


一. 环境准备

准备三个新环境的虚拟机,关闭防火墙和SElinux安全策略,并设置时间同步和配置好YUM源。

虚拟IP用:192.168.226.200 

主机名主机IP系统用途
master192.168.226.139Rockly9.4主节点
slave192.168.226.140Rockly9.4备用节点
localhost192.168.226.141Rockly9.4模拟客户端

二. 部署软件

两台主机,master和slave都操作

下载mysql-server和keepalived

yum install -y mysql-server keepalived

启动数据库

systemctl restart mysqld

使用mysql登录数据库,在rocky_linux9.4社区版没有初始化密码限制和低安全策略,直接可以登录登陆后修改一个密码使用。

Mysql版本:8.0.36

[root@localhost ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.36 Source distribution

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';

 再创建一个远程root用户和密码并设置放开权限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
ERROR 1410 (42000): You are not allowed to create a user with GRANT
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '1234';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

 注意到这里,只用在master或者slave其中一台主机的数据库中创建一个库,这里我选择对192.168.226.139创建,这里是创建一个后面用客户端测试观察的库。

mysql> CREATE DATABASE dbtest;

三. master主机配置keepalived

vi /etc/keepalived/keepalived.conf

删除原文件keepalived.conf里的内容,新增如下内容,注意修改虚拟IP

! Configuration File for keepalived

global_defs {
   router_id master
}
vrrp_script check_run {
   script /etc/keepalived/keepalived_check_mysql.sh
   interval 5
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 66
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.226.200/24      #虚拟IP
    }
    track_script {
        check_run
    }
}

四. slave主机配置keepalived

vim /etc/keepalived/keepalived.conf

删除原文件keepalived.conf里的内容,新增如下内容,注意修改虚拟IP

! Configuration File for keepalived

global_defs {
   router_id backup
}
vrrp_script check_run {
   script "/etc/keepalived/keepalived_check_mysql.sh"
   interval 5
}

vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface ens33
    virtual_router_id 66
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress { 
        192.168.226.200/24      #虚拟IP
    }
    track_script {
        check_run
    }
}

五. 两台机器配置数据库检查脚本

 这里两台机器master和salve都要配置

vi /etc/keepalived/keepalived_check_mysql.sh

 写入如下内容

#!/bin/bash
/usr/bin/mysql -uroot -p'1234' -e "show status" &>/dev/null
if [ $? -ne 0 ] ;then
        #       service keepalived stop
                systemctl stop keepalived
fi

给脚本加上权限

chmod 777 /etc/keepalived/keepalived_check_mysql.sh

启动keepalived并设置开机自启

systemctl enable --now keepalived

此时,虚拟IP已经出现在master主机上。

六. 客户端模拟访问

在主机192.168.226.141机器上下载数据库用来远程登录模拟是客户端使用

yum install -y mysql-server
systemctl start mysqld

使用mysql 登录,初始化没密码的,登陆后修改一个和前面实验主机不同的数据库密码并退出。

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
EXIT

使用虚拟IP192.168.226.200远程登录数据库

mysql -uroot -p1234 -h 192.168.226.200 -P 3306

登录后 

[root@localhost ~]# mysql -uroot -p1234 -h 192.168.226.200 -P 3306
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.36 Source distribution

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| dbtest             |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> 

可以看到在这master机器创建的那个库,然后停止master主机的keepalived,观察虚拟IP是否漂移。

可以发现,虚拟IP漂移到了slave主机上,再次使用客户主机查看库命令发现没有了那个测试创建的库datest

mysql> show databases;
ERROR 2013 (HY000): Lost connection to MySQL server during query
No connection. Trying to reconnect...
Connection id:    13
Current database: *** NONE ***

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.03 sec)

现在重新开启master上的keepalived,观察到虚拟IP又转移到了master主机上,并使用客户端再次查看数据库,这次就又可以看到这个用于测试创建的库了

mysql> show databases;
ERROR 2013 (HY000): Lost connection to MySQL server during query
No connection. Trying to reconnect...
Connection id:    88
Current database: *** NONE ***

+--------------------+
| Database           |
+--------------------+
| dbtest             |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.03 sec)

标签:+--------------------+,IP,Keepalived,MySQL,keepalived,主机,master,切换,mysql
From: https://blog.csdn.net/Lzcsfg/article/details/139692266

相关文章

  • LVS_Director + KeepAlived + 邮件报警
    目录一.环境准备二. 对master和backup操作三.配置master主机四.配置backup主机六.验证虚拟IP七.配置后端两个web服务器对web1和web2主机都进行如下操作: 单独修改web1主机单独修改web2主机验证八.设置邮件报警 一.环境准备KeepAlived在该项目中的功能......
  • 快速提高MySQL查询效率的实用方法
    快速提高MySQL查询效率的实用方法包括以下几个方面,下面将详细列举并解释:使用合适的索引索引可以大大提高查询的速度,允许数据库系统快速定位和访问特定的数据行。在经常用于WHERE子句、JOIN操作和ORDERBY排序的列上创建索引。避免创建过多的索引,因为索引也会占用存储空间......
  • MySQL入门学习-子查询.ANY
        在MySQL数据库中,子查询是指一条查询语句嵌套在另一条查询语句中,可以用来实现复杂的查询逻辑。子查询通常在WHERE子句中使用,用于过滤或比较查询结果。    子查询ANY是指返回子查询结果集中的任意一个值,与其他子查询类型相比,子查询ANY的特点是返回值......
  • MySQL的高可用方案:深入Galera Cluster和ProxySQL
    一、引言1.1背景和重要性 随着互联网的发展与普及,数据库作为后端存储的重要组件,其稳定性、可用性和性能直接影响到一个系统的正常运行。特别是在高并发、大数据的现今环境下,一款高性能、高可用率的数据库系统更是大大提升了业务的效率和保障。 MySQL是一款广受欢......
  • mysql-sql-第十周
    学习目标:sql学习内容:31.查询所有同学的学生编号、学生姓名、选课总数、所有课程的成绩总和联合查询不会显示没选课的学生(上接)Selectstudents.stunm,name,u.s,u.tfromstudents,(selectstunm,sum(counm)s,sum(tscore)tfromscoregroupbystunm)uwhereu.stun......
  • 部署mysql-8.0.35
    第一步:卸载系统自带mariadb查看系统自带的Mariadb:rpm-qa|grepmariadb卸载系统自带的Mariadb:rpm-e--nodepsmariadb-libs-5.5.44-2.el7.centos.x86_64删除etc目录下的my.cnf:rm-rf/etc/my.cnf检查mysql是否存在:rpm-qa|grepmysql第二步:将下载的mysql安装包mysql-8.0.3......
  • MySQL导出数据库脚本
    1在Navicat中找到项目对应的数据库(如:booksystem)→右键转储SQL文件→结构和数据注意:information_schema、mysql、performance_schema、sys这4个库是MySQL自己的,不是你项目的,不要打开或破坏它们2在弹出的另存为对话框中选择一个位置并点击保存......
  • 【MySQL】事务一
    事务一1.什么是事务2.为什么会存在事务3.事务的版本支持4.事务的提交方式5.事务常见操作方式6.事务隔离级别6.1读未提交【ReadUncommitted】6.2读提交【ReadCommitted】6.3可重复读【RepeatableRead】6.4串行化【serializable】点赞......
  • 基于PHP+MySQL的宠物MeoWong Pets Caring Platform系统的设计与实现
    目录摘要IABSTRACT1目录1第1章引言11.1课题背景11.2研究现状11.3研究目标1第2章相关的理论和技术22.1HTML简介22.2PHP技术42.2.1PHP简介42.2.2PHP开发平台52.2.3PHP文件组成52.3访问数据库的实现方法52.4tomcat数据库连接池介绍......
  • mysql8.0授权root远程访问
     mysql8.0授权root远程访问要授权MySQL8.0的root用户远程访问,你可以按照以下步骤操作:登录到MySQL服务器:  mysql-uroot-p创建一个新的用户或者授权现有用户(如果已存在):  CREATEUSER'root'@'%'IDENTIFIEDBY'password';或者 ......