以前数据库备份采用的方式一般都是每天定时使用 mysqldump 到处 sql 文件,然后传到异地备份。不过这种定时备份有个问题就是如果服务器出问题了,那么这个备份和实际的业务数据总有一段时间的差异,丢失一部分数据。对于我这样的博客基本每天发一两篇还好,大不了丢一些评论数据,但是像一些 whmcs 做商业业务的,那可就意味着可能丢失一部分商业数据,比如付费数据啥的,那就比较头大了。

所以对于对数据实时性要求比较高的业务, mysql 的数据库的双机热备份就显得比较重要。我也是这两天才摸索着搞起来,把步骤总结下,希望对有需要的同学会有作用。

准备工作

两台服务器。建议异地。

装了 相同版本 的 mysql (为了避免各种不必要的麻烦,强烈建议 mysql 版本务必一致)

Iptables 确保两台服务器的 3306 端口都是通的。

下面为了说明方便,我把要备份的服务器称为“主服务器 A ”,把备份服务器称为“从服务器 B ”

强烈建议不要直接在业务服务器上操作,先拿测试服务器做好测试,确定走通流程再对业务服务器进行操作

主服务器 A 的相关设置:

第一步:停止所有业务,避免有新的数据库写入

比如 whmcs 和 wordpress 的维护模式

第二步:导出数据库,以便待会导入从服务器

1

mysqldump -u用户 -p密码 数据库 > backup.sql

以下是一个事例(假设用户是 root ,密码是 1234 ,需要备份的数据库是 91yun ):

mysqldump -uroot-p1234 91yun > backup.sql

如果你有多个数据库需要备份,就按这命令依序备份。

第三步:修改主服务器 A 的 mysql 配置文件

一般情况,配置 mysql 的位置文件在 /etc/my.cnf

在 [mysqld] 标签下增加以下内容

log-bin=mysql-bin

binlog_format=mixed

server-id    = 1

read-only=0

binlog-do-db=91yun

auto-increment-increment=10

auto-increment-offset=1

log-bin=mysql-bin     # 一般配置文件已经自带了,就是开启日志

binlog_format=mixed # 一般配置文件自带了

server-id = 1 # 这个需要特别注意下,每个服务器都需要配置不同的 ID ,这里我们把主服务器设成 1 ,后面的从服务器我们就要设置成 2 了

read-only=0

binlog-do-db=91yun   # 这里是要备份的数据库,如果要备份多个数据库可以重复多行 , 这里的意思就是我要备份 91yun  这个数据库

auto-increment-increment=10 # 这个数字是假设有 10 台服务器进行互相备份,影响一些自增长字段的自增长量

auto-increment-offset=1 # 这个 确保每个服务器不同 ,并不高于上面这个参数,影响自增长字段的自增长量

设置完后请重启 mysql 服务,以便设置生效 service mysql restart

第四步:在主服务器 A 连上 mysql

1

mysql -u用户 -p密码

mysql 的连接命令为 mysql -uroot   -p1234   ( 这里假设用户是 root ,密码是 1234) 需要注意的是, u 和用户, p 和密码之间并没有空格。

第五步:在主服务器 A 上创建用于备份的用户

该命令需要在上步连接 mysql 后,运行于 mysql 的命令行模式

1

grant replication slave on *.* to '用户名'@'从服务器B的IP' identified by '用户密码';

需要在把上面命令的用户名,密码和从服务器的 IP 换成你自己的。下面是一个例子:

grant replication slave on *.* to 'slave1'@'192.168.3.2' identified by 'IHEnZ1y6J6';

该命令的意思就是:创建一个用于备份的用户,用户名是 slave1 ,密码是 IHEnZ1y6J6 ,这个用户只允许从 192.168.3.2 这个 IP 的机子上登陆

需要注意的是, mysql 的所有命令都是以分号结尾的 ;

第六步:取得主服务器 A 的 mysql 目前的状态

该命令也是运行于 mysql 的命令行模式

1

show master status\G

请记下这个 File 和 Position 的内容!

下面开始修改从服务器 B 相关的设置

第一步:导入刚才 A 服务器到处的 Sql

