MYSQL自动备份策略的方案

目前流行几种备份方式:

一、逻辑备份:使用mysql自带的mysqldump工具进行备份。备份成sql文件形式。

优点:最大好处是能够与正在运行的mysql自动协同工作,

在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问)。可能会阻止修改操作。sql文件通用方便移植。

缺点:备份的速度比较慢。如果是数据量很多的时候。就很耗时间。如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据)。那么服务就会影响的。

备注:所谓的与mysql服务器能够自动协同工作,实际上是指加参数来控制mysql服务器,比如锁定所有表只能进行读,不能进行写操作。


二、物理备份:直接拷贝mysql的数据目录。缺点,你不能去操作正在运行的mysql服务器(在拷贝的过程中有用户通过应用程序访问更新数据,这样就无法备份当时的数据)可能无法移植到其他机器上去。

直接拷贝只适用于myisam类型的表。这种类型的表是与机器独立的。但实际情况是,你设计数据库的时候不可能全部使用myisam类型表。你也不可能:因为myisam类型表与机器独立,方便移植,于是就选择这种表,这并不是选择它的理由。

更多的情况是,你会根据业务特点(比如你需要支持事务机制就必须使用innodb),查询速度和服务性能来选择表类型的。

必须保证表不被使用中。

如果服务器在你则正在拷贝一个表时改变它,拷贝就失去意义。

如果数据库表在文件系统备份过程中被修改,进入备份的表文件主语不一致的状态,而对以后的恢复表将失去意义。

保证你的拷贝完整性的最好方法是:关闭服务器,拷贝文件,然后重启服务器。

或者是,要锁定对应的表(对前端用户造成访问问题)。

解释直接拷贝文件,为什么不具备可移植性?

Mysqldump 产生可移植到其他机器、甚至具有不同硬件结构的机器上的文本文件。直接拷贝文件不能够移植到其他机器上,除非要拷贝的表使用MyISAM 存储格式。ISAM 表只能在具有相同硬件结构的机器之间进行拷贝。例如,将文件从S PARC 的Solaris 机器拷贝到Intel 的Solaris 机器(或者相反)是行不通的。由MySQL3.23 引进的MyISAM 表存储格式可以解决这个问题,因为该格式与机器独立。因此,如果以下两个条件都满足的话,直接拷贝文件可以移植到具有不同硬件结构的机器上:即另一台机器上也必须运行MySQL3.23

以上的版本,并且文件必须表示成MyISAM 表,而不是ISAM 表。

三、双机热备份:mysql数据库没有增量备份的机制。当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制(也就是双机热备)。

优点:适合数据量大的时候。现在明白了。大的互联网公司对于mysql数据备份,都是采用热机备份。搭建多台数据库服务器,进行主从复制。

主从复制经常遇到的问题就是,如何保证数据不堵塞,不延迟。这个问题还是可以容忍的,有一些方案可以改善。毕竟有得有失的。这已经是很省心省力的方式了。

================================================

我目前应该使用什么样的备份策略的权衡:

物理备份,恢复快,当然最好是存储在一个机器上。我现在是用物理备份还是逻辑备份为好呢?

考虑到以后会迁移平台。为了保证通用性。恢复速度1分钟左右的差距我是可以容忍的。所以我为了跨平台,我更加愿意使用逻辑备份。存储sql文件形式。

双热机备份方式,目前硬件没有多个。技术人员有限,需要人力去维护,比较麻烦。所以排除在外。

四、方案:

1、总体策略:写个定时执行任务。定时在晚上或凌晨自动备份(考虑数据库服务器在运行中不能停机)

代码中做成备份成功后,把以前的删掉。避免很多数据占据磁盘。

2、考虑到初期数据量这么小。使用mysqldump进行备份吧。设置在凌晨几点(4-6点这个时候基本上没什么人访问)的时候自动备份。

3、使用逻辑备份方式:恢复速度1分钟左右的差距我是可以容忍的。所以我为了跨平台,我更加愿意使用逻辑备份。存储sql文件形式。

4、每天都进行备份。由于是在凌晨的时候mysqldump去锁定,访问数据库服务器。对服务器几乎没什么影响。所以每天都可以备份。每天都一个sql文件。那么将会很多文件。

所以,每次备份成功后。删除以前的文件。保留最近一个星期的备份sql文件。

备份工具的路径:/usr/bin/mysqldump

备份数据保存路径:/data/backdata/

五、备份脚本的编写

思路:

1、在shell脚本中调用mysqldump生成备份文件(这个工具可以生成sql文件到磁盘上去);

2、为了方便以后查找。每次备份的记录记录成日志形式。几点进行了备份操作,生成了什么文件名称。这样可以方便以后查阅哪天是否没有成功备份删除的文件作为日志信息也记录下来。

3、让linux下的crontab进程调用脚本执行。

命令:crontab -e

打开的文件中加入代码:0 05 * * * 脚本的路径/mysqlback.sh

mysqlback.sh的内容:


