Mysql双机热备配置(超详细多图版)
一、双击热备介绍
1.基本概念
双机热备特指基于高可用系统中的两台服务器的热备(或高可用),双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-Active方式),主-备方式即指的是一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(即Standby状态)。而双主机方式即指两种不同业务分别在两台服务器上互为主备状态(即Active-Standby和Standby-Active状态)。
2.实现方式
a.基于共享存储(磁盘阵列)的方式
共享存储方式主要通过磁盘阵列提供切换后,对数据完整性和连续性的保障。用户数据一般会放在磁盘阵列上,当主机宕机后,备机继续从磁盘阵列上取得原有数据

b.全冗余方式
全冗余方式就是双机双存储

二 MySQL热备原理
双机热备就是使用MySQL提供的一种主从备份机制实现。所谓双机热备其实是一个复制的过程,复制过程中一个服务器充当主服务器,一个或多个服务器充当从服务。这个复制的过程实质上是从服务器复制主服务器上MySQL的二进制日志(bin-log),并在从服务器上还原主服务器上的sql语句操作,这样只要两个数据库的初态是一样的,就能一直同步。
双机热备的实现需要MySQL的版本高于3.2.。另外由于这种备份是基于MySQL二进制日志实现,所以主从服务器上的MySQL版本最好能够一样,至少从服务器的MySQL版本不可以低于主服务器的数据库版本。因为MySQL不同的版本之间二进制日志可能不一样。
当然这种复制和重复都是MySQL自动实现的,我们只需要配置即可。
如下图所示:

上图中有两个服务器, 演示了从一个主服务器(master) 把数据同步到从服务器(slave)的过程。
这是一个主-从复制的例子。 主-主互相复制只是把上面的例子反过来再做一遍。 所以我们以这个例子介绍原理。
对于一个mysql服务器, 一般有两个线程来负责复制和被复制。当开启复制之后。作为主服务器Master,会把自己的每一次改动都记录到 二进制日志 Binarylog 中。 (从服务器会负责来读取这个log, 然后在自己那里再执行一遍。)
作为从服务器Slave, 会用master上的账号登陆到 master上, 读取master的Binarylog, 写入到自己的中继日志 Relaylog, 然后自己的sql线程会负责读取这个中继日志,并执行一遍。 到这里主服务器上的更改就同步到从服务器上了。
三 配置步骤
第一步环境搭建:
现在有两个服务器,分别为A(主服务器),B(从服务器)。
- 为A和B分别分配静态IP地址。我采用的是dhcp自动分配方式,A的ip地址为192.168.119.128,B的ip地址为192.168.119.130。
- 保证A和B能够ping通,在B上输入命令
,如果出现以下结果:
,则说明A和B是能够通信的,如果不能,则查看是否A和B是否在同一个局域网中,或者关闭linux系统的防火墙 命令为 : /etc/init.d/iptables stop。 - 分别为A和B安装mysql,client和server都需要安装。
第二步 A(主服务器配置)配置
1.
进入mysql数据库。输入命令:
,然后根据提示输入密码。在A上面创建专门用于备份的用户。命令如下:

grant replication slave on *.* to 'username'@'192.168.119.130' identified by '123456';
其中username是用户名,192.168.119.130是B(从服务器)的ip地址,密码为’123456’;这个等会在B上要用;
2.
创建数据库。
我这里用的sql语句创建的 create database test;(具体实施的时候应该是直接导入数据库,数据库已经提前创建好了)。这个数据库是来测试的。
3.
开启A的binarylog
这里输入命令:
,就会打开MySQL的配置文件。修改MySQL绑定的IP地址:

这个是MySQL默认的ip,这里修改成A的ip:192.168.119.128.
继续修改如下配置

