1、mysqldump 命令工具说明

参数注解:
mysqldump 是采用SQL 级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。现在来讲一下 mysqldump 的一些主要参数:
 
--compatible=name 它告诉 mysqldump ,导出的数据将和哪种数据库或哪个旧版本的 MySQL 服务器相兼容。值可以为 ansi 、mysql323 、mysql40 、postgresql 、oracle 、mssql 、db2 、maxdb 、no_key_options、no_tables_options 、no_field_options 等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。
 
--complete-insert ,-c 导出的数据采用包含字段名的完整 INSERT 方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到 max_allowed_packet 参数的影响而导致插入失败。因此,需要谨慎使用该参数,至少我不推荐。
 
--default-character-set=charset 指定导出数据时采用何种字符集,如果数据表不是采用默认的 latin1 字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。
 
--disable-keys 告诉 mysqldump 在 INSERT 语句的开头和结尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM 表。
 
--extended-insert = true|false 默认情况下,mysqldump 开启 --complete-insert 模式,因此不想用它的的话,就使用本选项,设定它的值为 false 即可。
 
--hex-blob 使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响到的字段类型有 BINARY 、VARBINARY 、BLOB 。
 
--lock-all-tables ,-x 在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 --single-transaction 和 --lock-tables 选项。
 
--lock-tables 它和 --lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 选项。
 
--no-create-info ,-t 只导出数据,而不添加 CREATE TABLE 语句。
 
--no-data ,-d 不导出任何数据,只导出数据库表结构。
 
--opt 这只是一个快捷选项,等同于同时添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 选项。本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 --skip-opt 禁用。注意,如果运行 mysqldump 没有指定 --quick或 --opt 选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。
 
--quick ,-q 该选项在导出大表时很有用,它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。
 
--routines ,-R 导出存储过程以及自定义函数。
 
--single-transaction 该选项在导出数据之前提交一个 BEGIN SQL 语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB 。本选项和 --lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用 --quick 选项。
 

--triggers 同时导出触发器。该选项默认启用,用 --skip-triggers 禁用它。

2、例子

 

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

5、Shell脚本

 

上面都是比较散的代码,下面我们来看shell代码

我首先要在本文带给你的是完整脚本。后面会对该脚本做说明。我假定你已经知道shell scripting、 mysqldump和crontab。

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

#!/bin/bash

#1.数据库信息定义
mysql_host="192.168.1.1"
mysql_user="root"
mysql_passwd="root"
#sql备份目录
root_dir="/backup"
back_dir="/backup/databases"
data_dir="databases"
store_dir="database"
if [ ! -d $back_dir ]; then
 mkdir -p $back_dir
fi
#备份的数据库数组
db_arr=$(echo "show databases;" | mysql -u$mysql_user -p$mysql_passwd -h$mysql_host)
#不需要备份的单例数据库
nodeldb="test1"
#当前日期
date=$(date -d '+0 days' +%Y%m%d)
#zip打包密码
zippasswd="passwd"
zipname="lczh_"$date".zip"

#2.进入到备份目录
cd $back_dir

#3.循环备份
for dbname in ${db_arr}
do
 if [ $dbname != $nodeldb ]; then
  sqlfile=$dbname-$date".sql"
  mysqldump -u$mysql_user -p$mysql_passwd -h$mysql_host $dbname >$sqlfile
 fi
done

#4.tar打包所有的sql文件
tar -zcPpf $root_dir/$store_dir/$zipname --directory /  $root_dir/$data_dir
#打包成功后删除sql文件
if [ $? = 0 ]; then
 rm -r $data_dir
fi

数据定期清理脚本

作用
定期清理14天前的备份文件
 
 代码如下 复制代码

#!/bin/bash -
#1.参数配置
#mysql文件备份目录
backup_dir1="/backup/test1/"
backup_dir2="/backup/test2/"
backdir_arr=($backup_dir1 $backup_dir2)
#过期文件的时间
keep_time=14
#当前所在星期,crontab在奇数的星期7执行
week=$(date +%W)
flag=`expr $week % 2`
 
#2.清理过期文件,只在奇数星期7执行
if [ $flag -eq 1 ]; then
 for dir in ${backdir_arr[*]}
 do
  if [ -d $dir ]; then
   #查找14天之外的文件数据
   clean_arr=`find $dir -type f -mtime +$keep_time -exec ls {} ;`
   for cleanfile in ${clean_arr}
   do
    rm $cleanfile
   done
  fi
 done
fi

crontab配置

代码如下
0 5 * * 7  执行清理脚本

4、其他

 

最近在备份还原mysql 的时候发现,视图还原报错,无法创建视图,在网上查了下资料,找到以下信息:

1 、如果备份的数据库含有视图, 还原时需要把my.ini 中的character-set 改为latin1, 才能够还原视图。
2 、还原后, 需要把latin1 改为gb2312, 否则存储过程不能使用.
3 、存储过程不能随着数据库备份,对于存储过程的还原,还是通过手工复制SQL 语句,在QUERY 里执行。
感觉有点麻烦,于是又寻找其它方法,通过以下方法备份mysql 数据库后,再进行还原,就没有报错,视图也还原进去了:
#windows 下mysql 备份还原,可不用修改my.ini 来还原视图( 已验证)
mysqldump -uroot -p123 --default-character-set=gbk --opt --extended-insert=false --triggers -R --hex-blob -x db_name > f:\db.sql
 
