面试题答案
一键面试1. 工具选择
- Keepalived:是一个基于VRRP协议(虚拟路由冗余协议)的高可用解决方案,常用于配置虚拟IP并实现服务的高可用切换,适用于MySQL集群这类需要高可用的服务。
2. 配置步骤
安装Keepalived
- 在CentOS系统上,可使用以下命令安装:
sudo yum install keepalived -y
- 在Ubuntu系统上,使用以下命令:
sudo apt-get install keepalived -y
配置Keepalived
- 主节点配置:编辑Keepalived配置文件,通常位于
/etc/keepalived/keepalived.conf
。
vrrp_script check_mysql {
script "/etc/keepalived/check_mysql.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface eth0 # 根据实际网络接口修改
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100 # 虚拟IP地址,根据实际网络段修改
}
track_script {
check_mysql
}
}
- 从节点配置:同样编辑
/etc/keepalived/keepalived.conf
,与主节点配置相比,主要区别在于state
设置为BACKUP
,priority
设置低于主节点。
vrrp_script check_mysql {
script "/etc/keepalived/check_mysql.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0 # 根据实际网络接口修改
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100 # 虚拟IP地址,需与主节点一致
}
track_script {
check_mysql
}
}
编写MySQL健康检查脚本
- 在主从节点上创建并编辑
/etc/keepalived/check_mysql.sh
脚本。
#!/bin/bash
mysqladmin -uroot -p{password} ping &> /dev/null
if [ $? -eq 0 ]; then
exit 0
else
exit 1
fi
- 修改脚本权限,使其可执行:
sudo chmod +x /etc/keepalived/check_mysql.sh
启动并设置开机自启
- 在主从节点上启动Keepalived服务:
sudo systemctl start keepalived
- 设置开机自启:
sudo systemctl enable keepalived
3. MySQL 配置
主从复制配置
- 主节点:编辑MySQL配置文件(通常是
/etc/my.cnf
),添加或修改以下配置:
server-id=1
log-bin=mysql-bin
重启MySQL服务使配置生效:
sudo systemctl restart mysqld
获取主节点状态,记录File
和Position
的值:
SHOW MASTER STATUS;
- 从节点:编辑MySQL配置文件,添加或修改以下配置:
server-id=2
重启MySQL服务后,配置主从复制:
CHANGE MASTER TO
MASTER_HOST='主节点真实IP',
MASTER_USER='复制用户',
MASTER_PASSWORD='复制用户密码',
MASTER_LOG_FILE='主节点File值',
MASTER_LOG_POS=主节点Position值;
启动从节点复制:
START SLAVE;
检查从节点状态确保复制正常:
SHOW SLAVE STATUS \G;
确保Slave_IO_Running
和Slave_SQL_Running
都为Yes
。
这样,通过Keepalived配置虚拟IP并结合MySQL主从复制,就可以在主数据库出现故障时,从数据库迅速接管虚拟IP继续提供服务。