目录
一.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会自动成为主