MySql 中的备份数据库
Backup database in MySql
我目前正在学习 sql。我是 运行 mysql 8.0.16 cli on Windows 10 cmd,我以 root mysql 用户和 运行 cmd 管理员身份登录。
我想做的是备份我新创建的数据库。
这是我的 SHOW DATABASES 输出:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| learnsql |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
现在,我要做的是:
backup database learnsql to disk = 'E:\backup.bak';
我得到的输出是:
mysql> backup database learnsql to disk = 'E:\backup.bak';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'backup database learnsql to disk = 'E:\backup.bak'' at line 1
我提供的路径有效。我的猜测是 MySql 不支持 "backup database" 命令,但它不应该在 Sql 标准中吗?
编辑:我知道我可以使用 sqldump 来做同样的事情,但我正在学习并且真的很想了解为什么这个特定命令无效。
SQL 标准是一份大型学术文件,据我所知 - not available for free on the web。
标准中应该和不应该包含的内容是一个复杂的话题,许多实际的数据库多年来(或根本没有)不执行该标准。该标准的大部分精力用于软件开发和设计的支持功能,例如对对象映射、时间和空间功能的支持;备份等主要是操作问题。备份也可能非常 implementation-specific,并且标准试图与特定的实现细节无关。
所以,不,命令 "backup" 不是标准的一部分,而且可能不应该是。每个数据库引擎都有自己的方法,并且往往特定于操作系统和底层数据库引擎。
我目前正在学习 sql。我是 运行 mysql 8.0.16 cli on Windows 10 cmd,我以 root mysql 用户和 运行 cmd 管理员身份登录。 我想做的是备份我新创建的数据库。
这是我的 SHOW DATABASES 输出:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| learnsql |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
现在,我要做的是:
backup database learnsql to disk = 'E:\backup.bak';
我得到的输出是:
mysql> backup database learnsql to disk = 'E:\backup.bak';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'backup database learnsql to disk = 'E:\backup.bak'' at line 1
我提供的路径有效。我的猜测是 MySql 不支持 "backup database" 命令,但它不应该在 Sql 标准中吗?
编辑:我知道我可以使用 sqldump 来做同样的事情,但我正在学习并且真的很想了解为什么这个特定命令无效。
SQL 标准是一份大型学术文件,据我所知 - not available for free on the web。
标准中应该和不应该包含的内容是一个复杂的话题,许多实际的数据库多年来(或根本没有)不执行该标准。该标准的大部分精力用于软件开发和设计的支持功能,例如对对象映射、时间和空间功能的支持;备份等主要是操作问题。备份也可能非常 implementation-specific,并且标准试图与特定的实现细节无关。
所以,不,命令 "backup" 不是标准的一部分,而且可能不应该是。每个数据库引擎都有自己的方法,并且往往特定于操作系统和底层数据库引擎。