假设我有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
保存转储的副本
我还没有解决的一个问题是如何避免在远程命令中指定密码。如果能够在命令行上交互式地输入这个密码,那将是一件非常好的事情——如果有人知道如何输入,请插话。
这将数据库从S1复制到S2
mysqldump --opt <database> | gzip -c | ssh user@wherever 'cat > /tmp/yourfile.sql.gz'
解压缩文件
gunzip /tmp/yourfile.sql.gz
接下来你必须在S2 上导入
mysql -h<host> -u<user> -p<password> < /tmp/yourfile.sql
享受
使用以下2个命令:
mysqldump -u customers -p customers > customers.dump
mysql -u new_customers -p new_customers < customers.dump
(您可能会因为无法写入目录而被拒绝访问,因此您可能不得不使用cd
更改目录)
来源:http://support.tigertech.net/mysql-duplicate
您需要做的第一件事是ssh到您想要从中复制数据库或将其复制到另一台服务器的服务器中。
对我有效的命令是:
mysqldump -u <database-user> -p<database-password> <database-name> | xz | ssh <target-ssh-username>@<target-hostname> "tee remote-dump.sql.xz | unxz | mysql -u <target-database-user> -p<target-database-password> <target-database-name>"
注意:-您可以使用.cnf文件来存储数据库的用户名和密码。因为我的处决很小,所以我没有使用它。
执行此操作的链接:https://www.techiecorner.com/1619/how-to-setup-mysqldump-without-password-in-cronjob/
输入命令后。它会提示您输入
**The authenticity of host 'w01b3a99.kasserver.com (85.13.164.141)' can't be established.**
Are you sure you want to continue connecting (yes/no)?
键入yes
然后它会提示您输入
*target-user@target-hostname* ssh password
输入target-user
的密码密码
它将是静默执行运行。一段时间后,您的命令执行将完成。
我没有使用pv -W
,因为我使用的是Cloudways服务器。尚未安装pv
。他们不允许root用户访问来安装任何软件包。