如何使用mysqldump备份数据库
一、背景
在开发项目中,数据库是核心资产。除了做主备冗余增加可靠性外,定期备份数据也是必须的。
使用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备份数据库的更多相关文章
- 使用Mysqldump 备份数据库
使用Mysqldump 备份数据库 1.备份一个数据库 mysqldump --user [user name] --password=[password] [database name] > ...
- mysqldump备份数据库时出现when using LOCK TABLES
用mysqldump备份数据库时,如果出现when using LOCK TABLES,解决办法是加上 --skip-lock-tables 例如: 用mysqldump备份数据库时出现 29: Fi ...
- mysqldump备份数据库
1. 备份数据库-->sql文件 mysqldump -h192.168.1.100 -uuser -p123 --databases name > /tmp/databasedump.s ...
- mysqldump 备份数据库脚本
创建备份数据库脚本mysql_backup.sh,内容如下: #!/bin/bash export PATH=/bin:/usr/bin:/usr/local/bin TODAY=`date +&qu ...
- PHP使用mysqldump备份数据库(以及还原)
导出数据实例如下: <?php $mdb_host = $g_c["db"][0]["managertool"]["host"]; / ...
- mysqldump备份数据库时排除某些库
说明:使用mysqldump –all-databases会导出所有库.但如果做主从,从主库dump出数据时,我们是不需要也不想要information_schema 和 mysql 库的.数据库少的 ...
- mysqldump 备份数据库用户所需要的权限
mysqldump 所需要的权限说明: 1.对于table 来说mysqldump 最少要有select 权限. 2.对于view 来说mysqldump 要有show view 权限. 3.对于tr ...
- 用mysqldump备份数据库
格式:/usr/local/mysql/bin/mysqldump -hip -Pport -uuser -ppasswd --set-gtid-purged=off --database aa & ...
- 使用mysqldump备份数据库
#! /bin/shday_str=`date +%j`day=`date +%Y%m%d`days_str=`echo "$day_str % 60"|bc`cd /home/d ...
随机推荐
- 为何要部署IPV6
·IPv4的局限性: 1.地址空间的局限性:IP地址空间的危机由来已久,并正是升级到IPv6的主要动力. 2.安全性:IPv4在网络层没有安全性可言,安全性一直被认为是由网络层以上的层负责. ...
- Mybatis查询,resultMap="Map" 查询数据有空值,导致整个map为空的问题
解决方法,不要使用Map接收,使用HashMap或者LinkHashMap,都可以. resultMap="Map" 替换为: resultMap="HashMap&qu ...
- Linux常用命令详解(一) -- 处理目录常用命令
ls:列出目录 作用:查看linux文件夹包含的文件以及其权限(包括目录.文件夹.文件权限)和目录信息等 命令格式:ls [选项] [文件或目录] 选项或参数: ...
- Entity Framework——记录执行的命令信息
有两种方法可以记录执行的SQl语句: 使用DbContext.Database.Log属性 实现IDbCommandInterceptor接口 一 使用DbContext.Database.Log属性 ...
- idea出现Error:Maven Resources Compiler: Maven project configuration required for module 'market' isn't available.
idea出现如下错误解决办法 1.重新在Build-Rebuild project 既可以解决啦
- MySQL的InnoDB引擎与MyISAM引擎
MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与 ...
- 项目中常用的19条MySQL优化
声明一下:下面的优化方案都是基于 " Mysql-索引-BTree类型 " 的 一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单 ...
- hdu 2047递推
A[N]表示以E或者F结尾的情况下的方案数,B[N]表示以O结尾的情况下的方案数,F[N]=3*A[N-1]+2*B[N-1] 同时,A[N]=2*B[N-1]+2*A[N-1],B[N-1]=A[N ...
- HDU - 3533 bfs [kuangbin带你飞]专题二
看了好久的样例才看懂. 题意:有一个人要从(0,0)走到(n,m),图中有k个碉堡,每个碉堡可以向某个固定的方向每隔t秒放一次炮,炮弹不能穿越另一个碉堡,会被阻挡.人在移动的过程中不会被炮弹打到,也就 ...
- java网络编程(2)——UDP与TCP
首先,先介绍这两种协议: UDP:UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互 ...