zoukankan      html  css  js  c++  java
  • MySQL中mysqldump导出数据的使用

    mysqldump常用参数说明:

    帮助使用:mysqldump --help

    -A, --all-databases 导出全部数据库 mysqldump -uroot -p –A > /tmp/filename.sql
     
    -Y, --all-tablespaces 导出全部表空间
     
    -y, --no-tablespaces   不导出任何表空间信息.
     
    --add-drop-database 每个数据库创建之前添加drop数据库语句。
     
    --add-drop-table  每个数据表创建之前添加drop数据表语句,默认为打开状态,使用–skip-add-drop-table取消选项。
     
    --add-locks 在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE.默认为打开状态,使用–skip-add-locks取消选项.
     
    -i, --comments 附加注释信息,默认为打开,可以用–skip-comments取消.
     
    --compact 导出更少的输出信息(用于调试)。去掉注释和头尾等结构.
     
    -C, --compress 在客户端和服务器之间启用压缩传递所有信息
     
    -B, --databases 导出多个数据库,参数后面所有名字参量都被看作数据库名,并且增加use db和create database db的信息.例如:mysqldump -uroot -p -B test mysql
     
    -E, --events 导出事件.
     
    -F, --flush-logs 开始导出之前刷新日志请注意:假如一次导出多个数据库(使用选项–databases或者–all-databases),将会逐个数据库刷新日志。除使用–lock-all-tables或者–master-data<br>外。在这种情况下,日志将会被刷新一次,相应的所以表同时被锁定。因此,如果打算同时导出和刷新日志应该使用–lock-all-tables 或者–master-data 和–flush-logs。<br>mysqldump -uroot -p –all-databases –flush-logs
     
    -f, --force 在导出过程中忽略出现的SQL错误.
    
    -d, --no-data 不导出任何数据,只导出数据库表结构。
     
    -p, --password[=name] 连接数据库密码
     
    -P, --port=# 连接数据库端口号
     
    -u, --user=name 指定连接的用户名。
     
    -R, --routines 导出存储过程和函数
     
    --triggers 导出触发器
    
    --debug-info 输出调试信息并退出
    
    --ignore-table=name 不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。
    
    --default-character-set 设置默认字符集,默认值为utf8。例如:mysqldump -uroot -p –A –default-character-set=latin1
    
    --hex-blob 使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用该选项。影响到的字段类型有BINARY、VARBINARY、BLOB。
    
    --log-error 附加警告和错误信息到给定文件. mysqldump  -uroot -p  --all-databases  --log-error=/tmp/mysqldump_error_log.err
    
    --single-transaction 
    
    该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。
    本选项和--lock-tables 选项是互斥的,因为LOCK  TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick 选项。
    
    -l, --lock-tables 
    
    开始导出前,锁定所有表。用READ  LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,--single-transaction是一个更好的选择,因为它根本不需要锁定表。
    
    请注意当导出多个数据库时,--lock-tables分别为每个数据库锁定表。因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出状态可以完全不同。
    
    mysqldump  -uroot -p --host=localhost --all-databases --lock-tables
    
    -x, --lock-all-tables 提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction 和--lock-tables 选项。
    
    
    --master-data
     
    该选项将binlog的位置和文件名追加到输出文件中。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE  MASTER命令前添加注释信息。该选项将打开--lock-all-tables 
    选项,除非--single-transaction也被指定(在这种情况下,全局读锁在开始导出时获得很短的时间;其他内容参考下面的--single-transaction选项)。
    该选项自动关闭--lock-tables选项。
    
    --master-data=1
    从库: 告诉从库,从主库的那个位置开始同步.
    
    --master-data=2
    
    注释中记录了获取binlog文件和位置点
    
    myisam备份场景:
    myisam备份是要锁表,不然数据可能会不一致.
    
    mysqldump -uroot -p123456 -A -B --master-data=2 -x|gzip >/opt/all.sql.gz
    
    innodb备份场景:
    
    mysqldump -uroot -p123456 -A -B --master-data=2 --single-transaction|gzip >/opt/all.sql.gz
    
    for innoDB:
    mysqldump --user=root --all-databases --flush-privileges --single-transaction --master-data=1 --flush-logs --triggers --routines --events --hex-blob > /tmp/full_dump.sql

    mysqldump常用于数据库的备份与还原,在备份的过程中我们可以根据自己的实际情况添加以上任何参数

    语法:

    mysqldump -u 用户名 -p 密码 数据库 > file.sql
    

    实例:

    1.导出整个数据库(包括数据库中的数据和创建表的语句)

    mysqldump -u username -p dbname > filename.sql
    

    2.导出数据库结构(不含数据,只包含创建表的语句)

    mysqldump -u username -p -d dbname > filename.sql 
    

    3.导出数据库中的某张数据表(包含表数据和创建表语句)

    mysqldump -u username -p dbname table1 table2 > filename.sql
    

    4.导出数据库中的某张数据表的表结构(不含数据)

    mysqldump -u username -p -d dbname tablename > filename.sql 
    

    5.指定字符集导出:

    mysqldump -uroot -p'123456'--default-character-set=utf-8 -B mydb > /tmp/mydb.sql
    

    6.指定压缩命令压缩备份的MySQL数据

    mysqldump -uroot -p'123456' mydb|gzip > /tmp/mydb.sql.gz

    7.过滤mydqldump导出的mydb.sql文件的未注释部分.

    egrep -v "#|*|--|^$" /tmp/mydb.sql
    
    grep -E -v "#|/|^$|--" /tmp/mydb.sql
    

    如果要导入数据可执行如下命令:

    mysql -u username -p db_name < test_db.sql
    

    还原数据库操作还可以使用以下方法:

    mysql> use db_name  
    mysql> source test_db.sql   

    mysql source 防止乱码

    1.数据库备份命令

    mysqldump -uroot -p --default-character-set=utf8 dbname > /root/dbname.sql
    

    2.导入数据库

    mysql -uroot -p --default-character-set=utf8
    use dbname
    source /root/dbname.sql

     

    参考文档:http://www.cnblogs.com/qq78292959/p/3637135.html

                     http://jingyan.baidu.com/article/948f5924259516d80ef5f95e.html

                     http://www.cnblogs.com/digdeep/archive/2015/10/21/4898622.html

         http://blog.csdn.net/a351945755/article/details/21758283

  • 相关阅读:
    依赖注入模式【其他模式】
    缓存模式【其他模式】
    限流模式【其他模式】
    规范模式【其他模式】
    服务定位器【其他模式】
    原型继承模式【其他模式】
    Promise【其他模式】
    单态模式【其他模式】
    Git如何永久删除文件(包括历史记录)
    git中如何查看一个文件的修改(更新)历史
  • 原文地址:https://www.cnblogs.com/saneri/p/7019623.html
Copyright © 2011-2022 走看看