MySQL双机热备简介实现(Windows+liunx)+liunx下MySQL数据库日常数据备份

一、为什么需要双机热备

  • 众所周知,数据是程序的根源,当服务器出现了故障,我们的程序肯定是无法正常使用的。服务器的故障可能由各种原因引起,如设备故障、操作系统故障、软件系统故障等,如果这时候有技术人员在场,当场修复故障问题,那么可能需要10分钟,也可能需要20分钟,也可能需要1个小时乃至更长,如果这个时候技术人员不在场,那么服务器将要等待很久才能被修复故障。

  • 至此,当服务器出现了故障,是否选择需要双机热备也是需要针对我们的需要,例如,我们的服务器宕机是否会对我们的用户软件造成业务流失、用户流失,如果一些重要系统而言,用户是很难忍受这样长时间的服务中断的。因此,就需要通过双机热备服务,来避免长时间的服务中断,保证系统长期、可靠的服务。

二、双机热备是什么,双机热备是如何工作的

1.双机热备是什么
双机热备特指基于高可用系统中的两台服务器的热备(或高可用),因两机高可用在国内使用较多,故得名双机热备,通俗易懂的来讲两台服务器一个操作,一台备份。双机热备我们可以分为主从热备、双主互备、一主多从等,根据你自己的选择可以选择不同的方式既为主机,又为从机。

2.双机热备是如何工作的
整体上来说,复制有3个步骤:
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,将改变反映它自己的数据。

mysql热备工作原理

三、双机热备与备份的区别

双机热备是两台服务器之间一种时时的数据备份,是为了与主机数据一样,当发生故障的时候从而使用从机,属于一种故障点转移。而备份是备份的是数据,主要为了防止数据的丢失。

四、如何实现双机热备(本文通过mysql的my.ini/my.cnf配置文件实现)

环境描述:主机(Windows7 ip:192.168.100.1)(master),从机(centOS 7 ip:192.168.100.2)(slave),(MySQL 5.7)

1.要想实现mysql双机热备的前提是主机必须开启了二进制日志

(1)查看MySQL的二进制是否开启
这里写图片描述
log_bin就是二进制的日志开启状态