mysql -uroot -p123 -f db_name < f:\db.sql
 
linux:
SQL 来备份 MyISAM 表:
/usr/local/mysql/bin/mysqldump -uroot -p123 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x db_name > db_name.sql
 
使用以下 SQL 来备份 Innodb 表:
/usr/local/mysql/bin/mysqldump -uroot -p123 --default -character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob --single-transaction db_name > db_name.sql

添加时间:

mysqldump -uroot --default-character-set=utf8 --hex-blob -p"kEy31kG_" gameonline | gzip > /data/mysqlback/gameonline`date +%Y-%m-%d_%H%M%S`.sql.gz

最近在备份还原mysql 的时候发现,视图还原报错,无法创建视图,在网上查了下资料,找到以下信息:
1 、如果备份的数据库含有视图, 还原时需要把my.ini 中的character-set 改为latin1, 才能够还原视图。
2 、还原后, 需要把latin1 改为gb2312, 否则存储过程不能使用.
3 、存储过程不能随着数据库备份,对于存储过程的还原,还是通过手工复制SQL 语句,在QUERY 里执行。
感觉有点麻烦,于是又寻找其它方法,通过以下方法备份mysql 数据库后,再进行还原,就没有报错,视图也还原进去了:
#windows 下mysql 备份还原,可不用修改my.ini 来还原视图( 已验证)
mysqldump -uroot -p123 --default-character-set=gbk --opt --extended-insert=false --triggers -R --hex-blob -x db_name > f:\db.sql
 
mysql -uroot -p123 -f db_name < f:\db.sql
 
linux:
SQL 来备份 MyISAM 表:
/usr/local/mysql/bin/mysqldump -uroot -p123 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x db_name > db_name.sql
 
使用以下 SQL 来备份 Innodb 表:
/usr/local/mysql/bin/mysqldump -uroot -p123 --default -character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob --single-transaction db_name > db_name.sql

MySQL mysqldump 数据备份的更多相关文章

  1. MySQL的数据备份以及pymysql的使用

    一.MySQL的数据备份 语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql #示例: #单库备份 mysqldump -uroot -p123 ...

  2. MySQL之mysqldump数据备份还原

    一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理 ...

  3. MySQL mysqldump数据导出详解

    介绍 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具:它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明 ...

  4. MySQL mysqldump数据导出详解 --dump-slave 注意事项

    http://www.cnblogs.com/chenmh/p/5300370.html 介绍 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工 ...

  5. MySQL之数据备份、pymysql模块

    一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接 ...

  6. 涂抹mysql笔记-数据备份和恢复

    <>物理备份和逻辑备份<>联机备份和脱机备份<>本地备份和远程备份<>完整备份和增量备份<>完整恢复和增量恢复<>复制表相关文件 ...

  7. mysql之数据备份与还原

    mysql数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境.但不能恢复到异构系统中如Windows. #2. 逻辑备份: 备份的是建表.建库.插入等操作所执行SQL语句,适用于中 ...

  8. MySQL mysqldump数据导出基本操作

    mysqldump mysqldump命令是mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中. 选项 --all-databases, -A:导 ...

  9. Python数据库MySQL之数据备份、pymysql模块

    一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接 ...

随机推荐

  1. 上海高校金马五校赛 F题:1 + 2 = 3?

    链接:https://www.nowcoder.com/acm/contest/91/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言26214 ...

  2. linux下面redis安装

    安装方法1redis1.下载安装包2.解压程序包tar -zxvf  redis-3.2.6.tar.gz3.编译源程序make(编译失败,查看是否安装gcc   如果没有yum install gc ...

  3. 安装tensorflow ubuntu18.04

    1.首先安装环境是ubuntu18.04. $sudo apt-get install python-pip python-dev python-virtualenv2.安装virtualenv虚拟环 ...

  4. ios应用内嵌h5页面数据自动变色识别为手机号码的解决方法——手机号码拨号禁用IOS手机页面数字自动识别为手机号

    异常如下: ios应用内嵌h5页面,本来是设置了白色的数字,两三秒之后会自动变为黑色,然后点击的时候就会弹出是否拨号的提示: 解决方法: 添加如下meta标签,即可解决: <meta name= ...

  5. swift - iOS10之后的加速器

    import UIKit //1.加速器框架 import CoreMotion class ViewController: UIViewController { //1.创建运动管理者 必须设置为 ...

  6. [leetcode]123. Best Time to Buy and Sell Stock III 最佳炒股时机之三

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  7. 定时器修改button标题闪烁

    在做一个项目时,用到UIButton来设置接收短信验证码的倒计时,但是用NSTimer来设置标题会出现连续闪烁的问题. 经过测试发现了一下内容,如果只是单独的设置button的titleLabel的内 ...

  8. MATLAB单步调试

    我用的是matlab R2012b 1.先设置断点:点击菜单栏中"EDITOR"--"Breakpoints"--"set",出现以下对话框 ...

  9. sqlserver数据库的备份与还原——完整备份与还原

    sqlserver提供四种数据库备份方式 完整备份:备份整个数据库的所有内容包括书屋和日志 差异备份:只备份上次完整备份后更高的数据部分 事务日志备份:只备份事务日志里的内容 文件或文件组备份:只备份 ...

  10. input框和文字对齐问题

    css样式解决! style="vertical-align: text-bottom;margin-bottom: 2px;"一.问题产生的条件对于14像素大小的字体是没有本篇所 ...