dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2165
  • 铜币13236枚
  • 威望5838点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
阅读:3681回复:4

Mysqldump 导出数据

楼主#
更多 发布于:2014-01-08 17:50
示例
      
1.导出数据和表结构  
mysqldump --opt 数据库名 -uroot -p > xxx.sql  
mysqldump --opt test -u root -p > all.sql

2.导出结构不导出数据  
mysqldump -d 数据库名 -u root -p > xxx.sql  
mysqldump -d test -u root -p > desc.sql

3.导出数据不导出结构
mysqldump -t 数据库名 -uroot -p > xxx.sql  
mysqldump -t test -u root -p > data.sql
  
4. 导出单个
mysqldump --opt 数据库名 表名 -uroot -p > xxx.sql
mysqldump --opt test table1 -uroot -p > single.sql

5. 导出所有库
mysqldump --opt --all-databases -uroot -ppassword > all.sql

sql大小
du -sh all.sql
5.7M    all.sql

du -sh data.sql
5.6M    data.sql

du -sh desc.sql
144K    desc.sql  
    
 
参数
--opt               Same as --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, and --disable-keys. Enabled by default, disable with --skip-opt.

-t, --no-create-info
                      Don't write table creation info.
-d, --no-data       No row information.

--all-databases
       To dump entire databases, do not name any tables following db_name, or use the --databases or --all-databases option.

扩展:导入sql 数据
1. 导入sql数据到 本地 mysql 服务器
mysql -uroot -p test < single.sql
2. 导入sql数据到 运程 mysql 服务器
mysql -h 8.8.8.8 -uroot -p test < single.sql
注意,导入的sql将会覆盖已经存在的数据,例如 "DROP TABLE IF EXISTS `table1`;"
3. 导入单个表
#表内数据为 insert 语句,例如 INSERT INTO `demo_orgn` VALUES ('4028166xxxxxxxbed59366xxxx' .....省略);
gzip -dc demo.sql.gz | mysql --defaults-file=/root/sh/demo.conf demo-db

参考
http://dngood.blog.51cto.com/446195/663097    
#

最新喜欢:

pyjys1987pyjys1...
dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2165
  • 铜币13236枚
  • 威望5838点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
沙发#
发布于:2014-11-05 10:27
导出 innodb表
示例:
mysqldump -h localhost -uroot -p --single-transaction redmine | gzip &gt; 20160113-redmine.sql.gz

参数
--single-transaction

This option sets the transaction isolation mode to REPEATABLE READ and sends a START TRANSACTION SQL statement to the server before dumping data. It is useful only with transactional tables such as InnoDB, because then it dumps the consistent state of the database at the time when START TRANSACTION was issued without blocking any applications.

When using this option, you should keep in mind that only InnoDB tables are dumped in a consistent state. For example, any MyISAM or MEMORY tables dumped while using this option may still change state.

While a --single-transaction dump is in process, to ensure a valid dump file (correct table contents and binary log coordinates), no other connection should use the following statements: ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE. A consistent read is not isolated from those statements, so use of them on a table to be dumped can cause the SELECT that is performed by mysqldump to retrieve the table contents to obtain incorrect contents or fail.

The --single-transaction option and the --lock-tables option are mutually exclusive because LOCK TABLES causes any pending transactions to be committed implicitly.

This option is not supported for MySQL Cluster tables; the results cannot be guaranteed to be consistent due to the fact that the NDBCLUSTER storage engine supports only the READ_COMMITTED transaction isolation level. You should always use NDB backup and restore instead.

To dump large tables, you should combine the --single-transaction option with --quick.



InnoDB 表在备份时,通常启用选项 --single-transaction 来保证备份的一致性,它的工作原理是设定本次会话的隔离级别为:REPEATABLE READ,以确保本次会话(dump)时,不会看到其他会话已经提交了的数据。
dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2165
  • 铜币13236枚
  • 威望5838点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
板凳#
发布于:2015-04-08 09:11
mysqldump 远程mysql服务器
示例
mysqldump -h your_ip -uroot -ppassword --opt --single-transaction global &gt; global.sql
默认mysqldump "本地的"mysql服务器,使用"-h" 参数可以 dump 远程的mysql服务器数据到本机。


参数
  ·   --host=host_name, -h host_name
           Dump data from the MySQL server on the given host. The default host is localhost.
#
dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2165
  • 铜币13236枚
  • 威望5838点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
地板#
发布于:2017-04-01 09:18
mysqldump pass --set-gtid-purged=OFF
错误描述
mysqldump 导出数据库,提示 pass --set-gtid-purged=OFF ,详细信息:
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.

错误原因

mysql 5.6引入了Global Transaction Identifiers (GTIDs) 。GTIDs可以让主从结构复制的跟踪和比较变得简单。
mysqldump会试图查询这个系统变量,但这个变量在5.6之前的版本中不存在,所以产生错误。

解决方法

使用 --set-gtid-purged=OFF 参数
mysqldump -uroot -p --opt --single-transaction --set-gtid-purged=OFF test > test.sql

扩展

https://dev.mysql.com/doc/refman/5.6/en/replication-gtids-howto.html
#
dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2165
  • 铜币13236枚
  • 威望5838点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
4楼#
发布于:2017-11-08 14:20
mysqldump 导出时附带存储过程
示例
mysqldump -uroot -p -hlocalhost --opt --single-transaction -R demo > demo.sql

参数
-R, --routines      Dump stored routines (functions and procedures).


参考
http://zongming.net/read-1330
游客

返回顶部