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会自动成为主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值