1. 高可用的机器
2. 原理:
高可用也就是说两台mysql 运行,其中一台机器挂掉了,能立马调用另外一台机器,保证调用mysql 能正常运行,
两台mysql 的调用来回切换,采用的是keepalived: 也就是说才保证通过keeplived 中来定义一个虚拟ip 然后调用虚拟ip,keeplived
通过心跳机制来调用和mysql 互相监控。
3.keepalived 保证高可用
Keepalived是基于VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)协议的一款高可用软件。Keepailived有一台主服务器(master)和多台备份服务器(backup),在主服务器和备份服务器上面部署相同的服务配置,使用一个虚拟IP地址对外提供服务,当主服务器出现故障时,虚拟IP地址会自动漂移到备份服务器。
4. 先搭建一主一从
4.1
模式 | ip |
Master | 192.168.1.152 |
Slave | 192.168.1.153 |
4.2 配置master 机器(192.168.1.152)
4.2.1 修改192.168.1.152 机器的配置文件:
修改192.168.1.152 中MySQL的/etc/my.cnf配置文件。
#MySQL服务器唯一id
server_id = 152
#binlog日志类型
log-bin=mysql-bin
binlog_format=mixed
#开启slave中继日志
relay_log=mysql-relay
4.2.2 重启服务:
1.service mysqld restart
2.创建用户,在主机上使用root@localhost登录,授权从机可以使用哪个用户登录
GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
3.查看master 状态:
show master status;
结果如下表格:
File | Position | Binlog_Do_DB | Binlog_Do_DB | Executed_Gtid_Set |
mysql-bin.000001 | 154 |
执行命令:
4.3 配置Slave(192.168.1.153)
1.修改192.168.1.153 中MySQL的/etc/my.cnf配置文件。
server_id = 1503
log-bin=mysql-bin
binlog_format=mixed
relay_log=mysql-relay
2. 执行命令:
change master to master_user='slave', master_password='123456',master_host='192.168.1.152',master_log_file='mysql-bin.000001',master_log_pos=154;
3.启动slave
start slave;
4.查看命令状态:如下入
show slave status \G;
两个yes 就表示成功。
5. 双主模式
模式 | ip |
Master (Slave) | 192.168.1.152 |
Slave(Master) | 192.168.1.153 |
5.1 修改192.168.1.153 机器的配置文件:
1. 修改192.168.1.153 中MySQL的/etc/my.cnf配置文件。
#MySQL服务器唯一id
server_id = 15
#binlog日志类型
log-bin=mysql-bin
binlog_format=mixed
2.创建slave 用户:
GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
3.查看master 状态:
show master status;
File | Position | Binlog_Do_DB | Binlog_Do_DB | Executed_Gtid_Set |
mysql-bin.000001 | 356 |
5.2 修改192.168.1.152 执行命令:
1.执行命令
change master to master_user='slave', master_password='123456',master_host='192.168.1.153',master_log_file='mysql-bin.000001',master_log_pos=356;
3.启动slave
start slave;
4.查看命令状态:如下入
1.有一个错误:
2020-12-08T17:24:00.656737Z 9 [ERROR] Slave I/O for channel ‘’: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593
解决办法,修改其中一台服务器的server-uuid,并保证server-uuid的格式正确,修改完成之后重启Mysql服务就可以了。
在修改配置文件之前,先登录Mysql客户端查看uuid,把返回的uuid复制,放到要修改的配置文件即可。
修改uui 的配置文件:
# find / -name 'auto.cnf'
#vim /data/mysql/auto.cnf
[auto]
server-uuid=804f2ebe-3a1c-11e8-ab46-000c29133368 # 按照这个16进制格式,修改server-uuid 随便修改一个值,重启mysql即可