前言
MySQL 高可用集群
MySQL 高可用集群是通过第三方软件实现的故障转移技术,通常是通过 MHA+Keepalived 或者 MHA+ 脚本等来实现,本例子将采用 Keepalived 实现。
准备
系统硬件
滴滴云
服务器(DC2):安全可靠,拥有极高的性价比高,为开发者的需求而设计。适合大中小型用户购买使用。
本文示例采用:通用型 2核CPU 4GB内存 500G的EBS 云盘的服务器配置
数量:3 台,2 台 MySQL 主从服务器,1 台 MHA 管理服务器
依赖软件
系统:CentOS 7.4
MySQL 5.7.24
daemontools-0.76.tar.gz
mha4mysql-manager-0.56-0.el6.noarch.rpm
mha4mysql-node-0.56-0.el6.noarch.rpm
Keepalived v1.2.13
安装过程
1. 登录2台服务器
SSH 登录购买的
滴滴云
DC2 主机
ssh
dc2
-
user
@
ip
2. 安装并配置 MySQL 主从复制关系
两台服务器的 MySQL 都安装完成后开始配置主从复制关系。(如果不会安装 MySQL 可以参考另一篇如何安装 MySQL 的文章:
如何在滴滴云 DC2 上搭建 MySQL 服务
)。
在主库上建立从库账号
mysql
>
CREATE
USER
'repl'
@
'ip'
IDENTIFIED
BY
'****'
;
mysql
>
GRANT
REPLICATION
SLAVE
ON *
.
*
TO
'repl'
@
'ip'
;
从库执行 change master 命令指向主库,配置的是 GTID 复制,所以不需要 binlog 的信息。
mysql
>
change
master
to
master_host
=
'master_ip'
,
master_port
=
port
,
master_heartbeat_period
=
10
,
master_user
=
'repl'
,
master_password
=
'
******'
,
master_auto_position
=
1
;
需要注意的地方:
server_id 不能相同
主从开启 GTID 复制
3. 建立主从复制关系后,校验一下复制是否成功开启
登录从库,查看 IO 和 SQL 线程是否启动
mysql
>
show
slave
status
\
G
;
4. 安装 MHA
登录到第三台 DC2 的服务器安装 MHA,可以下载最新的 MHA: https://github.com/yoshinorim/mha4mysql-manager
在两台 MySQL 服务器安装 MHA Node
yum
-
y
install
perl
-
DBD
-
mysql
rpm
-
ivh
mha4mysql
-
node
-
0.56
-
0.el6.noarch.rpm
在 etc 目录下建立 MHA 文件夹
mkdir
-
p
/
etc
/
mha
/
创建 manager 日志目录
mkdir
-
p
/
var
/
log
/
mha
/
app1
chmod
755
/
var
/
log
/
mha
/
app1
配置 app1.cnf
配置 masterha_default.cnf 文件
5. 配置 SSH 互信和 MHA 用户
MySQL 主从服务器配置户型:
生成 pub 秘钥,一直回车就可以,生成成功后复制 id_rsa.pub 里面的秘钥到从库,同样从库也是先生成秘钥再复制到主库服务器。
cd
~
/
.
ssh
MHA 管理端到 MySQL Node 的互信配置,生成秘钥,同时复制到 MySQL 的两台服务器上。
创建MHA用户:
登录到 MySQL 主库
mysql
>
CREATE
USER
'mha'
@
'%'
IDENTIFIED
BY
'mha2018REPL'
;
mysql
>
GRANT
all
privileges
ON *
.
*
TO
'mha'
@
'%'
;
校验 MHA 的 SSH 互信配置与 MySQL 复制状态
masterha_check_ssh
--
conf
=
/
etc
/
mha
.
d
/
app1
.
cnf
masterha_check_repl
--
conf
=
/
etc
/
mha
.
d
/
app1
.
cnf
--
global_conf
=
/
etc
/
mha
.
d
/
masterha_default
.
cnf
MHA 的脚本修改
master_ip_failover
、
master_ip_online_change
、
send_master_failover_mail
可以把例子的脚本复制下来,放到
/etc/mha/script
的目录下,适当按需修改内容。
6. Keepalived 安装
在两台 MySQL 服务器上安装 Keepalived
7. 设置守护程序
启动 app1
svc
-
u
/
service
/
app1
停止
svc
-
d
/
service
/
app1