如何使用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 ...
随机推荐
- 【Unity3D技术文档翻译】第1.3篇 创建 AssetBundles
上一章:[Unity3D技术文档翻译]第1.2篇 为打包 AssetBundles 准备资产 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced ...
- python调用百度语音(语音识别-斗地主语音记牌器)
一.概述 本篇简要介绍百度语音语音识别的基本使用(其实是斗地主时想弄个记牌器又没money,抓包什么的又不会,只好搞语音识别的了) 二.创建应用 打开百度语音官网,产品与使用->语音识别-> ...
- Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP
nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...
- java打包项目将配置文件放在包外面(后续还会有补充)
项目中也经常单独将一部分功能独立做Java Project,然后打成jar包供其他项目调用.如果jar包中需要读取配置文件信息,则很少把该配置打进jar包,因为它不方便修改,更多都是采用jar包读取外 ...
- 第二十章 Django数据库实战
第二十章 Django数据库实战 第一课 获取单表单数据的三种方式: urls.py中的路由代码: path('busniess',views.busniess), views.py中代码: def ...
- ContentProvider、ContentResolver、ContentObserver之间的关系
ContentProvider.ContentResolver.ContentObserver之间的关系 ContentPRrovider: * 四大组件的内容提供者,主要用于对外提供数据 * 实现各 ...
- codeforce-748A
简单判断一下就行. AC代码: #include<cstdio> int main(){ int n,m,k; while(scanf("%d%d%d",&n, ...
- Enable multi-tenancy on ironic
Multi-tenancy 是openstack ironic从Ocata版本开始支持的新特性,通过network-generic-switch插件控制交换机,Ironic可以实现在不同租户间机网络隔 ...
- mongodb副本集搭建过程中的问题和解决技巧
在我以往的认知中,一个系统一旦正式上线,多半不会轻易的迁移服务器,尤其是那种涉及到多个关联应用,涉及到多台硬件服务器的系统,因为这种迁移将是牵一发而动全身的. 但是,却仍然有这种情况存在,就如我这几天 ...
- Ffmpeg简介
http://www.ffmpeg.com.cn/index.php/%E9%A6%96%E9%A1%B5 FFmpeg is a complete solution to record, conve ...