一、背景

在开发项目中,数据库是核心资产。除了做主备冗余增加可靠性外,定期备份数据也是必须的。

使用mysqldump备份数据具有操作简单,备份和恢复时间短的优点(mysqldump备份数据生成的是批量insert语句,恢复数据时间比navcat导出的逐条插入方式快不只一个数量级)。

总之、如果你使用的是mysql数据库,需要备份数据,使用mysqldump就没错了。

二、解决方案

开发一个备份数据库的批处理脚本,自动完成多服务器上多数据库的备份、数据压缩工作。

1、首先,准备环境

建一个backup_db文件夹:

说明:mysql.exe、mysqldump.exe从mysql数据库bin目录下拷贝。7z.exe和7z.dll从7z安装目录下拷贝(推荐使用7z,免费又好用)。

2、其次,开发脚本

编辑上面截图中的backup.bat文件。

@echo off
set curDir=%CD%

::1、初始化待备份数据库IP地址与数据库名称的对应关系
set dbIpMap="192.168.1.102,testdb1"^
 "192.168.1.102,testdb2"^
 "192.168.1.102,testdb3"

::2、创建存放数据库备份文件的临时文件夹
set folderName=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
mkdir "%curDir%\%folderName%"

::设置变量延时赋值
setlocal ENABLEDELAYEDEXPANSION

::3、循环备份数据库中的所有表结构和数据
for %%a in (%dbIpMap%) do (

    set dbPair=%%a

    ::删除引号
    set dbip=!dbPair:"=!

    @echo 正在备份数据库:!dbip!...

    for /f "delims=, tokens=1,2" %%i in ("!dbip!") do (
        set ip=%%i
        set dbName=%%j

        mysqldump -h192.168.1.102 -uroot !dbName!>"%curDir%\%folderName%\!dbName!.sql"
    )

    @echo 备份数据库完成!

    ::备份的文件可能比较大,做一下压缩
    7z a "%curDir%\%folderName%\!dbName!.zip" "%curDir%\%folderName%\!dbName!.sql"

    ::备份后删除原始文件
    del /f "%curDir%\%folderName%\!dbName!.sql"
)

编写完上面的批处理脚本后,可以把它添加到操作系统的定时任务里面,这样就每天定时备份了,不用人工干预。

三、写在后面的话

备份文件经过压缩后已经极大缩小了(文本文件的压缩比是很高的),但日积月累还是可能很占磁盘空间,特别是数据量很大的情况下。

可以再加一些脚本处理,将压缩后的文件上传到公司的配置库上,这样既解决了磁盘空间问题也解决了防数据丢失的问题。这块要看公司使用的是什么配置库, SVN/ClearCase/Git使用的命令不一样,可以翻一手册;都比较简单。

如何使用mysqldump备份数据库的更多相关文章

  1. 使用Mysqldump 备份数据库

    使用Mysqldump 备份数据库 1.备份一个数据库 mysqldump --user [user name] --password=[password] [database name] >  ...

  2. mysqldump备份数据库时出现when using LOCK TABLES

    用mysqldump备份数据库时,如果出现when using LOCK TABLES,解决办法是加上 --skip-lock-tables 例如: 用mysqldump备份数据库时出现 29: Fi ...

  3. mysqldump备份数据库

    1. 备份数据库-->sql文件 mysqldump -h192.168.1.100 -uuser -p123 --databases name > /tmp/databasedump.s ...

  4. mysqldump 备份数据库脚本

    创建备份数据库脚本mysql_backup.sh,内容如下: #!/bin/bash export PATH=/bin:/usr/bin:/usr/local/bin TODAY=`date +&qu ...

  5. PHP使用mysqldump备份数据库(以及还原)

    导出数据实例如下: <?php $mdb_host = $g_c["db"][0]["managertool"]["host"]; / ...

  6. mysqldump备份数据库时排除某些库

    说明:使用mysqldump –all-databases会导出所有库.但如果做主从,从主库dump出数据时,我们是不需要也不想要information_schema 和 mysql 库的.数据库少的 ...

  7. mysqldump 备份数据库用户所需要的权限

    mysqldump 所需要的权限说明: 1.对于table 来说mysqldump 最少要有select 权限. 2.对于view 来说mysqldump 要有show view 权限. 3.对于tr ...

  8. 用mysqldump备份数据库

    格式:/usr/local/mysql/bin/mysqldump -hip -Pport -uuser -ppasswd --set-gtid-purged=off  --database aa & ...

  9. 使用mysqldump备份数据库

    #! /bin/shday_str=`date +%j`day=`date +%Y%m%d`days_str=`echo "$day_str % 60"|bc`cd /home/d ...

随机推荐

  1. Python 中的闭包

    通常来说,函数中的局部变量在函数调用结束的时候不能再被引用,所分配的空间也会被回收. 但是通过闭包这种技术,函数调用结束了,它的局部变量的值还可以保存在闭包里. 试举一例: def make_adde ...

  2. Struts2 基本的ResultType 【学习笔记】

    在struts2-core.jar/struts-default.xml中,我们可以找到关于result-type的一些配置信息,从中可以看出struts2组件默认为我们提供了这 些result-ty ...

  3. 用Putty通过SSH访问Linux服务器

    1,sudo apt-get install ssh 2,sudo service ssh restart 3,重启ssh成功后,就可以直接用Putty访问服务器.

  4. 02 浅析Spring的AOP(面向切面编程)

    1.关于AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.O ...

  5. Windows Sublime Text 配置Linux子系统(WSL)下的 gcc/g++ 编译环境

    0. 简介(若已了解背景可以跳过此部分) Windows 10 Build 14316以上版本中加入了"Windows系统的Linux子系统"(Windows Subsystem ...

  6. 业余草分享 Spring Boot 2.0 正式发布的新特性

    就在昨天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误, ...

  7. java并发 - 自底向上的原理分析

    [TOC] 事先声明,我只是java并发的新手,这篇文章也只是我阅读<java并发编程的艺术>一书(内容主要涉及前3章)的一些总结和感悟.希望大家能多多讨论,对于错误的地方还请指出. 0. ...

  8. php程序员的成长之路

    第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操作) 目标:能够完成基本的LNMP系统安装,简单配置维护:能够做基本的简单系统的php开发:能够在PHP中型系统中支 ...

  9. c#判断外部可执行程序是否已打开(若未打开则打开)

    #region 通过当前代码执行路径向上找到相关exe,并根据processes.Length判断是否已启动 private bool CheckAndOpenExe(string exeName) ...

  10. 修改windows7中文件的权限

    1.修改ntkrnlpa.exe的权限 2.鼠标右键,选择"属性" 3.单击"安全"选项,选择"高级" 4.在高级安全设置中,选择" ...