(2)MySQL开启二进制日志
需要在MySQL的my.ini配置文件中设置
# log-bin
log-bin=”logs/logbin.log”//指定一个二进制日志生成的路径
然后重启一下MySQL服务重新加载一下mysql服务是否启动,成功的话会在指定目录下看到”logbin.000001”相关的文件
使用命令:mysql> show master status;就可以查看当前最新二进制文件和二进制文件的节点
附:(mysql> show master logs;//显示所有日志)(mysql> reset master;//清空日志)

这里写图片描述

(3)配置master和slave配置

(3.1)主服务器配置
注:当开始配置主从热备的时候要确保数据库结构和数据同步,不然会以后的操作可能会引起报错到底转换二进制日志的sql线程阻塞报错。(虽然不同步数据也可以)

主服务器配置
server-id=1 #主服务器ID,唯一性
binlog-do-db=MyDBName #需同步的数据库,如果没有本行,即表示同步所有的数据库

主机给从机远程权限:

命令:grant replication slave on . to ‘root’@’192.168.100.1’ identified by ‘123456’;

(3.2)从服务器配置

server-id=2 #从服务区ID,唯一性
修改完成后,需要重启mysql服务。
然后通过命令行登录msyql(mysql –hlocalhost –uroot -ppwd)
Mysql>slave stop; #先停止slave服务

然后执行

Mysql>change master to
master_host=’192.168.100.1’,
master_user=’root’,
master_password=’123456’,
master_log_file=’ logbin.000005’ , #上面主服务器查询的值
master_log_pos=154; #上面主服务器查询的值(show master status命令看到的最新二进制日志)

配置好之后我们可以通过命令查看配置的值是否正确

mysql>show slave stauts

这里写图片描述
当然我这边配置的参数是不一样的,详细参数对看自己设置的值

  • 设置好之后,我们就可以开启从机的复制服务

    msyql> start slave


这里写图片描述
  • 当io和sql线程的状态都为Yes,就说明我们的复制线程已经成功连接到主机可以进行热拷贝了

  • 至此大家就可以去一阵操作看看是不是从机的数据库是否已有主机刚进行的操作结果

  • 经过上面的设置,我们已经可以进行两台服务器

五、MySQL数据库日常备份(sql语句的全量备份+二进制的增量备份)

  • 1.Windows 7
    再mysql数据库,mysqldump 内置工具可以帮我们导出需要备份的数据成MySQL可以执行的sql文件

//存放的目录
mysqldump -uroot -p123456 master > c:/mysql/master.sql
这里写图片描述
导出成功会在目录下看到相应的master.sql文件

那么我们知道了如何备份sql文件,该怎么去让它自己按照我们想要的时间去自动自己备份呢,这个时候我们就需要用到windows的(bat脚本)和(任务计划)

注:笔者这边没有去试过Windows的定时任务,此处给出一个友情链接,小伙伴们可以去自己尝试一下
http://blog.csdn.net/u013754060/article/details/50885804

  • 2.liunx(笔者采用shell脚本和cron定时服务实现备份(亲测))
    新建一个shell脚本,内容可以输入
    这里写图片描述

  • 然后执行一下是否能够生成正确的sql文件,可以的话就设置cron定时服务

    crontab -e

  • 编辑当前用户的定时服务内容
    这里写图片描述

  • cron服务常用命令和配置解释

    1.安装crontab:
    [root@CentOS ~]# yum install vixie-cron搜索
    [root@CentOS ~]# yum install crontabs
    2.启动服务
    #./sbin/service crond start //启动服务
    #./sbin/service crond stop //关闭服务
    #./sbin/service crond restart //重启服务
    #./sbin/service crond reload //重新载入配置 (配置文件在/etc/crontab)
    3.设置cron定时任务
    #设置语句语法结构
    *  *  *  *  *  command
    分 时 日 月 周 命令
    第1列表示分钟1~59 每分钟用或者 /1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令
    –*/1 每隔多久
    –1,10,22 指定的哪几个时间
    –18-23 指定时间一直至指定时间
    –23-7/1 混合条件

  • 备份恢复

    恢复数据
    mysql -uroot -p123456 master < /data/mysql/master.sql
    恢复
    mysqlbinlog e:/log/logbin.000001 | mysql -u root -p
    按指定位置恢复
    mysqlbinlog –start-position=185 –stop-position=338 e:/log/logbin.000001 | mysql -u root -p
    按指定时间恢复:
    mysqlbinlog –start-datetime=”2010-01-07 11:25:56” –stop-datetime=”2010-01-07 13:23:50” e:/log/logbin.000001 | mysql -u root -p

  • 顺便给出一个把二进制日志转换成可读性强文件的命令

    导出binlog日志
    c:\mysql\bin>mysqlbinlog e:/log/logbin.000001 > e:/log/log.sql

  • 结束语:这是笔者第一次csdn上上写的博文,也是第一次在互联网上写的博文,更多的是记录自己在开发中的一些步骤和经验,是自己对技术的一个笔记,所以很多东西也都是从其他地方学习过来自己理解的,所以文中有些内容如有错误,也希望读者可以指出。谢谢大家的支持,最后抛出一张美图舒缓一下程序员压抑的大脑。

  • 这里写图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个常见的 MySQL 双机热备拓扑图示例: ``` +------------------------+ +------------------------+ | 主数据库 | | 备份数据库 | | (Master) | | (Slave) | +------------------------+ +------------------------+ | | | | | | | | | V | V | +------------+ +------------+ | | MySQL | | MySQL | | +------------+ +------------+ | | 数据库 | | 数据库 | | +------------+ +------------+ +------------------------+ +------------------------+ ``` 在这个拓扑图中,主数据库(Master)和备份数据库(Slave)通过网络连接进行数据同步。主数据库是读写操作的主要来源,而备份数据库则用于备份和读取操作。 主数据库负责处理所有的写操作,包括插入、更新和删除数据。它将这些操作记录在二进制日志(binary log)中,并将其发送到备份数据库。 备份数据库接收来自主数据库的二进制日志,并将其应用于自己的数据库中,以保持与主数据库的数据一致性。备份数据库通常被配置为只读,以避免写操作对其进行修改。 在发生主数据库故障时,可以快速将备份数据库切换为主数据库。此时,备份数据库将成为新的主数据库,并开始处理所有的读写操作。原来的主数据库恢复后,可以重新配置为备份数据库。 此外,为了确保数据的完整性和一致性,还可以考虑定期进行数据备份和恢复测试,以确保备份数据库的可靠性。 请注意,这只是一个简单的示例拓扑图,实际的双机热备拓扑图可能会因架构和需求的不同而有所变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值