MYSQL数据库集群高可用和数据监控平台

1.环境准备(三个虚拟机都要做)

创建虚拟机并更改环境

vi /etc/selinux/config

重启后下载软件并且同步时间

yum install vim make gcc tree net-tools tar -y

yum update

安装好后

vim /etc/chrony.conf

timedatectl (可以用这个看一下)

三台机子完成后拍快照安装mysql,其中monitor虚拟机不用装

解压缩

tar xvf mysql-8.0.37-linux-glibc2.17-x86_64.tar.xz

cd mysql-8.0.37-linux-glibc2.17-x86_64

改变mysql的安装位置并创建用户(这里可以选择性配置)

软件初始化(root@......那里记得复制密码)

到这里从新打开一个终端(在当前 MobaXterm 的右键菜单中,选择 "Duplicate tab"(复制标签页)

新终端(密码粘贴之前复制的)

修改密码

alter user 'root'@'localhost' identified with mysql_native_password by '123456';

看一下数据库怎么样后关闭

最后一条指令kill -9 进程号中要替换上面自己的进程号(这里写错了应该是39150)

设置mysql的配置文件

vim /etc/my.cnf

client

port = 3306

socket = /tmp/mysql.sock

mysqld

port = 3306

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

tmpdir = /tmp

socket = /tmp/mysql.sock

character-set-server = utf8mb4

collation-server = utf8mb4_general_ci

default-storage-engine=INNODB

log_error = error.log

配置启动脚本
root@master1 \~# cd /usr/local/mysql/support-files

root@master1 support-files# cp -a mysql.server /etc/init.d/mysql

root@master1 support-files# vim /etc/init.d/mysql

root@master1 init.d# cd ~

root@master1 \~# vim ~/.bash_profile

root@master1 \~# source ~/.bash_profile

root@master1 \~# systemctl daemon-reload # 重载系统配置

root@master1 \~# systemctl start mysql

root@master1 \~# /usr/lib/systemd/systemd-sysv-install enable mysql # 开机启动

root@master1 \~# mysql -uroot -p

mysql> update mysql.user set host="%" where user="root";

mysql> flush privileges;

mysql> exit

2.msyql集群搭建

master1节点配置

root@master1 \~# systemctl stop mysql

root@master1 \~# vim /etc/my.cnf (直接在后面加)

  • 创建用于数据同步的账号m1

  • root@master1 \~# systemctl start mysql

    root@master1 \~# mysql -uroot -p

    mysql> create user 'mback'@'%' identified with mysql_native_password by '123456';

    mysql> grant replication slave on *.* to 'mback'@'%';

master2节点配置

基本一样,但是master2节点的server-id=2,不能和master1的server-id相同

剩下都完全一样就行

建立master1 节点主从关系
注意:这句在master2上执行

日志文件:mysql-bin-log.000001

日志数据点: 664

这个在master1 上写

change master to master_host='172.25.254.162',master_user='mback',master_password='123456',master_port=3306,master_log_file='mysql-bin-log.000001',master_log_pos=664; (ip替换成自己的master2ip,日志数据点也改成自己的)

start slave;

mysql> show slave status\G (这个建议稍微等一会再敲,他稍微需要点时间)

建立master2 节点主从关系

master1上

master2上

change master to master_host='172.25.254.161',master_user='mback',master_password='123456',master_port=3306,master_log_file='mysql-bin-log.000001',master_log_pos=664;

start slave;

mysql> show slave status\G

两个必须是yes

检测是否同步(两个虚拟机看一下一不一样)

master1(主)--master2(从)构建完毕

master2

master1

master1(从)--master2(主)构建完毕

3.Keepalived故障转移的高可用环境

master1节点配置

root@master1 \~# yum install keepalived -y

master1节点

root@master1 \~# vim /etc/keepalived/keepalived.conf

ip地址依然配自己的,网卡也是自己的

root@master1 \~# vim /etc/keepalived/chk_mysql.sh

#!/bin/bash

counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)

if "${counter}" -eq 0 ; then

killall keepalived

fi

root@master1 \~# chmod +x /etc/keepalived/chk_mysql.sh # 设置脚本执行权限

root@master1 \~# systemctl start keepalived

root@master1 \~# systemctl status keepalived (active running)

看一下成功了吗(注意看网卡那个位置有没有新的)

master2节点配置
复制代码
[root@master2 ~]# yum  install  keepalived -y

root@master2 \~# vim /etc/keepalived/keepalived.conf

复制代码
[root@master2 ~]# vim  /etc/keepalived/chk_mysql.sh
#!/bin/bash
复制代码
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
复制代码
if [ "${counter}" -eq 0 ]; then
复制代码
    killall keepalived
复制代码
fi
局部测试

master1

master2

master1

即使master1恢复后,VIP不会被强占

4.安装监控平台

monitor主机

root@monitor mysqld_exporter# vim .my.cnf # 注意为隐藏文件

client

user = exporter # 该账户需要再2台mysql节点新建

password = 123456 # 登录密码

host = 192.168.88.200 # 使用VIP访问

port = 3306

  • 2台mysql节点创建用户并授权

  • master1

master2

monitor节点操作

root@monitor \~# vim /usr/lib/systemd/system/mysqld_exporter.service

Unit

Description=https://prometheus.io

Service

Restart=on-failure

ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf --web.listen-address=:9104

Install

WantedBy=multi-user.target

刷新服务配置并启动服务

root@monitor \~# systemctl daemon-reload

root@monitor \~# systemctl start mysqld_exporter.service

root@monitor \~# systemctl enable mysqld_exporter.service

root@monitor \~# systemctl status mysqld_exporter.service

5.部署Promethues

monitor

root@monitor \~# vim /usr/lib/systemd/system/prometheus.service

root@monitor \~# systemctl daemon-reload

root@monitor \~# systemctl enable --now prometheus

root@monitor \~# systemctl status prometheus

root@monitor \~# vim /usr/local/prometheus/prometheus.yml

root@monitor \~# systemctl restart prometheus

部署Grafana
  • 下载并解压缩:

root@monitor \~# tar xvf prometheus-2.53.2.linux-amd64.tar.gz

root@monitor \~# yum install grafana-enterprise-11.1.2-1.x86_64.rpm -y

root@monitor \~# vim /etc/grafana/grafana.ini

到这里结束

相关推荐
2601_960567962 小时前
电商套图自动化效率的工程量化分析——从逐张生成到批量套图的架构演进
运维·架构·自动化
吳所畏惧3 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈3 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HiDev_4 小时前
【非标自动化】2、认识元器件(确定目标)
运维·自动化
维天说4 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zhang~Ling4 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
DeeplyMind4 小时前
Linux 深入 per-VMA lock:Linux 缺页路径如何摆脱 mmap_lock
linux·per-vma lock
爱写代码的阿森4 小时前
鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解
服务器·华为·harmonyos·鸿蒙·huawei
爱写代码的森4 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
中微极客5 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能