当前位置:首页 > Mysql教程 > 列表

mysql数据备份导入导出说明和对应的shell脚本

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-29 11:13:36 浏览: 评论:0 

本文章来给大家介绍在mysql备份数据方法同时也介绍了与这些对应的shell脚本代码,希望有需要了解学习的朋友可进入参考.

1.导出整个数据库,–hex-blob 为有blob数据做的,防止乱码和导入失败用.

mysqldump -u 用户名 -p 数据库名 > 导出的文件名,代码如下:

mysqldump -u root -p --default-character-set=gbk --hex-blob i5a6 > i5a6.sql

2.导出一个表:mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名,代码如下:

mysqldump -u root -p i5a6  users> i5a6.sql

3.导出一个数据库结构,代码如下:

mysqldump -u root -p -d --add-drop-table i5a6 >d:/i5a6.sql

-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库

常用source 命令,进入mysql数据库控制台,如 mysql -u root -p,代码如下:

mysql>use 数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql),代码如下:

mysql>source d:/i5a6.sql

上面都是比较散的代码,下面我们来看shell代码,我首先要在本文带给你的是完整脚本,后面会对该脚本做说明,我假定你已经知道shell scripting、mysqldump和crontab.

数据库导出代码,代码如下:

  1. #!/bin/bash 
  2.  
  3. #1.数据库信息定义 
  4. mysql_host="192.168.1.1" 
  5. mysql_user="root" 
  6. mysql_passwd="root" 
  7.  
  8. #sql备份目录 
  9. root_dir="/backup" 
  10. back_dir="/backup/databases" 
  11. data_dir="databases" 
  12. store_dir="database" 
  13. if [ ! -d $back_dir ]; then 
  14.  mkdir -p $back_dir 
  15. fi 
  16.  
  17. #备份的数据库数组 
  18. db_arr=$(echo "show databases;" | mysql -u$mysql_user -p$mysql_passwd -h$mysql_host) 
  19. #不需要备份的单例数据库 
  20. nodeldb="test1" 
  21.  
  22. #当前日期 
  23. date=$(date -d '+0 days' +%Y%m%d) 
  24.  
  25. #zip打包密码 
  26. zippasswd="passwd" 
  27. zipname="lczh_"$date".zip" 
  28.  
  29.  
  30. #2.进入到备份目录 
  31. cd $back_dir 
  32.  
  33.  
  34. #3.循环备份 
  35. for dbname in ${db_arr} 
  36. do 
  37.  if [ $dbname != $nodeldb ]; then 
  38.   sqlfile=$dbname-$date".sql" 
  39.   mysqldump -u$mysql_user -p$mysql_passwd -h$mysql_host $dbname >$sqlfile 
  40.  fi 
  41. done 
  42.  
  43.  
  44. #4.tar打包所有的sql文件 
  45. tar -zcPpf $root_dir/$store_dir/$zipname --directory /  $root_dir/$data_dir 
  46. #打包成功后删除sql文件 
  47. if [ $? = 0 ]; then 
  48.  rm -r $data_dir 
  49. fi 

数据定期清理脚本,作用:定期清理14天前的备份文件,代码如下:

  1. #!/bin/bash - 
  2.  
  3. #1.参数配置 
  4.  
  5. #mysql文件备份目录 
  6. backup_dir1="/backup/test1/" 
  7. backup_dir2="/backup/test2/" 
  8. backdir_arr=($backup_dir1 $backup_dir2) 
  9.  
  10. #过期文件的时间 
  11. keep_time=14 
  12.  
  13. #当前所在星期,crontab在奇数的星期7执行 
  14. week=$(date +%W) 
  15. flag=`expr $week % 2` 
  16.  
  17.  
  18.  
  19. #2.清理过期文件,只在奇数星期7执行 
  20. if [ $flag -eq 1 ]; then 
  21.  for dir in ${backdir_arr[*]} 
  22.  do 
  23.   if [ -d $dir ]; then 
  24.    #查找14天之外的文件数据 
  25.    clean_arr=`find $dir -type f -mtime +$keep_time -exec ls {} ;` 
  26.    for cleanfile in ${clean_arr} 
  27.    do //phpfensi.com 
  28.     rm $cleanfile 
  29.    done 
  30.   fi 
  31.  done 
  32. fi 

crontab配置,代码如下:

0 5 * * 7  执行清理脚本

Tags: mysql数据备份 mysql导入导出

分享到: