当前位置: 首页 > news >正文

Mysql数据库mycat部署与mha高可用实例解析

目录

一.mycat部署(ubuntu)

1.环境准备

2.初始化环境

3.部署主从复制

4.安装mycat(192.168.181.130)

5.客户机测试

二.mha高可用

1.环境准备

2.实现主从复制

3.安装mha软件

4.实现四台机器免密登录

5.建立mha文件夹和配置文件

6.检查mha环境

7.开启mha

8.测试


一.mycat部署(ubuntu)

1.环境准备

mycat服务器上不能装mysql

服务器地址
master服务器192.168.181.128
slave1服务器192.168.181.129
mycat服务器192.168.181.130
客户机192.168.181.131

2.初始化环境

#每台服务器上都初始化,关闭防火墙
systemctl disable  --now   firewalld
setenforce 0

3.部署主从复制

主上操作

先改配置文件
vim  /etc/mysql/mysql.conf.d/mysqld.cnf 
bind-address            = 0.0.0.0
mysqlx-bind-address     = 0.0.0.0
server-id=128 
systemctl   restart  mysql
新建用户+授权

create user test@'192.168.181.%' identified WITH mysql_native_password  by 'abc123';
grant all privileges on *.* to test@'192.168.181.%';

查看当前状态

show master status;

从上操作

vim  /etc/mysql/mysql.conf.d/mysqld.cnf 
bind-address            = 0.0.0.0
mysqlx-bind-address     = 0.0.0.0
server-id=129
systemctl   restart  mysql
 

msyql
CHANGE MASTER TO 
MASTER_HOST = '192.168.181.129',
MASTER_USER = 'test',
MASTER_PASSWORD = 'abc123',
MASTER_LOG_FILE = 'binlog.000006',
MASTER_LOG_POS = 648;             #具体以自己当前状态为准

start   slave

show  slave  status\G;  #  状态
#如果 错误
stop  slave;   #  关闭线程   io     sql
reset   slave  all;  #  清空配置
重来一遍

测试

create database haha;
#在主节点上建立数据测试
去从上查看是否存在对应的数据库

4.安装mycat(192.168.181.130)

mkdir  /apps 
将mycat复制到虚拟机上
tar zxvf Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz -C /apps/
设置变量环境
echo 'PATH=/apps/mycat/bin/:$PATH' > /etc/profile.d/mycat.sh
source /etc/profile.d/mycat.sh

apt  install  openjdk-8-jdk -y  不安装的话mycat起不来

tail -f /apps/mycat/logs/wrapper.log看到成功即可
vim /apps/mycat/conf/server.xml
rm -rf schema.xml
删除后重新导入
chmod 777 schema.xml
vim /apps/mycat/conf/schema.xml
 

修改配置文件

<writeHost host="host1" url="192.168.181.128:3306" user="test" password="abc123">                  <readHost host="host2" url="192.168.181.129:3306" user="test" password="abc123"/>

mycat  restart  重启mycat

5.客户机测试

客户端上要有mysql

mysql  -uroot  -p123456  -h 192.168.181.130  前提要有hellodb

测试读写分离
select @@server_id  出现129
在主从服务器上都打开通用日志
set global general_log=1;

cd /var/lib/mysql
tail  -f  ubuntu2204.log

在客户端插入数据

insert into teachers values(5,'Xiao Ming',46,'F');

查看主从服务器实时日志,可以看到只有主服务器上有日志变化显示,从而实现了读写分离。

二.mha高可用

1.环境准备

服务器地址
master服务器192.168.181.128
slave1服务器192.168.181.129
slave2服务器192.168.181.130
mha服务器192.168.181.131

2.实现主从复制

先改好配置文件,在进行主从复制,具体操作同上面一致,三台服务器都授权grant all privileges on *.* to test@'192.168.181.%';

3.安装mha软件

mha服务器上操作

apt --fix-broken install ./mha4mysql-manager_0.58-0_all.deb  -y

三台主从服务器安装node包即可

apt install  ./mha4mysql-node_0.58-0_all.deb

apt install net-tools -y              # 三台都安装安装网络工具
ifconfig  ens33:1 192.168.181.188/24 只在msyql主服务器上

创建用户并授权(这里是mha登录用户)

CREATE USER 'mhauser'@'192.168.181.%' IDENTIFIED WITH mysql_native_password BY 'abc123';
grant all on *.* to mhauser@'192.168.181.%';两台从服务器也授权
 

4.实现四台机器免密登录

mha服务器上操作

