mysql5.7双主互备、高可用、读写分离+keepalived实战部署步骤与命令和架构图
时间: 2023-12-10 12:04:49 浏览: 78
mysql5.7 双主互备、高可用、读写分离 + keepalived 实战演练
好的,我会回答你的问题,以下是mysql5.7双主互备、高可用、读写分离+keepalived实战部署步骤与命令和架构图:
1. 架构图
```
+----------+
| Node 1 |
|(Master) |
+----------+
|(VIP)
|
+-----------+-----------+
| |
| VIRTUAL IP |
| |
+-----------+-----------+
|
|(VIP)
|
+----------+
| Node 2 |
| (Slave) |
+----------+
```
注解:Node1与Node2都有mysql服务器,Node1为主节点,Node2为备节点,VIP为虚拟IP,通过keepalived实现主备切换。
2. 部署步骤与命令
2.1 安装MySQL
在Node1和Node2上安装MySQL,可以使用yum或者apt-get安装。
2.2 配置MySQL双主互备
在Node1上执行以下命令:
```
vi /etc/my.cnf
# 添加如下内容
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
auto_increment_increment=2
auto_increment_offset=1
```
在Node2上执行以下命令:
```
vi /etc/my.cnf
# 添加如下内容
[mysqld]
server-id=2
log-bin=mysql-bin
binlog-format=ROW
auto_increment_increment=2
auto_increment_offset=2
```
2.3 配置MySQL读写分离
在Node1上执行以下命令:
```
mysql -u root -p
# 创建用于复制的用户
create user 'repl'@'%' identified by 'password';
# 授权
grant replication slave on *.* to 'repl'@'%';
# 查看master状态
show master status;
```
记录下File和Position的值。
在Node2上执行以下命令:
```
mysql -u root -p
# 停止slave
stop slave;
# 删除所有slave信息
reset slave all;
# 配置slave
change master to master_host='Node1_IP', master_user='repl', master_password='password', master_log_file='File', master_log_pos=Position;
# 开启slave
start slave;
# 查看slave状态
show slave status\G;
```
2.4 配置keepalived
在Node1和Node2上都要安装keepalived。
在Node1上执行以下命令:
```
vi /etc/keepalived/keepalived.conf
# 添加如下内容
! Configuration File for keepalived
global_defs {
router_id MySQL_HA
}
vrrp_script chk_mysql {
script "/usr/local/sbin/chk_mysql.sh"
interval 2
weight -2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
virtual_ipaddress {
192.168.0.100/24 dev eth0 label eth0:0
}
track_script {
chk_mysql
}
}
```
在Node2上执行以下命令:
```
vi /etc/keepalived/keepalived.conf
# 添加如下内容
! Configuration File for keepalived
global_defs {
router_id MySQL_HA
}
vrrp_script chk_mysql {
script "/usr/local/sbin/chk_mysql.sh"
interval 2
weight -2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
virtual_ipaddress {
192.168.0.100/24 dev eth0 label eth0:0
}
track_script {
chk_mysql
}
}
```
2.5 配置chk_mysql.sh
在Node1和Node2上都要创建chk_mysql.sh文件,并赋予执行权限。
在Node1上执行以下命令:
```
vi /usr/local/sbin/chk_mysql.sh
# 添加如下内容
#!/bin/bash
if [ $(ps -ef | grep -v grep | grep mysqld | wc -l) -eq 0 ]; then
service keepalived stop
fi
# 赋予执行权限
chmod +x /usr/local/sbin/chk_mysql.sh
```
在Node2上执行以下命令:
```
vi /usr/local/sbin/chk_mysql.sh
# 添加如下内容
#!/bin/bash
if [ $(ps -ef | grep -v grep | grep mysqld | wc -l) -eq 0 ]; then
service keepalived stop
fi
# 赋予执行权限
chmod +x /usr/local/sbin/chk_mysql.sh
```
3. 总结
以上就是MySQL5.7双主互备、高可用、读写分离+keepalived实战部署步骤与命令和架构图。通过以上部署,可以实现MySQL的高可用、负载均衡、读写分离等功能。
阅读全文