- server-id =1 表示A的id(之前是被#注释掉的)
- Long_bin = mysql-bin.log 表示log日志,如果采用mysql之前默认的/var/log/mysql/mysql-bin.log会导致MySQL服务无法启动。
- binlog-do-db =test用来表示,只把哪些数据库的改动记录到binary日志中。 可以写上关注test数据库(这句话最关键)。
- auto-increment-increment = 10和auto-increment-offset = 1用于在 双主(多主循环)互相备份。 因为每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。 解决这个问题的办法就是让每个数据库的自增主键不连续。 上图说是, 我假设需要将来可能需要10台服务器做备份, 所以auto-increment-increment 设为10. 而 auto-increment-offset=1 表示这台服务器的序号。 从1开始, 不超过auto-increment-increment。
- 所有设置完成之后,退出文本编辑,按ESC,再按shift+;键,然后输入wq,就能保存当前设置,并退出。
- 最后:重启MySQL服务,输入命令: service mysql restart。
4.
获取主服务器状态和同步状态。
注:因为数据库库是已经提前创建好的,所以以下步骤可以省略
现在我有数据库在A上面;

输入命令 :use test 进入到test数据库,
然后锁定test,输入命令:FLUSH TABLES WITH READ LOCK;

然后导出数据库。
注:以下这一步骤需要进行!
查看A服务器的binary日志位置:
输入命令:show master status\G

记住File和Position,接下来再设置从服务器的时候需要用到。
主服务器的全部做完,可以解除锁定:

第三步:B(从服务器)配置
1.
设置从服务器的文件配置。
输入命令:
,打开MySQL的配置文件。修改文件如下:

server-id 必须保证每个服务器不一样。 这可能和循环同步有关。 防止进入死循环。
replicate-do-db 可以指定需要复制的数据库, 这里是test。
relay_log 中继日志的名字。 log-slave-updates 意思是,中继日志执行之后,这些变化是否需要计入自己的binarylog。 当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。 就是双主互相备份,或者多主循环备份。 我们这里需要, 所以打开。
修改完成之后,保存,重启MySQL;
2.
导入数据库,开始同步。
实施人员将数据库导入到B中的MySQL。这里我就不详细了。
我导入的是test数据库。
进入MySQL,输入命令:mysql -uroot -p 输入密码后进入。
在mysql中输入:
CHANGE MASTER TO
MASTER_HOST='192.168.119.128',
MASTER_USER='username',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=510;
执行此语句,会出现
,
重启MySQL, 然后查看slave线程开启了没。

注意图中的红框, 两个都是Yes, 说明开启成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果其中一个是No, 那就说明不成功。需要查看mysql的错误日志。。有时候密码填错了, 有时候防火墙的3306没有打开。ip地址不对,等等。 都会导致失败。
到这里就全部配置完成了。
第四步 测试
1.在A服务器的test的数据库中的mytable表(这个是用来测试的,其他数据库不一定有),添加一条数据。
A:未添加前的状态:

B的数据库

现在A和B的初态是一样的。现在我往A里面插入一条数据,输入命令:
insert into mytable values(‘test’,’f’,’1900-01-01’,’china’);
插入成功,现在A的状态更新为:

与此同时B的数据库也更新为:

这个动作是同时的,几乎没有什么间隔。
好了,MySQL的双机热备数据同步就完成了。
Mysql双机热备配置(超详细多图版)的更多相关文章
- CentOS系统MySQL双机热备配置
1 概述 在集成项目中需要应对不同环境下的安装配置,主流操作系统大致可以分为三种:Linux.Windows以及UNIX.其中Linux备受青睐的主要原因有两个: 首先,Linux作为自由软件有两个 ...
- windows下使用mysql双机热备功能
一. 准备工作 1. 准备两台服务器(电脑),接入局域网中,使互相ping得通对方 2. 两台服务器都安装mysql-server-5.1,必须保证mysql的版本一致 3. 假设,服务器A:192. ...
- 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双机热备--预备知识
1.双机热备 对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务.当一台服务器 ...
- mysql 主从复制(mysql双机热备的实现)
转:http://blog.csdn.net/qq394829044/article/details/53203645 Mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好 ...
- MySQL双机热备环境搭建
一. 前期准备 准备两台服务器(电脑),接入到同一局域网中,能够使双方可以ping通: 安装MySQL数据库,具体安装方法网上很全面,但是安装的版本需保持一致: 服务器IP地址设置. l A服 ...
- mysql双机热备的配置步骤
设置双机热备: 首先要在两台机器上建立同步用户: grant replication slave on *.* to 'repdcs'@'192.168.21.39' identified by '1 ...
- Centos7 Mysql 双机热备实现数据库高可用
mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器. 双机热备的条件是双机mysql版本必须一致. 服务器分 ...
随机推荐
- 使用Maven命令安装jar包到repo中
项目中可能会碰到很多jar包,使用maven update不能更新,或者jar包是拷贝过来,不能编译的情况.此时就需要手动使用命令行安装. 例如Demo项目中提示缺少四个jar包,但是在repo中已经 ...
- Lightoj1205——Palindromic Numbers(数位dp+回文数)
A palindromic number or numeral palindrome is a 'symmetrical' number like 16461 that remains the sam ...
- request.getParameter() 和request.getAttribute() 区别
getParameter 是用来接受用post个get方法传递过来的参数的.getAttribute 必须先setAttribute.(1)request.getParameter() 取得是通过容器 ...
- BigDecimal精确计算及陷阱
BigDecimal通常在涉及到精确计算的时候会用到,下面是自己多次错误使用BigDecimal的总结. 结论: BigDecimal初始化小数时,尽量用字符串形式,例如new BigDecimal( ...
- MySQL 内建函数
日期相关 mysql> select curdate(),curtime(),now(),unix_timestamp(),week('2017-07-24'),year('2017-07-24 ...
- struts2快速入门
1. 下载开发包 课程 以 struts2 3.15.1 讲解 2. 目录结构 apps : struts2官方demo docs : 文档 lib : jar包 src : 源码 3. 导入jar包 ...
- [2012-04-25]shell大括号参数扩展(Parameter Expansion)
参考了shell十三问 以及http://hi.baidu.com/leejun_2005/blog/item/ebfee11a4177ddc1ac6e751d.html 提炼下记忆方式: {% ca ...
- js实现非模态窗口增加数据后刷新父窗口数据
父窗口是由两个部分组成,一个html的table,一部分是extjs的gird. 点击grid面板[增加]按钮将会弹出非模态窗口进行新数据的编辑页面 下面是按钮的触发函数代码: var a = win ...
- 关于Java的静态:静态类、静态方法、静态变量、静态块等
原文地址:Java static keyword - Class, Method, Variable, Block, import - JournalDev 很少看到文章能把静态这个问题解释的很清楚, ...
- Cognos 11.0快速开发指南 Ⅱ
1. 创建报表 在创建好数据源之后,我们就可以创建报表了,报表的开发是浏览器中完成的,这里我选用了chrome浏览器,在地址栏输入:http://localhost:80/ibmcognos ( ...