前提:
关闭所有机器的防火墙
关闭selinux
1、主库54 从库52/53
三台服务器环境mysql8.0.25
配置文件:
cat > /fan/etc/mysql80/my.cnf <<EOF
[mysqld]
server_id=54
binlog_format=row
datadir=/fan/data/mysql80/
basedir=/fan/softwares/mysql80/
port=3308
socket=/tmp/mysql3308.sock
mysqlx_port=33080
mysqlx_socket=/tmp/mysqlx33080.sock
log-bin=/fan/logs/mysql80/binlog/binary-log #配置MySQL数据库二进制文件存放位置
gtid-mode=on #开启gtid
enforce-gtid-consistency=true #开启gtid必须开启此参数
log-slave-updates=1 #指定从库在复制源过程中记录到自己的二进制日志中
EOF
2、初始化数据库(3台数据库同样的操作)
配置数据库数据、二进制日志和日志存放位置(都可以自定义目录)
pkill mysqld
install -o mysql -g mysql -d /fan/logs/mysql80/{redolog,binlog,doublewrite,errlog,undo}
rm -rf /fan/logs/mysql80/{redolog,binlog,doublewrite,errlog,undo}/*
rm -rf /fan/data/mysql80/*
ll /fan/data/mysql80/
初始化数据库
/fan/software/mysql80/bin/mysqld --defaults-file=/fan/etc/mysql80/my.cnf --initialize-insecure --user=mysql --basedir=/fan/software/mysql80 --datadir=/fan/data/mysql80
启动数据库
/fan/software/mysql80/bin/mysqld_safe --defaults-file=/fan/etc/mysql80/my.cnf >/dev/null &
3、主库(54)操作
创建用户:
CREATE USER copy@'%' IDENTIFIED WITH mysql_native_password by '123';
GRANT REPLICATION SLAVE ON *.* to copy@'%';
从库(53、52)配置主从复制:
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='192.168.15.54', #主库ip
SOURCE_USER='copy', #复制用户
SOURCE_PASSWORD='123',
SOURCE_PORT=3308,
SOURCE_AUTO_POSITION=1; #基于gtid的主从复制
开启主从复制
START REPLICA;
检查从库主从复制是否正常
SHOW SLAVE STATUS\G;
Slave_IO_Running: Yes #两种为yes状态正常
Slave_SQL_Running: Yes
如果主从复制配置失败,请依次执行"STOP SLAVE;"和"RESET SLAVE ALL;"
4、部署MHA基础环境:
MHA下载:
https://github.com/yoshinorim/mha4mysql-manager/releases
配置MHA关键程序软连接
ln -sv /fan/software/mysql80/bin/mysqlbinlog /usr/bin/mysqlbinlog
ln -sv /fan/software/mysql80/bin/mysql /usr/bin/mysql
配置54、53和52节点免密登录
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -q
ssh-copy-id 192.168.15.54
ssh-copy-id 192.168.15.53
ssh-copy-id 192.168.15.52
将密钥下发到集群的所有节点,集群公用同一套密钥
for host in `seq 52 54`;do scp -rp ~/.ssh/ 192.168.15.${host}:~ ; done
免密登录验证:
略
MHA Manager(管理节点)部署在54虚拟机上(也可以选择其他机器)
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y localinstall mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
yum -y localinstall mha4mysql-node-0.58-0.el7.centos.noarch.rpm
MHA Node(子节点)52和53虚拟机
yum -y localinstall mha4mysql-node-0.58-0.el7.centos.noarch.rpm
主库(54)操作
mkdir /fan/mha/{etc,logs,data} -pv
主库创建MHA用户
CREATE USER mha IDENTIFIED WITH mysql_native_password BY '123';
GRANT ALL PRIVILEGES ON *.* to mha;
准备MHA配置文件
cat > /fan/mha/etc/mha.cnf <<EOF
[server default]
manager_log=/fan/mha/logs/manager #指定MHA的manager组件的日志存储路径。
manager_workdir=/fan/mha/data/mha_manager #指定MHA的manager组件的工作目录。
master_binlog_dir=/fan/logs/mysql80/binlog/#指定主库的二进制日志的存储路径。
user=mha #指定管理mha的用户
password=123 #指定管理mha的用户密码。
ping_interval=2 #指定ping的间隔时间,即指定心跳的间隔时间
repl_password=123 #指定复制密码
repl_user=copy #指定复制的密码
ssh_user=root #指定各节点互信的用户
[server1]
hostname=192.168.15.53
port=3308
candidate_master=1 #指定候选的主库
[server2]
hostname=192.168.15.52
port=3308
[server3]
hostname=192.168.15.54
port=3308
EOF
mha的基础环境互信检查
masterha_check_ssh /fan/mha/etc/mha.cnf
都为ok为正常
mha的基础环境主从状态检查
masterha_check_repl /fan/mha/etc/mha.cnf
启动MHA环境
nohup masterha_manager --conf=/fan/mha/etc/mha.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /fan/mha/logs/manager.log 2>&1 &
查看MHA状态
masterha_check_status --conf=/fan/mha/etc/mha.cnf
标签:--,数据库,mysql,mha,fan,MySQL,MHA,mysql80
From: https://www.cnblogs.com/lifeiLinux/p/18313719