mysql - 通过 SSH 复制 MySQL 数据库

标签 mysql database ssh copy

假设我有 database1database2

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/

相关文章:

git - SSH 克隆/推送到 Bitbucket 禁止

java - SCP上传文件问题

php - 联系 API,有时会出现错误...?

mysql子查询报错Unknown column 'tv.last_time' in 'where clause'

sql-server - 修改 Azure SQL 数据库中的文件最大大小

c# - 从 asp 访问属性 ID :Dropdown but display the attribute only c#

linux - "host1$ ssh host2 cmd1 | cmd2"cmd2 将在哪台主机上运行?

mysql - CFSCRIPT 中的事务性能缓慢

mysql group by 并从右连接表中获取特定记录

c# - 在 winforms 中显示数据库中带有名称的图片?