ssh-keygen 一路回车
ssh-copy-id 127.0.0.1自己和自己实现免密钥登录  
rsync -a .ssh   192.168.181.128:/root/
rsync -a .ssh   192.168.181.129:/root/
rsync -a .ssh   192.168.181.130:/root/
#注意.ssh 后不能加/
做完后可以四台机器互相验证

5.建立mha文件夹和配置文件

mkdir /etc/mastermha
[root@localhost ~]#vim /etc/mastermha/app1.cnf

[server default]
user=mhauser
password=abc123
manager_workdir=/data/mastermha/app1/
manager_log=/data/mastermha/app1/manager.log
remote_workdir=/data/mastermha/app1/
ssh_user=root
repl_user=test
repl_password=abc123
ping_interval=1
master_ip_failover_script=/usr/local/bin/master_ip_failover
check_repl_delay=0
master_binlog_dir=/var/lib/mysql/

[server1]
hostname=192.168.181.128
candidate_master=1

[server2]
hostname=192.168.181.129
candidate_master=1

[server3]
hostname=192.168.181.130
 

cd  /usr/local/bin/放脚本

chmod  +x  master_ip_failover

vim   master_ip_failover 
my $vip = '192.168.181.188/24';    #设置Virtual IP
端口改成ens33
 

6.检查mha环境

masterha_check_ssh --conf=/etc/mastermha/app1.cnf

masterha_check_repl --conf=/etc/mastermha/app1.cnf
#如果设置了默认字符集起不来    检查 主从复制
改 node文件后在检查

195 到 203 修改

sub parse_mysql_version($) {
  my $str = shift;
  my @nums = ($str =~ m/(\d+)/g);
  push @nums, (0) x (3 - @nums) if @nums < 3;
  my $result = sprintf('%03d%03d%03d', $nums[0], $nums[1], $nums[2]);
  return $result;
}

7.开启mha

#非后台
masterha_manager --conf=/etc/mastermha/app1.cnf 

#查看状态
masterha_check_status --conf=/etc/mastermha/app1.cnf  新开一个窗口

8.测试

三台服务器开启通用日志
set global general_log=1;

去三台机器上查看

tail -f /var/lib/mysql/localhost.log 日志以自己的为准
#通用日志

新开一个mha服务器窗口

tail -f /data/mastermha/app1/manager.log 查看日志

停掉主服务器后会发现slave1会自动成为主

http://www.xdnf.cn/news/707221.html

相关文章:

  • 低代码开发模式下的应用交付效率优化:拖拽式交互机制研究
  • Java大师成长计划之第34天:开源项目参与与贡献指南
  • java直接获取MyBatis将要执行的动态sql命令(不是拦截器方式)
  • 重新测试deepseek Jakarta EE 10编程能力
  • while循环
  • 内存泄漏可能有哪些原因导致
  • 酒店管理破局:AI 引领智能化转型
  • Onvif协议:IPC客户端开发-IPC相机控制(c语言版)
  • (一)视觉——工业相机(以海康威视为例)
  • 2025 一带一路暨金砖国家技能发展与技术创新大赛 第一届“信创适配及安全管理赛项”样题
  • 论文略读: STREAMLINING REDUNDANT LAYERS TO COMPRESS LARGE LANGUAGE MODELS
  • Spring Security架构中过滤器的实现
  • 设计模式-代理模式
  • 零基础开始的网工之路第十六天------Linux安全管理
  • 电路图识图基础知识-电路接线图(八)
  • 回调函数的理解
  • 人工智能在智能城市中的创新应用与未来趋势
  • 汽车制造场景下Profibus转Profinet网关核心功能与应用解析
  • HarmonyOS NEXT~鸿蒙开发能力:HarmonyOS SDK AI 全解析
  • 软考-系统架构设计师-第九章 系统架构设计基础知识
  • 美化显示GDB调试的数据结构
  • 【循环神经网络RNN第一期】循环神经网络RNN原理概述
  • 前人栽树,后人乘凉——AdaBoost
  • 2025年- H56-Lc164--200.岛屿数量(图论,深搜)--Java版
  • 美团启动618大促,线上消费节被即时零售传导到线下了?
  • 知识隔离的视觉-语言-动作模型:训练更快、运行更快、泛化更好
  • RabbitMQ集群与负载均衡实战指南
  • PP-OCRv5 C++封装DLL C#调用源码分享
  • 3D PDF如何制作?SOLIDWORKS MBD模板定制技巧
  • 新能源汽车电控系统的精准守护者PKDV5355高压差分探头