这一步主要是确保两台服务器数据库的初始状态是一样的,如果这两个数据库已经一样了,那就可以略过了。

一般导入的数据库的命令:

1

mysql -u用户 -p密码 数据库 < backup.sql

下面是一个例子(假设用户是 root ,密码是 1234 ,导入的数据库是 ss100 )

mysql -uroot -p1234 ss100 < backup.sql

第二步:修改从服务器 B 的 mysql 配置

从这一步开始,就开始修改从服务器 B 的相关设置了

一样的, mysql 的配置文件一般在 /etc/my.cnf

在 [mysqld] 标签下,增加以下代码:

log-bin=mysql-bin

binlog_format=mixed

server-id       = 2

replicate-do-db=91yun

relay_log=mysqld-relay-bin

log-slave-updates=ON

log-bin=mysql-bin # 一般默认都有了,开启 log

binlog_format=mixed # 一般默认也有了,格式

server-id = 2 # 需要注意这个,因为主服务器设置了 1 ,所以这里我们就设成 2

replicate-do-db=91yun # 这个是需要复制的数据库

relay_log=mysqld-relay-bin # 这行照抄,不用改

log-slave-updates=ON

第三步:连接上从服务器 B 的 mysql 命令行模式

1

mysql -u用户 -p密码

进入 mysql 命令行模式

第四步:给从服务器 B 设置主服务器的相关信息

在命令行模式下运行下列命令:

1

CHANGE MASTER TO MASTER_HOST = '主服务器A的IP', MASTER_USER = '备份的用户名', MASTER_PASSWORD = '用户密码', MASTER_LOG_FILE='主服务器的File',MASTER_LOG_POS=主服务器A的Position;

MASTER_HOST # 主服务器 A 的 IP

MASTER_USER # 刚才在从服务器 A 上设置过的用于备份的用户名

MASTER_PASSWORD # 刚才在服务器 A 上设置过的用户的密码

MASTER_LOG_FILE # 刚才主服务器 A 上最后一步让大家记住的主服务器 A 状态的 File

MASTER_LOG_POS # 刚才主服务器 A 上最后一步让大家记住的主服务器 A 状态的 Position;

以下是一个例子:

CHANGE MASTER TO MASTER_HOST = '192.168.3.1', MASTER_USER = 'slave1', MASTER_PASSWORD = 'IHEnZ1y6J6', MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=449;

第五步:启动 slave

在 mysql 的命令行模式下输入:

1

start slave;

第六步:查看从服务器是否正常运行

在 mysql 的命令行模式下,运行以下命令:

1

show slave status\G

请务必确保 Slave_IO_Running 和 Slave_SQL_Running 的值都是 yes ,就表示成功了,如果任何一个是 NO 那就说明没有成功。

比较常见的错误是防火墙的设置导致 3306 连不上。请确保 iptables 设置正确或者关闭。

第七步:测试是否同步

你现在可以通过 phpmyadmin 在服务器 A 里面随便改个字段或者加个内容,看看从服务器 B 是否有相应的变化。

如果你需要 B 同时也具有写入功能,那你就把服务器 B 作为 master 主服务器, A 作为从服务器,按上面步骤从新再来一遍。那就可以确保 A 和 B 处于互相备份状态。

本博客所有文章如无特别注明均为原创。作者:樱木 ,复制或转载请以超链接形式注明转自 EFE 。

