mysql 命令行 dump_如何使用mysqldump命令行实用程序完整备份mysql数据库

如何使用mysqldump命令行实用程序完整备份mysql数据库

如何使用mysqldump完整备份mysql数据库?进行备份时,仅备份来自指定数据库的表。 程序和功能不是。

这是我正在使用的备份命令:

(操作系统是Windows Vista。)

mysqldump -u username -p db1 > backup.sql

8个解决方案

74 votes

如果要进行完整备份,即所有数据库,过程,例程和事件,而不会中断任何连接:

mysqldump -u [username] -p -A -R -E --triggers --single-transaction > full_backup.sql

mysqldump对于所有数据库(您也可以使用man mysqldump)

mysqldump对于所有例程(存储过程和触发器)

mysqldump对于所有事件

mysqldump不锁定表,即不中断任何连接(R / W)。

如果要仅备份指定的数据库:

mysqldump -u [username] -p [database_name] [other_database_name] -R -e --triggers --single-transaction > database_backup.sql

如果只想备份数据库中的特定表:

mysqldump -u [username] -p [database_name] [table_name] > table_backup.sql

如果要备份数据库结构,只需将mysqldump添加到前面的命令中:

mysqldump -u [username] –p[password] –-no-data [database_name] > dump_file.sql

mysqldump还有更多选项,所有选项都记录在mysqldump文档中,或者通过在命令行上运行man mysqldump。

NarasimhaTejaJ answered 2020-06-27T05:02:01Z

16 votes

这取决于您的版本。 在5.0.13之前,这对于mysqldump是不可能的。

从mysqldump手册页(v 5.1.30)

--routines, -R

Dump stored routines (functions and procedures) from the dumped

databases. Use of this option requires the SELECT privilege for the

mysql.proc table. The output generated by using --routines contains

CREATE PROCEDURE and CREATE FUNCTION statements to re-create the

routines. However, these statements do not include attributes such

as the routine creation and modification timestamps. This means that

when the routines are reloaded, they will be created with the

timestamps equal to the reload time.

...

This option was added in MySQL 5.0.13. Before that, stored routines

are not dumped. Routine DEFINER values are not dumped until MySQL

5.0.20. This means that before 5.0.20, when routines are reloaded,

they will be created with the definer set to the reloading user. If

you require routines to be re-created with their original definer,

dump and load the contents of the mysql.proc table directly as

described earlier.

Knut Haugen answered 2020-06-27T05:01:05Z

15 votes

使用以下命令:

mysqldump --routines > outputfile.sql

如果我们只想备份存储过程和触发器,而不是mysql表和数据,那么我们应该运行以下命令:

mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt > outputfile.sql

如果需要将它们导入另一个数据库/服务器,则必须运行以下命令:

mysql < outputfile.sql

ajay singh mittal answered 2020-06-27T05:02:31Z

5 votes

除了--routines标志之外,您还需要授予备份用户读取存储过程的权限:

GRANT SELECT ON `mysql`.`proc` TO @;

我为备份用户提供的最低GRANT权限集是:

GRANT USAGE ON *.* TO ...

GRANT SELECT, LOCK TABLES ON .* TO ...

GRANT SELECT ON `mysql`.`proc` TO ...

jonfm answered 2020-06-27T05:02:55Z

2 votes

使用“ -R”来备份存储过程,但还请记住,如果要在修改数据库时进行一致的转储,则需要使用--single-transaction(如果仅备份innodb)或--lock-all-tables(如果还需要myisam表) )

Vitaly Kushner answered 2020-06-27T05:03:17Z

2 votes

我正在使用MySQL 5.5.40。 该版本具有选项--all-databases

mysqldump -u -p --all-databases --events > /tmp/all_databases__`date +%d_%b_%Y_%H_%M_%S`.sql

此命令将创建MySQL服务器中所有数据库的完整备份到名为当前日期时间的文件。

sunil answered 2020-06-27T05:03:44Z

0 votes

在MySQL 5.7上,我正在使用CentOS7。

对于采取转储。

命令:

mysqldump -u user_name -p database_name -R -E > file_name.sql

例:

mysqldump -u root -p mr_sbc_clean -R -E > mr_sbc_clean_dump.sql

用于部署转储。

命令:

mysql -u user_name -p database_name < file_name.sql

例:

mysql -u root -p mr_sbc_clean_new < mr_sbc_clean_dump.sql

M. Hamza Rajput answered 2020-06-27T05:04:29Z

0 votes

要创建转储,请执行以下步骤:

打开CMD并转到已安装MySQL的bin文件夹

例如:C:\ Program Files \ MySQL \ MySQL Server 8.0 \ bin。 如果你看到这个

文件夹mysqldump.exe将存在。 或者您已经在文件夹上方设置了在环境变量的路径变量中。

现在,如果您在CMD中单击mysqldump,则可以看到CMD能够识别转储命令。

现在运行“ mysqldump -h [host] -P [port] -u [username] -p --skip-triggers --no-create-info --single-transaction --quick --lock-tables = false ABC_databse> c:\ xyz.sql“

上面的命令将提示您输入密码,然后它将开始处理。

Rahul Maurya answered 2020-06-27T05:05:20Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值