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 ![](https://i-blog.csdnimg.cn/direct/21de3a08ff944ed8a107e148d6a5df0c.png) \[root@master1 init.d\]# cd \~ \[root@master1 \~\]# vim \~/.bash_profile ![](https://i-blog.csdnimg.cn/direct/62639556277f40f19222f20596d2bb10.png) \[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 (直接在后面加) ![](https://i-blog.csdnimg.cn/direct/d2fb3d44e4af473a8b54b1d5913dd223.png) * 创建用于数据同步的账号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相同 ![](https://i-blog.csdnimg.cn/direct/4b84b03f3daa4a5e82863d81dc561014.png) 剩下都完全一样就行 ![](https://i-blog.csdnimg.cn/direct/47a7388499fc47c0bfa18691e6e84503.png) ##### 建立master1 节点主从关系 ##### 注意:这句在master2上执行 ![](https://i-blog.csdnimg.cn/direct/fdf38c6e76994545966a43c6eaf8c2db.png) # 日志文件: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上 ![](https://i-blog.csdnimg.cn/direct/2dca737f8dfb44eb86b3c26c9c474bce.png) 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 ![](https://i-blog.csdnimg.cn/direct/5ebbd4462e914130af94814cbe844187.png) 两个必须是yes 检测是否同步(两个虚拟机看一下一不一样) ![](https://i-blog.csdnimg.cn/direct/8047b6688dc944c4ab3731b7a7667949.png) ![](https://i-blog.csdnimg.cn/direct/ded3b8d429444cc6a1dfee1ba35ea3da.png) master1(主)--master2(从)构建完毕 master2 ![](https://i-blog.csdnimg.cn/direct/95abe6cc5f5740bf9d0b78322d06ac15.png) master1 ![](https://i-blog.csdnimg.cn/direct/9d202cb7f14b4b0f8fe80f2744ad3a11.png) master1(从)--master2(主)构建完毕 #### 3.Keepalived故障转移的高可用环境 ##### master1节点配置 \[root@master1 \~\]# yum install keepalived -y master1节点 \[root@master1 \~\]# vim /etc/keepalived/keepalived.conf ![](https://i-blog.csdnimg.cn/direct/d7f17592d58a43ea9c51f3a12b282f5f.png) 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) ![](https://i-blog.csdnimg.cn/direct/0a5ace73828245adb2a9434f1fb848d2.png) 看一下成功了吗(注意看网卡那个位置有没有新的) ![](https://i-blog.csdnimg.cn/direct/1a0c7b50202b429db5c6fb57c8bb8eb2.png) ##### master2节点配置 ``` [root@master2 ~]# yum install keepalived -y ``` \[root@master2 \~\]# vim /etc/keepalived/keepalived.conf ![](https://i-blog.csdnimg.cn/direct/a23154732da84cb68a8329c4a075758f.png) ``` [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 ``` ![](https://i-blog.csdnimg.cn/direct/1b761850623d43229f561c276e04835e.png) ##### 局部测试 master1 ![](https://i-blog.csdnimg.cn/direct/d71be961f09047e4b0524753858581e7.png) ![](https://i-blog.csdnimg.cn/direct/fd59dbc5543546399040296f35d4fcce.png) master2 ![](https://i-blog.csdnimg.cn/direct/749296c6167e4852ae148361a1c72381.png) master1 ![](https://i-blog.csdnimg.cn/direct/7557f6a6dc8c4f3b96d2a07dabfbcd14.png) 即使master1恢复后,VIP不会被强占 #### 4.安装监控平台 monitor主机 ![](https://i-blog.csdnimg.cn/direct/2ae292ee478740fc93d7d60a0ebaf0bd.png) ![](https://i-blog.csdnimg.cn/direct/882512a8de2e4623a98fff19bd73bebd.png) \[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 ![](https://i-blog.csdnimg.cn/direct/2b6f5d9eaf2542e0b19dc16f636c9ed5.png) ![](https://i-blog.csdnimg.cn/direct/97cdc94bd2314725be0698d7379ed0b5.png) \[root@monitor \~\]# vim /usr/lib/systemd/system/prometheus.service ![](https://i-blog.csdnimg.cn/direct/adda86b8473449a78844b34cd22234de.png) \[root@monitor \~\]# systemctl daemon-reload \[root@monitor \~\]# systemctl enable --now prometheus \[root@monitor \~\]# systemctl status prometheus \[root@monitor \~\]# vim /usr/local/prometheus/prometheus.yml ![](https://i-blog.csdnimg.cn/direct/01b2b19caa5c4e868fbdf8651753d040.png) \[root@monitor \~\]# systemctl restart prometheus ##### 部署Grafana * 下载并解压缩: ![](https://i-blog.csdnimg.cn/direct/7d0ba9eaf0a04a159fbb5bb4f74c94f1.png) \[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 ![](https://i-blog.csdnimg.cn/direct/2219dc989f5b467eaa424fb911edbc74.png) ![](https://i-blog.csdnimg.cn/direct/ac1d60a68dd74cf28038dd9e4e339836.png) 到这里结束

相关推荐
lihui_cbdd1 小时前
Linux 压缩与解压终极指南:全格式、分卷与进阶操作
linux·运维·服务器
在天愿作比翼鸟在地愿为连理枝1 小时前
UTM+Ubuntu配置MPICH并行环境
linux·运维·ubuntu
r***86981 小时前
Nginx解决前端跨域问题
运维·前端·nginx
落日漫游1 小时前
ansible中角色概念
运维·云原生·自动化
2301_807288631 小时前
MPRPC项目制作(第四天)
java·服务器·前端
_kank_2 小时前
Linux 文件权限深度解析与实战指南
linux
LCG米2 小时前
工业自动化嵌入式开发实战:基于ARM7与μC/OS-II的焊接机控制系统设计与实现
运维·c语言·自动化
@YDWLCloud2 小时前
做独立站,用阿里云国际版还是 Cloudflare?答案出乎意料
服务器·网络·阿里云·云计算
执笔论英雄2 小时前
【RL]expand_requests干啥的
服务器·开发语言·python