这是我使用的备份命令: (操作系统是Windows Vista。)
mysqldump -u username -p db1 > backup.sql
mysqldump -u username -p db1 > backup.sql
如果您想要进行完整备份,即备份所有数据库、存储过程、例程和事件,而不会中断任何连接:
mysqldump -u [username] -p -A -R -E --triggers --single-transaction > full_backup.sql
-A
适用于所有数据库(您也可以使用 --all-databases
)-R
适用于所有例程(存储过程和触发器)-E
适用于所有事件--single-transaction
在不锁定表格即不中断任何连接(读/写)的情况下进行备份。如果您只想备份特定的数据库:
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
如果你只想备份数据库结构,只需在先前的命令中添加--no-data
即可:mysqldump -u [username] –p[password] –-no-data [database_name] > dump_file.sql
mysqldump
有许多更多选项,所有这些选项都在 mysqldump
文档 中记录,或者通过在命令行运行 man mysqldump
来查看。
这取决于您使用的版本。在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.
使用以下命令:
mysqldump <other mysqldump options> --routines > outputfile.sql
如果我们只想备份存储过程和触发器,而不是mysql表和数据,那么我们应该运行类似以下的命令:
mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt <database> > outputfile.sql
如果您需要将它们导入到另一个数据库/服务器中,您需要运行类似以下命令:
mysql <database> < outputfile.sql
GRANT SELECT ON `mysql`.`proc` TO <backup user>@<backup host>;
我的备份用户所需的最小GRANT权限如下:
GRANT USAGE ON *.* TO ...
GRANT SELECT, LOCK TABLES ON <target_db>.* TO ...
GRANT SELECT ON `mysql`.`proc` TO ...
FLUSH PRIVILEGES;
。 - carla我正在使用MySQL 5.5.40版本。该版本有一个选项--all-databases
mysqldump -u<username> -p<password> --all-databases --events > /tmp/all_databases__`date +%d_%b_%Y_%H_%M_%S`.sql
这个命令将会创建一个名为当前日期时间的文件,其中包含MySQL服务器中所有数据库的完整备份。
使用'-R'备份存储过程,但也要记住,如果您想在数据库被修改时获得一致的转储,需要使用--single-transaction
(如果您只备份InnoDB),或者--lock-all-tables
(如果您还需要MyISAM表)。
在MySQL 5.7上,它对我有效,我正在使用CentOS7。
用于获取Dump。
命令:
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
用于部署Dump。
命令:
mysql -u user_name -p database_name < file_name.sql
例子:
mysql -u root -p mr_sbc_clean_new < mr_sbc_clean_dump.sql
apple
数据库的表的模式和数据以及其events、routines(过程和函数)和triggers导出到backup.sql
,如下所示。*--single-transaction保证了一致(可靠)的转储,不可能仅导出过程或函数,--skip-triggers可以排除默认情况下包含的触发器,而my answer解释了如何导出数据库的表的模式和数据。mysqldump -u john -p -E -R --single-transaction apple > backup.sql
或者:
mysqldump -u john -p --events --routines --single-transaction apple > backup.sql
--triggers
参数: ↓↓ Here ↓↓
mysqldump -u john -p -E -R --triggers --single-transaction apple > backup.sql
apple
和orange
数据库的模式和数据以及它们的事件、例程(过程和函数)和触发器导出到backup.sql
,如下所示。*{{link2:我的回答}}解释了如何导出多个数据库的模式和数据。mysqldump -u john -p -B -E -R --single-transaction apple orange > backup.sql
backup.sql
,如下所示。*{{link2:我的回答}}解释了如何导出所有数据库的模式和数据:mysqldump -u john -p -A -B -E -R --single-transaction > backup.sql
创建转储文件的步骤如下:
打开CMD并进入您安装MySQL的bin文件夹
例如:C:\Program Files\MySQL\MySQL Server 8.0\bin。如果您在此文件夹中看到mysqldump.exe,则已经安装好了。或者您已经将上述文件夹设置为环境变量的Path变量。
现在,如果您在CMD中输入mysqldump,您会发现CMD能够识别dump命令。
-e
可能有一个打字错误。我使用了-E
。但是两个都有,你可以通过mysqldump --help
看到。 - qräbnö$ mysql -u [用户名] -p [新数据库名] << 数据库备份.sql
- s3cmysqldump <必要的参数> | gzip > backup.sql.gz
。 - Paul