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;

双主方案docker mysql和服务 mysql keepalived双主双活_mysql


两个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.查看命令状态:如下入

双主方案docker mysql和服务 mysql keepalived双主双活_配置文件_02

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即可