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了。
配置完成。
Centos7 Mysql 双机热备实现数据库高可用
mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器. 双机热备的条件是双机mysql版本必须一致. 服务器分 ...
Mysql双机热备配置(超详细多图版)
一.双击热备介绍 1.基本概念 双机热备特指基于高可用系统中的两台服务器的热备(或高可用),双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active- ...
Mysql双机热备--预备知识
1.双机热备 对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务.当一台服务器 ...
mysql双机热备的实现
转:http://blog.csdn.net/qq394829044/article/details/53203645 Mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好 ...
(转)mysql双机热备的实现
mysql双机热备的实现 原文:http://www.zjian.me/web/php/mysql%E5%8F%8C%E6%9C%BA%E7%83%AD%E5%A4%87%E7%9A%84%E5%AE ...
mysql 主从复制(mysql双机热备的实现)
转:http://blog.csdn.net/qq394829044/article/details/53203645 Mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好 ...
MySQL双机热备环境搭建
一. 前期准备 准备两台服务器(电脑),接入到同一局域网中,能够使双方可以ping通: 安装MySQL数据库,具体安装方法网上很全面,但是安装的版本需保持一致: 服务器IP地址设置. l A服 ...
mysql双机热备实现方案
一.概念 1.热备份和备份的区别 热备份指的是:High Available(HA)即高可用,而备份指的是Backup,数据备份的一种.这是两种不同的概念,应对的产品也是两种功能上完全不同的产品.热备 ...
随机推荐
初始webservice
webservice 可以用来查天气,以及手机号码类型等功能,这写都是简单的 方法有很多: 1.通过创建 web service exploer 创建出一个web services explorer ...
用MFC如何对子对话框进行初始化
通常情况下,我们在创建子对话框的类时.cpp文件中并不会自动生成initdialog函数,但我们的很多操作都需要用到initdialog初始化函数,如果你直接在类的头文件中去定义一个初始化函数,然后在 ...
dll 和 lib--初级
今天碰到一个奇怪的问题,一个第三方的库,提供了A.dll和A.lib,编译的时候可以通过,运行的时候一直报错,说找不到A.dll. 我就在main函数那里设了断点,发现没有进main 函数的时候就已经 ...
MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变
1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量: CToolBar m_toolbar;CImageList ...
transactionscope报“此操作对该事务的状态无效”问题
编写的保存方法里面有个transactionscope代码一直报“此操作对该事务的状态无效”,弄了半天,原来是超时问题(transactionscope默认超时时间是1分钟) 经过修改,设置了超时时间 ...
纯CSS打造进度条
进度条效果如下: CSS部分 body { background-color: white; } .progress-bar { display: flex; flex-direction: row; ...
angular中文文档的滚动条样式
个人感觉angular中文文档的滚动条样式非常棒,于是乎就扒了下来 https://www.angular.cn/ body::-webkit-scrollbar { /* 定义了滚动条整体的样式 * ...
【4】JVM-GC设计思路分析
Java中将内存的控制交给JVM来实现,方便了JAVA程序猿,当然牺牲了一部分效率,不过总体来看是值得的.那么JVM中是如何设计GC的呢,本文从几个问题入手,然后分析了一下设计思路,如果有理解错误的地 ...
Python 看书的一些记录 运算符重载
1.类和模块有什么关系? (1)类是模块的一部分,是模块对象的属性. (2)类和模块都是命名空间,但是类是对于语法的.模块是对于文件的 (3)类支持多个实例,但是模块被导入时只有一个. 2.什么是抽象 ...