0x01 前言

Mysql双机热备,双机热备主要强调的是数据备份,而不是故障转移;部署两台mysql服务,本文使用的两台服务器(110.40.170.162和49.233.142.38),下文可能会直接称之为1服务器和2服务器;本文实现的是主/主复制关系,也就是两台mysql服务都可以进行完整的读写操作;主要思路就是先配置1为主机,2为从机;然后将配置过程逆过来在进行配置即可;本文实现的复制方式为:二进制日志文件位置复制
双机热备方案的主要两种组建方式:
(1)第一种,双机热备它的工作原理是使用两台服务器,一台作为主服务器(Active),运行应用系统来提供服务。另一台作为备机,安装完全一样的应用系统,但处于待机状态(Standby)。当Active服务器出现故障时,通过软件诊测将Standby机器激活,保证应用在短时间内完成恢复正常使用。
(2)第二种,双机互备方式则是在双机热备的基础上,两个相对独立的应用在两台机器同时运行,但彼此均设为备机,当某一台服务器出现故障时,另一台服务器可以在短时间内将故障服务器的应用接管过来,从而保证了应用的持续性,这种方式实际上是双机热备方案的一种应用。两个数据库各自为主,互相复制。再就是可视化操作对于业余选手真的很方便,下面的教程尽量可视化。也是博主想记录一下方便下次部署的时候不需要找东找西。

0x02 配置

1、配置1号/2号主服务器mysqld配置文件,代码在下面,可以整体复制替换,也可以按照备注新增即可两台都需要做;

Mysql5.7 双机热备配置负载均衡-主/主复制
Mysql5.7 双机热备配置负载均衡-主/主复制

1号机代码展示;

log-bin=mysql-bin   #大约在33行
log-slave-updates=true  #新增写入到binlog日志
enforce-gtid-consistency=true  #新增gtid复制
gtid-mode=on   #新增gtid复制模式
binlog_format=mixed
server-id = 1  #mysql ID ,注意必须是唯一值
expire_logs_days = 10
slow_query_log=1
slow-query-log-file=/www/server/data/mysql-slow.log
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""
log-slave-updates
sync_binlog=1    #全局变量,1是最慢的但是最安全
auto_increment_increment=2  #递增
auto_increment_offset=1    #自增
replicate-do-db= zhaiker  #要双机热备的数据库名字

2号机代码展示;

log-bin=mysql-bin   #大约在33行
log-slave-updates=true  #新增写入到binlog日志
enforce-gtid-consistency=true  #新增gtid复制
gtid-mode=on   #新增gtid复制模式
binlog_format=mixed
server-id = 2  #mysql ID ,注意必须是唯一值
expire_logs_days = 10
slow_query_log=1
slow-query-log-file=/www/server/data/mysql-slow.log
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""
log-slave-updates  #新增
sync_binlog=1    #全局变量,1是最慢的但是最安全
auto_increment_increment=2  #递增
auto_increment_offset=2    #自增
replicate-do-db= zhaiker  #要双机热备的数据库名字,可以多行

新建用户

为了更加可视化,首先用到phpmyadmin工具给数据库新建账户。

现在我要给服务器1与2部署数据库主主复制,下面操作1与2都要操作,不同的地方会指出。

1. 在应用商店找到安装即可

Mysql5.7 双机热备配置负载均衡-主/主复制

2. 用root账户进入phpmyadmin管理,点击账户,点击新增账户;

Mysql5.7 双机热备配置负载均衡-主/主复制

A主B从

首先查看服务器A的master状态,记录二进制文件名和位置(后面会用到)

1. 服务器A 进入phpmyadmin管理-状态

Mysql5.7 双机热备配置负载均衡-主/主复制

1、登录1号机VPS的SSH管理,输入命令:

cd ../www/server/mysql

mysql -u root -p

输完密码后,按照下面代码格式替换成自己的参数;root密码在宝塔面板后台可查;

Mysql5.7 双机热备配置负载均衡-主/主复制

1、这里注意,要先在宝塔面板安全里面把3306端口放开,我忘记放开没少百度。还有复制的时候一定要删除空格;

change master to master_host='49.233.142.38',master_user='zhaiker',master_password='zhaiker',master_log_file='mysql-bin.000009',master_log_pos=29432487;

然后运行:

start slave; 开启slave服务(开启主从复制,如果在关闭slave服务后主数据库数据有修改,依然可以进行更新数据。因为主数据库修改数据会留下日志,而slave服务就是读取日志然后进行操作)

如果想要解除主从关系:reset slave all;

stop slave; 关闭slave服务(关闭主从复制,配置失败需要重新配置时请先停止复制)

至此A至B就打工告成了!

验证

在命令框输入:show slave status\G

Mysql5.7 双机热备配置负载均衡-主/主复制

或者在状态里面查看;

Mysql5.7 双机热备配置负载均衡-主/主复制

B从A复制

1、打开B后台phpmyadmin,增加用户,跟A从B一样;

Mysql5.7 双机热备配置负载均衡-主/主复制

2、查看状态,并记录参数;

Mysql5.7 双机热备配置负载均衡-主/主复制
Mysql5.7 双机热备配置负载均衡-主/主复制

3、连接2号机SSH,并输入命令:

cd ../www/server/mysql

mysql -u root -p

到二号机宝塔面板后台复制ROOT密码;

change master to master_host='110.40.170.162',master_user='zhaiker',master_password='zhaiker',master_log_file='mysql-bin.000009',master_log_pos=29433299;

然后运行:

start slave; 开启slave服务(开启主从复制,如果在关闭slave服务后主数据库数据有修改,依然可以进行更新数据。因为主数据库修改数据会留下日志,而slave服务就是读取日志然后进行操作)

如果想要解除主从关系:reset slave all;

stop slave; 关闭slave服务(关闭主从复制,配置失败需要重新配置时请先停止复制)

至此B至A也就打工告成了!

验证同上!

0x03 总结

主要是端口没放行影响思路,这样两个数据库配合文件同步,可实现负载均衡,在域名解析处设置一样的二级域名,解析到不同VPS上,权重各50%,用户访问就会随机分配VPS,达到减轻VPS压力;

郑州90后一名计算机爱好者,希望能通过网络结交更多朋友!
最后更新于 2022-06-21