【编辑推荐】

  1. MySQL主从服务器数据一致性的核对与修复
  2. Linux下的Mysql数据库自动备份
  3. MySQL集群性能优化指南
  4. 技术实战:基于 MHA 方式实现 MySQL 的高可用
  5. 如何从MySQL/InnoDB数据文件中的恢复数据
  6. MySQL数据库运维的五大指标
  7. Linux 环境下快速部署 MySQL 的替代方案

原文地址:https://www.cnblogs.com/HKROnline-SyncNavigator/p/11015722.html

时间: 2024-11-06 03:47:30

MYSQL自动备份策略的方案的相关文章

MYSQL自动备份策略的选择与优劣点分析

目前流行几种备份方式:1.逻辑备份:使用mysql自带的mysqldump工具进行备份.备份成sql文件形式.优点:最大好处是能够与正在运行的mysql自动协同工作,在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问).可能会阻止修改操作.sql文件通用方便移植.缺点:备份的速度比较慢.如果是数据量很多的时候.就很耗时间.如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据).那么服务就会影响的.

MYSQL自动备份策略的选择与实践

目前流行几种备份方式: 1.逻辑备份:使用mysql自带的mysqldump工具进行备份.备份成sql文件形式.优点:最大好处是能够与正在运行的mysql自动协同工作,在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问).可能会阻止修改操作.sql文件通用方便移植. 缺点:备份的速度比较慢.如果是数据量很多的时候.就很耗时间.如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据).那么服务就会影响

MYSQL自动备份策略的选择与实践详解

目前流行几种备份方式: 1.逻辑备份:使用mysql自带的mysqldump工具进行备份.备份成sql文件形式. 优点:最大好处是能够与正在运行的mysql自动协同工作, 在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问).可能会阻止修改操作.sql文件通用方便移植. 缺点:备份的速度比较慢.如果是数据量很多的时候.就很耗时间.如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据).那么服务就会

mysql自动备份策略

目标:每7天做一个完整备份,每天做一份binlog日志,第二周将之前的备份删除并产生新的完整备份和binlog日志,备份要求每天2:00自动完成 mysql 版本:mysql5.5 1.开启binlog vim /etc/my.cnf [mysqld] log-bin=binlog 2.重启mysqld服务 /etc/init.d/mysqld restart 验证binlog开启成功 /usr/local/mysql/var/下会出现binlog.0000001,binlog.index文件

MySQL自动备份并提交到码云Git仓库 – 任我乐

之所以选择码云是因为其私有仓库是免费的,而私有仓库是收费,约7+美元一月,对于个人开发者似乎也是一笔不小的费用. 在创建自动将备份上传到码云仓库前,建议您先看下以下文章: <如何通过Git将本地项目推送到码云或GitHub> 对于不太了解的朋友来说,此文章非常有用,否则在进行以下步骤时会出现各种报错. 实现方案: 登录到码云 创建私有仓库 服务器生成ssh公钥 创建SSH公钥 以上步骤在上文中有详细说明. 1.创建shell脚本文件: $ cd /mnt/renwole $ vim mysql

Mysql自动备份

Mysql自动备份 批处理命令: set"Ymd=%date:~,4%%date:~5,2%%date:~8,2%" set"hMs=%time:~,2%%time:~3,2%%time:~6,2%" mysqldump-uroot --password=password weixin> D:\mysql_back\weixin_%Ymd%_%hMs%.sql 命令解释 要用mysqldump需要设置环境变量 Mysqldump.exe程序在mysql安装目录

Windows下MYSQL自动备份批处理

windows下MYSQL自动备份批处理 2011-05-04 09:16:45|  分类: mysql|举报|字号 订阅 按系统时间进行备份 注意mysql安装路径中如果有空格.就要把,.bat文件拷到相应目录下面. 1.按系统时间进行直接拷贝 net stop mysqlxcopy data\*.* d:\bonadb\%date:~0,10%\ /y /s/enet start mysql 2.用压缩软件,压缩备份 net stop mysqlc:\progra~1\winrar\winr

java实现的MySQL自动备份和还原(struts2+Hibernate)---兼容 window+Linux

相信很多朋友都经历过数据库出问题的情况,我也同样(见我的上一篇博文:phpmyadmin误删表后的恢复过程(心惊胆跳啊)   ).如果数据很大或者很重要,那么恢复起来是相当困难的,所以我们在做一个相对完善的系统时,数据库的备份/还原功能是必不可少的.本文将在javaEE环境下实现MySQL的自动备份/还原,使用了struts2和hibernate框架,MySQL版本是5.1.16. 下图展示的是web application的执行流程, Timer是在一个随着application启动而启动的s

linux下的mysql自动备份shell

#!/bin/bash # mysql 的备份脚本 # 备份原理: # 1 # 使用列举出所有的库; # 2 # 使用每个库,列举出每张表,除了指定忽略的库; # 3 # 使用mysqldump 导出每一张表到文件:主机名/年月日/库/表.mysqldump.sql # 4 # 验证每张表的sql文件是否包含完成标志; # 5 # 压缩每个sql文件并删除本sql文件 # 6 # 强制删除超过x天的备份文件夹全部文件 # 7 # 发送处理日志到指定email # 8 # 请配合同步工具多处服务器