mysql 热备,实战mysql双机实时热备份相关推荐

  1. oracle linux 双机,oracleforlinux双机热备实战完全手册

    oracleforlinux双机热备实战完全手册 Oracle for linux 双机热备实战完全手册10.0.0.11 是我主服务器的 ip ,10.0.0.111 是我从服务器的 ip, tes ...

  2. oracle 共享磁盘阵列,共享磁盘阵列双机热备实战配置教程配置手册.docx

    共享磁盘阵列双机热备实战配置教程配置手册 Sql Server共享存储双机热备配置教程 本文以Sql Server 2008为例,介绍通过MicroColor ServHA Cluster配置SqlS ...

  3. 双机热备方案及双机热备软件选择

    1 什么是双机热备方案 企事业机构的信息化建设已经在随着社会建设的不断推进而改进和创新.众企事业机构的决策层也愈发重视企事业机构的信息化,不同程度的运营和发展着自身的业务信息系统.但是日趋普遍的业务信 ...

  4. mysql 双机热备 原理,MySQL双机热备份的配置及原理

    A.MySQL双机热备份概述 双机热备就是使用MySQL提供的一种主从备份机制实现.所谓双机热备其实是一个复制的过程,复制过程中一个服务器充当主服务器,一个或多个服务器充当从服务.这个复制的过程实质上 ...

  5. mysql热备教程_实现MySQL双机热备的实际操作步骤

    MySQL数据库与PHP搭配是实现MySQL双机热备的最佳组合,其原理主要是通过对日志的更新,用MySQL数据库(和PHP搭配之最佳组合)的SELECT的文件来操作相关功能,备机实时抓取主机的更新日志 ...

  6. keepalived mysql双主架构图_MySQL双机热备(keepalived+mysql双主)

    科普描述 双机热备是指两台机器都在运行, 但并不是两台机器都同时在提供服务. 当提供服务的一台 出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短. MySQL 双主复制,即互为 ...

  7. mysql双机热备 配置文件,MYSQL 双机热备配置手册()

    [原创] MYSQL 双机热备配置手册[原创] http://www.chinaunix.net 作者:squall1  发表于:2007-07-23 19:01:43 [发表评论][查看原文][存储 ...

  8. drbd实现mysql地热备_Mysql+DRBD+Heartbeat 实现mysql高可用的双机热备(mysql+heartbeat篇)...

    *************************************部署MYSQL******************************************* yum -y insta ...

  9. linux mysql 双机热备_ORACLE 数据库双机热备方案(Linux)

    用户可按需安装非RAC模式的oracle程序及实例,按需配置监听器,只需确保所有服务器与oracle相关的参数完全一致即可. 将Oracle应用配置成高可用模式需要记录下列参数,您可以自行整理这些参数 ...

最新文章

  1. AWS工具boto3使用笔记
  2. Scala项目启动方式:extends App和main的区别
  3. bash 将二进制转换为十进制_一文帮你详细图解二进制、八进制、十进制、十六进制之间的转换...
  4. matlab实验与系统信号实验二,信号与系统上机实验-matlab(第一第二次实验课)new
  5. 微软自带的防反编译工具dotfuscator.exe的使用
  6. MFC UpdateData
  7. php调用文章至首页,WP如何在首页调用分类文章列表的详细教程
  8. 如何开机进测试内存软件,小U讲解内存检测工具memtest详细使用教程
  9. 小米(xiaomi)红米(Redmi)手机一开机就自动重启:find device closed unexpectedly
  10. 基于人脸识别的宿舍门禁系统
  11. uniapp语音识别_有没有语音转文字的APP?
  12. js第8章事件案例:获取触发事件的元素,阻止事件冒泡和默认行为的实现、缓动的小球、图片放大特效、按Enter键切换
  13. 视觉神经网络的工作机理,计算机视觉和神经网络
  14. springboot基于java的基金分析系统的设计与实现
  15. 404错误代码页面 调用自动获取小姐姐图片
  16. 20年的星际争霸,再回首
  17. 基于MATLAB的人民币面额的自动识别
  18. word文档中的页码怎么从正文开始
  19. 酷炫越野车高清mac动态壁纸
  20. FPGA 驱动数码管动态显示(VerilogVivado)

热门文章

  1. Revit API 开发(14): RevitLink - 链接文件 rvt,IFC,DWG等
  2. python恶搞代码1:“随机弹窗+警告窗口+关机“大杂烩
  3. 通信原理抽样定理MATLAB实验报告,通信原理抽样定理实验报告
  4. OpenStack_Havana_Install_Guide 多节点安装总结1
  5. 智能家居硬件小制作(含源码)《手势识别控制器》基于PAJ7620手势模块、L298N驱动板、arduino
  6. 聂沛:我所喜爱的30位外国现代诗人
  7. jsp证件照实现代码
  8. 证券从业资格证知识点易错
  9. 签名验证中常见的参数字典升序排序及拼接
  10. VMware ESXi 7.0.3,升级安全补丁 ESXi 7.0.3, 20036589