我只需要转储存储过程:没有数据,没有表创建。如何使用 mysqldump 执行此操作?
经过一番搜索,我最终得到了以下设置:
mysqldump\
--host=localhost\
--port=3306\
--databases ****\
--user=****\
--password=****\
--default-character-set=utf8\
--add-drop-database\
--add-drop-table\
--add-locks\
--complete-insert\
--extended-insert\
--lock-all-tables\
--create-options\
--disable-keys\
--quick\
--order-by-primary\
--set-charset\
--tz-utc\
> dump/test.sql
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,但我对参数和执行有一些疑问。
关于我的第一个问题,我只想确保所有这些都是必需的,并且一起使用时不会引起任何冲突。最终,我想制作一个非常强大且一致的转储文件,其中包含数百万条记录,用于创建表、数据库和插入数据。好消息是让数据库暂时不可用对我来说不是问题。我唯一的目标是制作一个健壮且一致的转储文件。
关于我的第二场音乐会,我想知道如何在命令出错时获得通知,如果是,则抛出异常。
有任何想法吗?
编辑
这是我根据 RolandoMySQLDBA 的反馈更新的 mysqldump 命令。
mysqldump\
--host=localhost\
--port=3306\
--databases ****\
--user=****\
--password=****\
--default-character-set=utf8\
--opt\
--single-transaction\
--routines\
--triggers\
--events\
--add-drop-database\
--add-drop-table\
--complete-insert\
--delayed-insert\
--tz-utc\
> dump/test.sql
Run Code Online (Sandbox Code Playgroud) 我知道没有必要备份information_schema
数据库,但是以下数据库(除了用户定义的数据库)呢?
performance_schema
mysql
phpmyadmin
(所以,如果出现问题,我们必须从头开始(新的 MySQL 安装),我必须放回哪些数据库?)
哪些数据库包含在由生成的转储中mysqldump --all-databases
?
根据我的经验,这应该是所有用户创建的数据库,加上mysql
数据库。information_schema
仅在明确提及时才备份数据库,并且performance_schema
从不备份。这样对吗?