mysql数据库自动备份脚本
MySQL数据库备份与还原
备份和恢复数据
生成SQL脚本
在控制台使用mysqlmp命令可以用来生成指定数据库的脚本文本,但要注意,脚本文本中只包含数据库的内容,而不会存在创建数据库的语句!所以在恢复数据时,还需要自已手动创建一个数据库之后再去恢复数据。
mysqlmp –u用户名 –p密码 数据库名>生成的脚本文件路径
现在可以在C盘下找到mydb1.sql文件了!
注意,mysqlmp命令是在Windows控制台下执行,无需登录mysql!!!
执行SQL脚本
执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!
执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL 脚本来操作数据库!大家都知道,在黑屏下编写SQL语句时,就算发现了错误,可能也不能修改了。所以我建议大家使用脚本文件来编写SQL代码,然后执行之!
SOURCE C:\mydb1.sql
注意,在执行脚本时需要先行核查当前数据库中的表是否与脚本文件中的语句有冲突!例如在脚本文件中存在create table a的语句,而当前数据库中已经存在了a表,那么就会出错!
还可以通过下面的方式来执行脚本文件:
mysql -uroot -p123 mydb1<c:\mydb1.sql
mysql –u用户名 –p密码 数据库<要执行脚本文件路径
这种方式无需登录mysql!
Ⅱ 好用的mysql备份工具
我以前备份都使用mysqlmp 导成文本文件便于存放 但是速度很慢的 最快的备份方法当然是直接把数据目录一份了 但是一般来说 都要关闭 MySQL的服务才能做 不然在你的时候刚好还有人读写表那麻烦就大了 这次朋友介绍我使用mysqlhot 就相当于上面 不过他可以热备份 他备份非常快 我测试一个 G的mysql他备份的时间在 分钟内完成
下面是它的介绍
mysqlhot是一个Perl脚本搭粗孝 最知稿初由Tim Bunce编写并提供 它使用LOCK TABLES FLUSH TABLES和cp或scp来快速备份数据库 它是备份数据库或单个表的最快的途径 但它只能运行在数据库目录所在的机器上 mysqlhot只用于备份MyISAM 它运行在Unix和NetWare中
使用方法见下面的脚本 加入crotab中吧
#!/bin/sh # Name:mysqlbackup sh # PS:MySQL DataBase Backup Use mysqlhot script # Last Modify: # 定义变量 请根据具体情况修改 # 定义脚本所在目录 scriptsDir=`pwd`
# 数据库的数据目录 dataDir=/var/lib/mysql
# 数据备份目录 tmpBackupDir=/tmp/mysqlblackup backupDir=/backup/mysql
# 用来备份数据库的用户名和密码 mysqlUser=root mysqlPWD= you password
# 如果临时备份目录存在 清空它 如果不存在则创建它 if [[ e $tmpBackupDir ]]; then rm rf $tmpBackupDir/* else mkdir $tmpBackupDir fi
# 如果备份目录不存在则创建它 if [[ ! e $backupDir ]];then mkdir $backupDir fi
# 得到数据库备份列表 在此可以过滤不想备份的数据库 for databases in `find $dataDir type d | 凳敬 sed e s//var/lib/mysql/// | sed e s/test// `; do if [[ $databases == ]]; then continue else
# 备份数据库 /usr/bin/mysqlhot user=$mysqlUser password=$mysqlPWD q $databases $tmpBackupDir dateTime=`date +%Y %m %d %H:%M:%S ` echo $dateTime Database:$databases backup success! >>MySQLBackup log fi done
# 压缩备份文件 date=`date I` cd $tmpBackupDir tar czf $backupDir/mysql $date tar gz /
#End完成
加入到crontab中设置每周 运行 * * /backup/blackup sh
注意:恢复数据库到备份时的状态
mysqlhot 备份出来的是整个数据库目录 使用时可以直接拷贝到 mysqld 指定的 datadir (在这里是 /var/lib/mysql/)目录下即可 同时要注意权限的问题 如下例
shell> cp rf db_name /var/lib/mysql/
shell> chown R mysql:mysql /var/lib/mysql/ (将 db_name 目录的属主改成 mysqld 运行用户)
本套备份策略只能恢复数据库到最后一次备份时的状态 要想在崩溃时丢失的数据尽量少应该更频繁的进行备份 要想恢复数据到崩溃时的状态请使用主从复制机制(replication)
小技巧:
不想写密码在shell中的话 可以在root的home目录下建立一个f文件 以便让mysqlhot从中读取用户名/密码 [mysqlhot] user=root password=YourPassword 然后安全起见 chmod一下 chmod ~/f
附:mysqlhot常用参数
· allowold如果目标存在不放弃(加上一个_old后缀重新命名它) · checkpoint=db_name tbl_name在指定的db_name tbl_name插入检查点条目 · debug启用调试输出 · dryrun n报告动作而不执行它们 · flushlog所有表锁定后刷新日志 · keepold完成后不删除以前(重新命名的)的目标 · method=mand复制方法(cp或scp) · noindices备份中不包括全部索引文件 这样使备份更小 更快 可以在以后用myisamc rq重新构建索引 · password=password p password当连接服务器时使用的密码 请注意该选项的密码值是不可选的 不象其它MySQL程序 · port=port_num P port_num当连接本地服务器时使用的TCP/IP端口号 · quiet q除了出现错误时保持沉默 · regexp=expr复制所有数据库名匹配给出的正则表达式的数据库 · socket=path S path用于连接的Unix套接字文件 · suffix=str所复制的数据库名的后缀 · tmpdir=path临时目录(代替/tmp) · user=user_name u user_name当连接服务器时使用的MySQL用户名
lishixin/Article/program/MySQL/201311/29401
Ⅲ 如何使用crontab每天自动备份Mysql数据库
1、建立自动备份脚本
为了使数据库备份和恢复的符合我们的实际要求(备份保留七天,每天凌晨备份一次),用一段符合要求的Shell脚本来实现整个备份过程的自动化。
[root@mysqltest ~]# vim mysql-backup.sh
#!/bin/bash
##作者:Barlow##
##最后修订:2013-6-25##
#脚本作用:备份Mysql数据库
#
#设定备份保留天数K
K=7
#
TODAY=`date '+%Y%m%d'`
KDAY=`date -d "$TODAY - $K day" '+%Y%m%d'`
BACKDIR=/var/mysqlbak/$TODAY
KDAYDIR=/var/mysqlbak/$KDAY
mkdir -p $BACKDIR
#
# The Password of MySQL
ROOTPASS=******* ##将*替换为实际敏闭mysql数据库的root密码
#
# Get the Name of Database
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
#
# Backup with Database
for dbname in $DBLIST
do
mysqlhot $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhot
done
#
#删除过期备份
if [ -d "$KDAYDIR" ];then
rm -rf $KDAYDIR
exit
fi
改变脚本权限,root具有完全权限,其他用户没有任何权限:
[root@mysqltest ~]# chmod 700 mysql-backup.sh
运行一次脚本:
[root@mysqltest ~]# ./mysql-backup.sh
查看运行弯没结果:
[root@mysqltest ~]# ll /var/mysqlbak/20130625/
mysql/ wordpress/
[root@mysqltest ~]# ll /var/mysqlbak/20130625/
总用量 8
drwxr-x---. 2 mysql mysql 4096 6月 25 14:26 mysql
drwxr-x---. 2 mysql mysql 4096 6月 25 14:26 wordpress
可以看到备份已经埋拿纳成功完成。
2、创建自动任务每天运行
[root@mysqltest ~]# crontab -e
00 01 * * * /root/mysql-backup.sh
##每天凌晨1点运行一次
Ⅳ linux自动备份MySQL数据库的实用方法
MySQL定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下面的方法即可让系统定期备份数据。
◆1、创建备份文件夹
#cd /www
#makedir backup
◆2、编写运行脚本
#vi autobackup
写入以下内容:
filename=`date +%Y%m%d`
mysql_bin_dir/mysqlmp _opt dataname -u user -ppassword | gzip
/www/mysqlbackup/name$filename.gz
保存退枝裤出
说明:
(1)mysql_bin_dir:mysql的bin路径;
(2)dataname:数据库名;
(3)user:数据库用户名;
(4)password:陆搭岁用户密码;
(5)name:早睁自定义备份文件前缀标识。
如上例,将自动备份mysql数据库,并以gzip压缩方式存储,文件名为name20080101.gz的形式。
◆3、为脚本添加执行权限
#chmod +x autobackup
◆4、让crontab来完成定期执行的任务
这一步中,Redhat的方法会不一样,后面专门给出。
编辑crontab:
#vi /etc/crontab
在最后一行中加入:
01 5 * * * root /www/autobackup
每天5点运行脚本,也可以修改5为其他指定时间。
Redhat方法:
Redhat的crontab采用按时间调用4个目录(/etc/cron.hourly:每小时;/etc/cron.daily:每天;/etc/cron.weekly:每周;/etc/cron.monthly:每月)中脚本出来运行的方式。
Redhat中只需要将刚才编辑的脚本复制到相应的目录即可。
◆5、重启crontab
#/etc/rc.d/init.d/crond restart
完成。
Ⅳ 怎样在Windows系统下编写批处理备份MYSQL数据库的脚本呢
"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqlmp.exe" -uroot -hlocalhost -p密码 --all-databases>d:\%data%.sql 看你需要备份知空哪个数据库穗孙 只需要修改all就可搭族瞎以了
Ⅵ windows server2008系统实现mysql自动备份数据库脚本
备份命令本身没有问题,估计是你的密码不正确吧,你如果是判宏在dos窗口下运行的,请看看运行后,是则铅否掘盯册有错误的提示。
Ⅶ 请问mysql怎么自动备份数据库
数据库的自动备份,可以减轻维护者的工作量也便于系统恢复,对于比较重要的数据库,最好还是设置下自动备份。
工具/原料
navicat for mysql
mysql 5.5
方法/步骤
打开navicat客户端,连上mysql后,双击左边你想要备份的数据库。点击“计划”,再点击“新建批处理作业”。
Ⅷ SQL数据库自动备份(mysql数据库自动备份)
首先利用数据库自带的命令行工具将数据库备份下来,例如对MySQL将数据库备份到D:data.sql(具体查阅数据库说明书)
mysqlmp<"D:data.sql"
然后将该文件以日期参量重名名。如果指定保留N天的数据可能有一定困难,不过既然要求7天,不妨以星期作为区分。
假设文件名具有格式“data_日期.sql”,则更名语句为(建议先创建后改名,对于很大的数据库可能要备份很长时间并超过0点)
ren"data.sql""data_%date%.sql"
若系统时间格式为“2009-04-05星期日”,则产生文件“data_2009-04-05星期日.txt”。
获取星期几的语句:%date:~11,3%
其中11表示从第11个字符开始(从0开始计算),总共截取3个字符。由此可获得字符串“星期日”。重名名前,删除以data_开头,包含“星期日”的文件
del"data_*%date:~11,3%*.sql"
这样就把上星期的那个文件删除了。
注意:如果系统日伍腊期格式与上面的不一致,数字需重新计算,特别是若日期中含有“/”、“:”等字符会导致创建文件失败纯悔,此时年月日星期均需手动提取,例如对“04/05/2009Sun”,应使用“%DATE:~6,4%%DATE:~0,2%%DATE:~3,2%%DATE:~11,3%”得到“20090405Sun”。查看日期格式可使用“echo%date%”。
另外,如果某项(时间格式、文件名、路径等)包含空格则必须使用引号。
脚本源代码
mysqlmp<"D:data.sql"
del"D:data_*%date:~11,3%*.sql"
ren"D:data.sql""data_%date%.sql"
编为一个bat文件,添加计划任务,每天定时腔裤滑执行即可。
Ⅸ CentOS下备份MYSQL数据库
一、编写备份脚本
二、更改备份脚本权限
chmod u+x /usr/local/tools/mysql_dy_backup.sh
三、设置定时执行脚本任务
crontab -e
30 22 * * * /usr/local/tools/mysql_dy_backup.sh
Ⅹ linux系统下mySQL数据库 备份方法和脚本
方法一、适合所有格式的mysql数据库,通过对数据库导出导进写个脚本定时执行:
1.导出整个数据库 mysqlmp -u 用户名 -p 数据库名 > 导出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc > /存放路径/wcnc.sql
2.导出一个表 mysqlmp -u 用户名 -p 数据库名 表名> 导出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc users> /存放路径或培/wcnc_users.sql
3.导出一个数据库结构 mysqlmp -u wcnc -p -d --add-drop-table smgp_apps_wcnc >/存放路径/wcnc_db.sql
定义:
-d 没有数据
--add-drop-table 在每个create语句之前增加一个drop table
4.导闷谨入数据库 常蚂团基用source 命令 进入mysql数据库控制台:
如mysql -u root -p mysql>use 数据库
方法二、针对mysql数据表格式为MyISAM的
假如数据文件在/var/lib/mysql
那么直接写个脚本
cp -r /var/lib/mysql /备份到的文件夹路径
隔机备份用rsync增量,或定时完整备份。