我想将mysql数据库从本地计算机复制到远程服务器。
我正在尝试使用mysql dump命令。互联网上的所有例子都建议做类似
的事情初始mysql>
只是我登录后得到的提示。
mysql> mysqldump -u user -p pass myDBName | NewDBName.out;
但是当我这样做时,我得到You have an error in your SQL syntax; check the manual that corresponds ... to use near 'mysqldump -u user -p pass myDBName | NewDBName.out'
由于我已登录,我需要使用-u和-p吗?不这样做会给我同样的错误。你能看出出了什么问题吗?
答案 0 :(得分:2)
mysqldump
不是您在mysql
会话中执行的SQL语句,而是应该从您的操作系统shell启动的不同二进制文件。
有几种方法可以使用它。其中之一是将mysqldump
的输出传递给另一个MySQL实例:
echo CREATE DATABASE remote_db | mysql -h remote_host -u remote_user -premote_password
mysqldump -h source_host -u root -ppassword source_db | mysql -h remote_host -u remote_user -premote_password -D remote_db
答案 1 :(得分:2)
除了Alexandre所说的,你可能不想将(|)输出管道输出到NewDBName.out,而是将其重定向到那里(>)。
所以从Windows / Unix命令行:
mysqldump -u user -p pass myDBName > NewDBName.out
请注意,如果某些列中有大型二进制字段(例如BLOBS),则可能需要设置一个附加选项(我认为它是--hex-blob,但也可能有另一个选项)。如果这适用于您,请添加评论,我将研究设置。
答案 2 :(得分:2)
我最近不得不丢弃大量数据。我在200Mb数据库中发现的,在许多表中有10,000多条记录,如下所示。我用linux'time'命令来获取实际时间。
12分钟使用: mysqldump -u user -p pass myDBName> DB-backups.sql
克隆数据库7分钟: mysqldump -u user -p传递myDBName | mysql -u user -p pass cloneDBName
不到一秒钟: mysqlhotcopy -u user -p传递myDBName cloneDBName
最后一个引起了我的注意,但您必须在本地登录数据库服务器所在的位置。我个人认为这比远程转储快得多,你可以压缩.sql文件并手动传输。