mysqldump单个库导出_MySQL数据库使用mysqldump导出数据详解

本文详细介绍了如何使用mysqldump工具进行数据库导出,包括导出全部数据库、指定数据库、单个表,以及各种条件导出。此外,还列举了常用参数,如--single-transaction、--lock-tables、--no-data等,以确保数据的一致性和导出效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysqldump是mysql用于转存储数据库的客户端程序。它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建您的数据库所需要的 SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等。可以用来实现轻量级的快速迁移或恢复数据库。是mysql数据库实现逻辑备份的一种方式。

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

语法:

默认不带参数的导出,导出文本内容大概如下:创建数据库判断语句-删除表-创建表-锁表-禁用索引-插入数据-启用索引-解锁表。

Usage: mysqldump [OPTIONS] database [tables]

OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]

OR mysqldump [OPTIONS] --all-databases [OPTIONS]

插入测试数据

CREATE DATABASE db1 DEFAULT CHARSET utf8;

USE db1;

CREATE TABLE a1(id int);

insert into a1() values(1),(2);

CREATE TABLE a2(id int);

insert into a2() values(2);

CREATE TABLE a3(id int);

insert into a3() values(3);

CREATE DATABASE db2 DEFAULT CHARSET utf8;

USE db2;

CREATE TABLE b1(id int);

insert into b1() values(1);

CREATE TABLE b2(id int);

insert into b2() values(2);

1.导出所有数据库

该命令会导出包括系统数据库在内的所有数据库

mysqldump -uroot -proot --all-databases >/tmp/all.sql

2.导出db1、db2两个数据库的所有数据

mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql

3.导出db1中的a1、a2表

注意导出指定表只能针对一个数据库进行导出,且导出的内容中和导出数据库也不一样,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据

mysqldump -uroot -proot --databases db1 --tables a1 a2 >/tmp/db1.sql

4.条件导出,导出db1表a1中id=1的数据

条件导出只能导出单个表

mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1' >/tmp/a1.sql

5.生成新的binlog文件,-F

有时候会希望导出数据之后生成一个新的binlog文件,只需要加上-F参数即可

mysqldump -uroot -proot --databases db1 -F >/tmp/db1.sql

6.只导出表结构不导出数据,--no-data

mysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql

7.跨服务器导出导入数据

mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot db2

将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错

mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot test

加上-C参数可以启用压缩传递。

8.将主库的binlog位置和文件名追加到导出数据的文件中,--dump-slave

该参数在在从服务器上执行,相当于执行show slave status。当设置为1时,将会以CHANGE MASTER命令输出到数据文件;设置为2时,会在change前加上注释。

该选项将会打开--lock-all-tables,除非--single-transaction被指定。

在执行完后会自动关闭--lock-tables选项。--dump-slave默认是1

mysqldump -uroot -proot --dump-slave=1 --database db1 >/tmp/db1.sql

mysqldump -uroot -proot --dump-slave=2 --database db1 >/tmp/db1.sql

9.将当前服务器的binlog的位置和文件名追加到输出文件,--master-data

改参数和--dump-slave方法一样,只是它是记录的是当前服务器的binlog,相当于执行show master status。

10--opt

等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 该选项默认开启, 可以用--skip-opt禁用.

mysqldump -uroot -p --host=localhost --all-databases --opt

11保证导出的一致性状态--single-transaction

该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值