MySQL双机热备简介实现(Windows+liunx)+liunx下MySQL数据库日常数据备份__鹏哥哥的博客-程序员宝宝

技术标签: 服务器  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:
    [[email protected] ~]# yum install vixie-cron搜索
    [[email protected] ~]# 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上上写的博文,也是第一次在互联网上写的博文,更多的是记录自己在开发中的一些步骤和经验,是自己对技术的一个笔记,所以很多东西也都是从其他地方学习过来自己理解的,所以文中有些内容如有错误,也希望读者可以指出。谢谢大家的支持,最后抛出一张美图舒缓一下程序员压抑的大脑。

  • 这里写图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33586456/article/details/73550462

智能推荐

4-4 tf.io.decode_csv使用_zrt will six的博客-程序员宝宝

代码承接上一篇打印生成的CSV文件名。// A code blockimport pprintprint("train filenames:")pprint.pprint(train_filenames)print("valid filenames:")pprint.pprint(valid_filenames)print("test filenames:")pprint.ppr...

Git版本控制_韭小浪的博客-程序员宝宝_git版本控制

一.安装git、创建版本库1.去官网下载对应操作做系统的git2.创建一个文件(目录)testgit,然后cd到目录testgit中执行git init就会把testgit初始化为 git 可以管理的 git 仓库,或者可以叫它 git 版本库。执行 git init 后testgit 目录中会自动创建一个 .git文件,这是一个跟踪管理版本库的文件,注意这个文件不可以随便修改,改乱了就会对版本库管理造成破坏。git init 执行成功后如下图:3.此时,我们的 git 版本库是空的,我们直

informix chunk状态问题归纳_marvelyu的博客-程序员宝宝

系统遇见如下报错,现在对这类问题予以总结:Sun Jun 19 15:30:19 201115:30:19  Warning: ONCONFIG dump directory (DUMPDIR) ‘/opt/informix/temp’ has insecure permissions15:30:19  Event alarms enabled.  ALARMPROG = ‘/opt/

SpringBoot 源码阅读(4):@EnableAutoConfiguration_w011m的博客-程序员宝宝

@EnableAutoConfiguration该注解用于自动配置,而自动配置是大部分人使用SpringBoot开发的主要原因。@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@[email protected]@[email protected](AutoConfigurationImportSelector.class)public @interface EnableAutoConf

vue3 setup 中的 emit事件触发_青挽梦的博客-程序员宝宝_setup 中emits

**vue3 setup 中的 emit事件触发**父组件&lt;template&gt; &lt;PaymentDlg ref="paymentDlg" @onSaveOk="paymentTest" /&gt;&lt;/template&gt;&lt;script setup&gt;import PaymentDlg from './dashboards/payment-dlg.vue'import { ref } from "vue";const paymentDlg = ref(

php环境配置步骤,配置PHP服务器环境步骤详解_PP鲁的博客-程序员宝宝

本节内容:搭建与配置php服务器环境。1,下载软件PHP的建议下载zip包,原因installer的我安装下来,发现根目录下少很多文件,虽说很智能,自动配置apache等,但是也有很多限制,不利于升级维护。php-5.2.3-win32 apache_2.2.4-win322,apache的安装过程中,要求输入你的Network Domain(网络域名)、Server Domain(服务器域名...

随便推点

网络:连接CCProxy代理服务器_「已注销」的博客-程序员宝宝

怎样连接CCProxy代理服务器, 百度了半天,反正呢,都是一个内容,Internet选项。用电脑的VPN连接试过,没用。我发现了个软件,可以用来连接CCProxy创建的代理。软件自己研究。链接:https://pan.baidu.com/s/14NEOo_Lc-v-0jBualY-p0g密码:nzj8...

mysql各种安装姿势解锁_stevenux的博客-程序员宝宝_/usr/local/mysql/bin/mysql_secure_installation <<e

mysql各种安装姿势解锁一.二进制包安装mysql1.mysql二进制包介绍1.1 二进制包获取途径1.mysql官网2.mariadb官网https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.46-linux-glibc2.12-x86_64.tar.gzhttps://mirrors.tuna.tsinghua.ed...

mount挂载光盘media_Linux挂载光盘(使用mount命令)_weixin_39849479的博客-程序员宝宝

在Windows中,如果我们想要使用光盘,只需要将光盘放入光驱即可。但在linux系统中,将光盘放入光驱后,还需要将光盘中的文件系统手动挂载到Linux系统中,还可以使用。同样,用完光盘后,Windows系统可以直接弹出光驱并取出光盘,但Linux系统不行,必须先卸载才能取出光盘,这确实不如Windows方便,不过这也只是一个操作习惯,习惯了就好。将光盘放入光驱之后,需执行如下挂载命令:[root...

com.mysql.jdbc.NonRegisteringDriver 内存泄漏_回归心灵的博客-程序员宝宝_nonregisteringdriver

问题描述某天监控突然报警服务器的内存占用较高,然后登陆服务器发现一个连接数据库的服务的内存占用很高,而且还在不断地上涨,于是通过 jmap 命令生成堆 dump文件(jmap -dump:format=b,file=rds.bin PID),然后使用 Eclipse 的 Memory Analyzer Tool (MAT) 工具来分析。问题分析表象分析通过 MAT 工具分析发现,第一个可能...

苹果描述文件服务器证书无效,22.iOS企业版证书、描述文件过期问题解决_杨祥子的博客-程序员宝宝

苹果官方文档写明:文档地址企业帐号发布证书有效期是3年,而开发证书有效期为1年,而描述文件开发发布都是只有1年有效期。个人帐号开发证书发布证书有效期都是1年,描述文件也全是1年有效期。iOS 分发证书 (App Store)如果您的 Apple Developer Program 会员资格有效,则您在 App Store 上的现有 app 将不受影响。但是,您不能再向 App Store 上传使用...

电脑故障维修常见的故障整理,电脑小白必备!_IT技术分享社区的博客-程序员宝宝

今天小编给大家分享几个常见的故障,电脑小白可以了解一下!一、电脑不能上网常见原因1:新装系统无驱动解决方法:需要下载驱动进行安装,可以先从其他设备下载拷贝到U盘安装。常见原因2:DNS服务...

推荐文章

热门文章

相关标签