浅谈mysql备份

mysql备份就哪些场景需要备份呢?这样的备份有什么作用呢?切记备份的目的是为了恢复。

场景一:

开发同学要求dba update或者delete一些数据,此时你觉得有必要备份改变前或者删除前的数据么。如果有必要你会怎么做呢?

处理方法:

mysqldump --login-path=xxxx --single-transaction -t dbname tablename -w ‘xxx=xxx‘ > /tmp/xxxx`date +%F_%T`_tmp.sql

有了这样一个保障,你就算出现问题删错或修改错误也比保留了原始数据。可能你就不用在binlog里面去找相关数据了。

介绍下mysqldump 接的几个参数:

--login-path这个是5.6的新特性,其目的可以不用明文把密码显示出来,后续我会出一章介绍这个特性。

--single-transaction 其作用是不会锁表

-t 只备份数据不备份表结构

-w 指定需要备份的数据的条件,举个栗子 -w ‘modify_time <=2016-05-31 23:59:59‘也就是说只备份根据modfiy_time2016年6月之前的数据。

场景二:

在主从结构中如何备份?首先我们要了解什么情况需要恢复。

故障产生原因1:程序里面update少了个where语句或delete少了个语句。

解决方法无非就是拿上次的备份结合binlog找出破坏语句的那个pos点拿到测试机器去做相关还原,还可能要停一下业务,这样的时间会不叫长。

当然也可以写根据主键写闪回脚本逆向转换binlog,但是这样也不一定是没有风险的。

如果你做了数据库的延时同步可以根据程序update的条件将数据取出倒回原表,这个不是一件开心的事情吗?

这样做需要在从库上多加一个实例或者用台机器单独来做延时同步,具体延时多久呢?我的做法是延时2小时,如果2小时还没发现,那也是蛮悲剧的,当然你也可以根据业务来做这个同步时间的设定。

如果怕数据因为主节点的宕机数据未同步到从节点,建议把binlog日志备份到其他机器上去,5.6新特性可以去解决这一问题。

做主从的相关参数:

change master to master_host = ‘xxx,

master_user = ‘xxxxx‘

master_password = ‘xxxx‘

master_port = xxxx,

master_log_file = ‘mysql_bin.000xxxxx‘

master_log_pos =452480390,

master_delay=7200;

start slave;

show slave status \G;

场景三:物理备份

物理备份也就是innobackupex,这个特点是速度快,很方便做主从,恢复也快,锁表时间也很短。但是他只能备份本地机器以及占用空间也比较大。压缩后和mysqldump压缩后相差很大。

可以用nfs等网络技术挂磁盘去做相关备份,解决无法备份到异服务器的问题。

本人提供一个增量备份脚本供参考:周日全备份,周一到周6增量备份。

#!/bin/bash
case `date "+zhou%w"` in
zhou0)
$innobackupex   --user=innobackup --password=123456 --no-timestamp  $backup_path/`date +%F_full` ;;
zhou1)
$innobackupex   --user=innobackup --password=123456 --no-timestamp --incremental --incremental-basedir=$backup_path/`date +%F_full -d "-1 day"`   $backup_path/`date +%F_incremental1` ;;
zhou2)
$innobackupex   --user=innobackup --password=123456 --no-timestamp --incremental --incremental-basedir=$backup_path/`date +%F_incremental1 -d "-1 day"`   $backup_path/`date +%F_incremental2`;;
zhou3)
$innobackupex   --user=innobackup --password=123456 --no-timestamp --incremental --incremental-basedir=$backup_path/`date +%F_incremental2 -d "-1 day"`   $backup_path/`date +%F_incremental3`;;
zhou4)
$innobackupex   --user=innobackup --password=123456 --no-timestamp --incremental --incremental-basedir=$backup_path/`date +%F_incremental3 -d "-1 day"`   $backup_path/`date +%F_incremental4`;;
zhou5)
$innobackupex   --user=innobackup --password=123456 --no-timestamp --incremental --incremental-basedir=$backup_path/`date +%F_incremental4 -d "-1 day"`   $backup_path/`date +%F_incremental5`;;
zhou6)
$innobackupex   --user=innobackup --password=123456 --no-timestamp --incremental --incremental-basedir=$backup_path/`date +%F_incremental5 -d "-1 day"`   $backup_path/`date +%F_incremental6`;;
  *)  exit 1;;
esac

场景四:逻辑备份

逻辑备份即mysqldump工具去做备份,对于一些重要的表定期备份。

mysqldump --login-path=xxx --single-transaction -t dbname tablename > xxx.sql

如果表比较多可以写个for循环来处理。

#!/bin/bash
TABNAME=`/usr/local/mysql/bin/mysql --login-path=xxxxxx  -e "use dbname;show tables"`
for tabname in $TABNAME
do
/usr/local/mysql/bin/mysqldump --login-path=xxxxxx  -t --single-transaction   dbname $tabname > /xxxxxx/dbname.$tabname.sql
done
时间: 2024-07-28 13:46:04

浅谈mysql备份的相关文章

浅谈mysql主从复制的高可用解决方案

1.熟悉几个组件(部分摘自网络)1.1.drbd     —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID",开源软件,由 LINBIT 公司开发.DRBD 实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中.他是有内核 模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能.也就是说当你将数据写入本地的DRBD设备上的文件系统 时, 数据会同时被发送到网

浅谈MySQL索引背后的数据结构及算法

摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree索引,因为这是 平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论. 文章主要内容分为四个部分. 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础. 第二部分结合MySQL数据库中

浅谈mysql innodb缓存策略

浅谈mysql innodb缓存策略: The InnoDB Buffer Pool Innodb 持有一个存储区域叫做buffer pool是为了在内存中缓存数据和索引,知道innodb bufferpool怎么工作,和利用它读取频繁访问的数据,是mysql优化重要的方面. 理想状况下,把bufferpool的大小调整到足够大,留下足够的内存空间给其他该服务器上的进程(使其无缺页即可).bufferpool越大,innodb 月表现为内存型数据库,从硬盘上一次读取数据,之后并成了从内存中读取数

浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

浅谈Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁(抽象性,不真实存在这个锁) |--乐观锁(抽象性,不真实存在这个锁) 二.InnoDB与MyISAM Mysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB .查

浅谈MySQL数据库备份的几种方法

mysql常见的备份方式有:mysqldump.mysqlhotcopy.BACKUP TABLE .SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件.MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用.Innodb 所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,免费的方案可以是拷贝数据文件.备份 binlog,或者用 

运维角度浅谈MySQL数据库优化

一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影响的因素很多,比如慢查询.低效的查询语句.没有适当建立索引.数据库堵塞(死锁)等.当然,有测试工程师的团队

浅谈MySQL数据库优化

一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影响的因素很多,比如慢查询.低效的查询语句.没有适当建立索引.数据库堵塞(死锁)等.当然,有测试工程师的团队

(转)运维角度浅谈MySQL数据库优化

转自:http://lizhenliang.blog.51cto.com/7876557/1657465 一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影

从运维角度浅谈 MySQL 数据库优化

一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影响的因素很多,比如慢查询.低效的查询语句.没有适当建立索引.数据库堵塞(死锁)等.当然,有测试工程师的团队