Centos7 Mysql 双机热备实现数据库高可用

mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器。

双机热备的条件是双机mysql版本必须一致。

服务器分别为A(172.16.9.212)、B(172.16.9.213),配置步骤如下:

一、A->B主从备份

1、在主服务器A上创建从服务器备份的用户,IP地址为B的IP

grant replication slave on *.* to 'wuwei'@'172.16.9.213' identified by '123456';

2、打开主服务器A的二进制日志binarylog

vim /etc/my.cnf

新增配置如下:

要同步的数据库为smartmon

配置好保存后需重启mysql

3、如果初态不同,则要同步初态

先锁定 smartmon数据库:

FLUSH TABLES WITH READ LOCK;

然后导出smartmon数据:

mysqldump --master-data -uroot -p smartmon > /root/smartmon.sql

解除锁定:

UNLOCK TABLES;

4、查看主服务器A的binary日志位置,配置从服务器需要用到:

show master status\G

5、打开从服务器B的中继日志relay_log

新增配置如下:

设置要备份的数据库为smartmon

保存,重启mysql

6、导入主服务器A的数据库初态

拷贝A生成的smartmon.sql到B服务器,再导入

mysql -uroot -p smartmon < smartmon.sql

然后可以在mysql环境中查看到数据库的数据是一样的

7、在从服务器B上开启主从同步,host为A的IP,用户密码是在主服务器A上设置备份用户,log_file和log_pos是主服务器master的binary看到的信息。

MariaDB [smartmon]> change master to

    -> master_host='172.16.9.212',

    -> master_user='wuwei',

    -> master_password='123456',

    -> master_log_file='mysql-bin.000001',

    -> master_log_pos=2338575;

8、在从服务器B上查看slave状态

show slave status\G

图中的红框, 两个都是Yes, 说明开启成功。

从A到B的主从复制就完成了,所有在A中的修改都能自动同步到B,但是对B的修改却不能同步到A。因为是单向的,如果需要双向同步的话,需要再做一次从B到A的复制。

二、B->A主从备份

实际就是步骤一的逆向操作。将B(172.16.9.213)作为主服务器,A(172.16.9.212)作为从服务器。步骤基本和上面一样:

1、在B中创建备份用户

grant replication slave on *.* to 'wuwei'@'172.16.9.212' identified by '123456';

2、打开 /etc/my.cnf , 开启B的binarylog:

新增配置如下:

3、不需要导出B的初态同步到A上了,因为A和B的初态是一样的(步骤一实现的),查看master日志状态。

show master status\G

4、登录到A服务器开启中继relay_log

5、在A服务器上开启同步:

MariaDB [smartmon]> change master to

    -> master_host='172.16.9.213',

    -> master_user='wuwei',

    -> master_password='123456',

    -> master_log_file='mysql-bin.000003',

    -> master_log_pos=2394;

host为B的IP地址,user、password是在B上创建的备份用户,log_file、log_pos是在B上看到的master状态信息。

6、在A上查看slave status.

如果IO进程和SQL进程都为YES,说明从B到A的同步成功。

如果为NO或者执行步骤5失败的,则需要查看mysql日志文件/var/lib/mysql/主机名.err文件查找错误

图中的error信息是说找不到中继日志文件。

这是因为我们在配置A的中继文件时改了中继文件名,但是mysql没有同步。解决办法:

先停掉mysql服务,然后删掉/var/lib/mysql下的relay-log.info、主机名-relay-bin.000001、主机名-relay-bin.index,再启动mysql查看slave status就变为YES了。

配置完成。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

[Oracle入门级]知识概况

oracle各个版本间的主要技术更新 oracle 8 增加数据库创建和存储对象 oracle 8i 整体性能提升 oracle9i 实施应用集群 oracle...

1826
来自专栏pangguoming

CentOS7 安装 mysql8

本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ManagementAndJava/article/details/80...

6962
来自专栏xingoo, 一个梦想做发明家的程序员

Oracle使用小记

windows下Oracle必须要启动的服务 Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写入服务,VSS(Volume...

2065
来自专栏文渊之博

MySQL常见备份方案

8400
来自专栏PHP实战技术

高可用架构-- MySQL主从复制的配置

环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 主节点IP:192.168...

3327
来自专栏北京马哥教育

MySQL/MariaDB数据库备份与恢复

前言 数据库一般存放着企业最为重要的数据,它关系到企业业务能否正常运转,数据库服务器总会遇到一 些不可抗拒因素,导致数据丢失或损坏,而数据库备份可以帮助我们...

5116
来自专栏L宝宝聊IT

Mysql备份与还原——xtrabackup

上次我们介绍了采用逻辑备份mysqldump 备份方式,其最大的缺陷就是备份和恢复速度都慢,但如果数据库非常大,那再使用 mysqldump 备份就不太适...

2993
来自专栏Laoqi's Linux运维专列

MySQL调优

4429
来自专栏一个爱吃西瓜的程序员

学习SQL【1】-搭建SQL的学习环境

最近我在学习SQL,现在就开始记录我的学习过程吧,加油!如果你也想学SQL,希望我的学习记录能对你有所帮助。 PostgreSQL是对象关系型数据库管理系统...

3456
来自专栏禅林阆苑

mysql学习总结01 — 配置运行

修改 /etc/mysql/my.cnf 文件中 bind-address,将 bind-address=127.0.0.1 修改为本机IP,重启mysql服务

2005

扫码关注云+社区

领取腾讯云代金券