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

摘要:
MySQL双主动热备用,也称为主动备用和主动备用,旨在使MySQL数据库高度可用,仅支持双机。原因是MySQL复制是一个主服务器和多个从服务器,但一个从服务器只能有一台主服务器。双机热备的条件是两台计算机上的mysql版本必须一致。显示主状态G 4。登录到服务器A并启动relay_Log 5。在服务器A上启用同步:MariaDB[smartmon]˃changemasterto-˃master_host='17216.9.213',-˃master_user='uwei',-˃master _ password='123456',-˃master_log_file='mysql-bin.000003',-˃master _ log_ pos=2394;主机是B的IP地址,用户和密码是在B上创建的备份用户,log_ file、log_ Pos是B上看到的主状态信息。这是因为我们在配置A的中继文件时更改了中继文件名,但MySQL没有同步。
mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器。
双机热备的条件是双机mysql版本必须一致。
服务器分别为A(172.16.9.212)、B(172.16.9.213),配置步骤如下:
一、A->B主从备份
1、在主服务器A上创建从服务器备份的用户,IP地址为BIP
grant replication slave on *.* to 'wuwei'@'172.16.9.213' identified by '123456';
2、打开主服务器A的二进制日志binarylog
vim /etc/my.cnf
新增配置如下:
Mysql双机热备实现数据库高可用第1张
要同步的数据库为smartmon
配置好保存后需重启mysql
3、如果初态不同,则要同步初态
先锁定 smartmon数据库:
FLUSH TABLES WITH READ LOCK;
  Mysql双机热备实现数据库高可用第2张
然后导出smartmon数据:
mysqldump --master-data -uroot -p smartmon > /root/smartmon.sql
解除锁定:
UNLOCK TABLES;
  Mysql双机热备实现数据库高可用第3张
 
4、查看主服务器A的binary日志位置,配置从服务器需要用到:
show master statusG
  Mysql双机热备实现数据库高可用第4张
 
5、打开从服务器B的中继日志relay_log
新增配置如下:
  Mysql双机热备实现数据库高可用第5张
 
设置要备份的数据库为smartmon
保存,重启mysql
6、导入主服务器A的数据库初态
拷贝A生成的smartmon.sqlB服务器,再导入
mysql -uroot -p smartmon < smartmon.sql
然后可以在mysql环境中查看到数据库的数据是一样的
7、在从服务器B上开启主从同步,hostAIP,用户密码是在主服务器A上设置备份用户,log_filelog_pos是主服务器masterbinary看到的信息。
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;
  Mysql双机热备实现数据库高可用第6张
 
8、在从服务器B上查看slave状态
show slave statusG
 
  Mysql双机热备实现数据库高可用第7张
 
图中的红框, 两个都是Yes, 说明开启成功。
从A到B的主从复制就完成了,所有在A中的修改都能自动同步到B,但是对B的修改却不能同步到A。因为是单向的,如果需要双向同步的话,需要再做一次从B到A的复制。
 
二、B->A主从备份
实际就是步骤一的逆向操作。将B(172.16.9.213)作为主服务器,A172.16.9.212)作为从服务器。步骤基本和上面一样:
1、在B中创建备份用户
grant replication slave on *.* to 'wuwei'@'172.16.9.212' identified by '123456';
2、打开 /etc/my.cnf , 开启Bbinarylog
新增配置如下:
  Mysql双机热备实现数据库高可用第8张
 
3、不需要导出B的初态同步到A上了,因为AB的初态是一样的(步骤一实现的),查看master日志状态。
show master statusG
  Mysql双机热备实现数据库高可用第9张
 
4、登录到A服务器开启中继relay_log
  Mysql双机热备实现数据库高可用第10张
 
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为BIP地址,userpassword是在B上创建的备份用户,log_filelog_pos是在B上看到的master状态信息。
6、在A上查看slave status.
  Mysql双机热备实现数据库高可用第11张
 
如果IO进程和SQL进程都为YES,说明从BA的同步成功。
 
如果为NO或者执行步骤5失败的,则需要查看mysql日志文件/var/lib/mysql/主机名.err文件查找错误
  Mysql双机热备实现数据库高可用第12张
 
图中的error信息是说找不到中继日志文件。
这是因为我们在配置A的中继文件时改了中继文件名,但是mysql没有同步。解决办法:
先停掉mysql服务,然后删掉/var/lib/mysql下的relay-log.info、主机名-relay-bin.000001、主机名-relay-bin.index,再启动mysql查看slave status就变为YES了。
 
配置完成。

免责声明:文章转载自《Mysql双机热备实现数据库高可用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇运营平台——效率型后台管理类产品交互设计心得Android微信分享图片大于32k进行压缩下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql的itcast笔记

1 课程回顾 自定义标签&编码实战                             1)自定义标签步骤:                                                1.1 编写标签处理器类,继承SimpleTagSupport类,覆盖doTag方法                             ...

MYSQL SQL语句 之 select

select语句在数据库操作中是操作频率最高的语句,使用方式也是多种多样,它的基本功能是:从表中选取数据,结果存储在一个结果集中。可以联合where,and,or,Order By,distinct,top, like,等一起使用。 一. select 最基本的用法如下: select 字段 from 表名 字段是什么,选出的结果集中就包括什么字段 例如:...

SQL Server 2016 CTP2.2 的关键特性

SQL Server 2016 CTP2.2 的关键特性 正如微软CEO 说的,SQL Server2016 是一个Breakthrough Flagship  Database(突破性的旗舰级数据库) SQL Server2016 CTP2.2是微软数据平台历史上迈出最大的一步,更快的事务处理和查询、任何设备更深入的洞察力、更先进的分析能力、全新安全技术...

MyBatis魔法堂:Insert操作详解(返回主键、批量插入)

  一、前言                                      数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅。 二、 insert元素 属性详解                               其属性如下:    parameterType ,入参的全限定类名或类型...

两种常见的mysql集群架构

常见的mysql集群架构 根据业务发展阶段和业务代码部署情况不同,对于扩展单数据库可以使用以下几种部署架构模型 单地域高可用架构 单地域高可用架构的构成 dbproxy数据库代理: 主要处理:读写分离,主从切换等。 主库(高可用):处理业务写流量。 从库(多实例,可选高可用):处理业务读流量。 单地域高可用的架构可以处理 业务流量在单地域的的业务结...

mysql远程连接数据库

折腾了一下午的坑结果是一个配置文件没改造成的,偶吐了T T还自己看以前的笔记哈哈哈上个月写的今天又用上了呢, 因为很多原因数据库部署在本地的话给他人使用造成了一些麻烦,因此把数据库放到服务器上边不失为一个较好的选择,话不多嗦接下来开始跳坑 偶的mysql版本是5.7,系统是Ubuntu18 1.首先保证在对应平台开放3306端口。 3306是mysql默认...