假设我有 database1
和 database2
。
database1
- 包含数据
database2
- 是空的。
我想通过 SSH 将所有数据从 database1
复制到 database2
- 复制 database1
。
我应该使用什么命令?
我试过了
mysqldump -u user -p database1 > database1.sql
Enter password: mysqldump: Got error: 1045: Access denied for user 'user'@'localhost' (using password: NO) when trying to connect
最佳答案
只需一条命令即可通过 SSH 复制 MySQL 数据库:
mysqldump -u <local-user> -p <local-db> | gzip | ssh user@hostname \
"gunzip | mysql -u <remote-user> -p<password> <remote-db>"
请注意,您必须先创建远程数据库。
更高级的版本:
mysqldump -u <local-user> -p <local-db> | xz | pv -W | ssh user@hostname \
"tee remote-dump.sql.xz | unxz | mysql -u <remote-user> -p<password> <remote-db>"
进阶版:
使用
xz
/unxz
压缩效果更好(不过要注意压缩速度不会成为瓶颈 - 如果xz
CPU 使用率为 100% 那么它可能成为瓶颈,你最好使用gzip
)使用
显示进度指示器pv
使用
保存转储的副本tee
我唯一没有解决的问题是如何避免在远程命令中指定密码。如果能够在命令行上以交互方式输入此密码,那就太好了——如果有人知道如何输入,请插话。
关于mysql - 通过 SSH 复制 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8869438/