如何使用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 ...
随机推荐
- How to install tcpping on Linux.md
To install tcptraceroute on Debian/Ubuntu: $ sudo apt-get install tcptraceroute To install tcptracer ...
- 使用js dom和jquery分别实现简单增删改
<html><head> <meta http-equiv="Content-Type" content="text/html; chars ...
- Pycharm常用的使用方法
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制. ...
- spring cron 定时任务
文章首发于个人博客:https://yeyouluo.github.io 0 预备知识:cron表达式 见 <5 参考>一节. 1 环境 eclipse mars2 + Maven3.3. ...
- uva 116 单向TSP
这题的状态很明显. 转移方程就是 d(i,j)=min(d(i+1,j+1),d(i,j+1),d(i-1,j+1)) //注意边界 我用了一个next数组方便打印结果,但是一直编译错误,原来是不能用 ...
- 【BZOJ3309】DZY Loves Math
Time Limit: 5000 ms Memory Limit: 512 MB Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * ...
- react——一个todolist的demo
代码如下: function ToDoListHeader(props) { return <h1 className={props.className}>ToDoList</h1& ...
- caffe之路-SIGTERM信号捕捉
Caffe在1.0版本仅支持两种信号的处理: 1) SIGHUP 2) SIGINT SIGHUP:caffe接收到此信号后进行snapshot,并不会中断caffe的训练. SIGINT:caffe ...
- Luogu P1596 [USACO10OCT]湖计数Lake Counting
题目描述 Due to recent rains, water has pooled in various places in Farmer John's field, which is repres ...
- nimi SearchEngin 项目思路及算法
最近做一个轻量文本搜索项目,在项目实行过程中,如果使用余弦求网页相似度,不能适应海量网页查重.看了那本<这就是搜索引擎 核心技术详解>后,对simhash算法有一定的理解,并且喜欢上了这 ...