【发布时间】:2016-04-10 00:28:04
【问题描述】:
我需要通过 SSH 从远程机器上的 mysql 安装复制整个数据库到我的本地机器 mysql。
我知道 SSH 以及本地和远程 MYSQL 管理员用户和密码。
这些信息够不够,是怎么做的?
【问题讨论】:
-
你知道如何在本地复制数据库吗?
我需要通过 SSH 从远程机器上的 mysql 安装复制整个数据库到我的本地机器 mysql。
我知道 SSH 以及本地和远程 MYSQL 管理员用户和密码。
这些信息够不够,是怎么做的?
【问题讨论】:
从远程服务器到本地机器
ssh {ssh.user}@{remote_host} \
'mysqldump -u {remote_dbuser} --password={remote_dbpassword}
{remote_dbname} | bzip2 -c' \ | bunzip2 -dc | mysql -u {local_dbuser}
--password={local_dbpassword} -D {local_dbname}
【讨论】:
-C 标志放到 ssh 上。
这将通过pipes 将远程数据库转储到本地 MySQL 中:
ssh mysql-server "mysqldump --all-databases --quote-names --opt --hex-blob --add-drop-database" | mysql
你应该关心mysql.users中的用户
此外,为了避免在本地和远程主机上输入mysqldump和mysql的用户和密码,您可以创建一个文件~/.my.cnf:
[mysql]
user = dba
password = foobar
[mysqldump]
user = dba
password = foobar
【讨论】:
在这里尝试阅读:
修改自 http://www.cyberciti.biz/tips/howto-copy-mysql-database-remote-server.html - 修改是因为我更喜欢使用 .sql 作为 SQL 文件的扩展名:
通常你运行 mysqldump 来创建一个数据库副本和备份为 如下:
$ mysqldump -u 用户 -p db-name > db-name.sql
使用 sftp/ssh 复制 db-name.out 文件到远程 MySQL 服务器:
$ scp db-name.sql user@remote.box.com:/backup
在远程服务器上恢复数据库(通过 ssh 登录):
$ mysql -u 用户 -p db-name
基本上,您将使用mysqldump 生成数据库转储,将其复制到本地计算机,然后将内容通过管道传输到mysql 以重新生成数据库。
您可以自己复制数据库文件,而不是使用mysqldump,但前提是您可以关闭远程计算机上的 MySQL 服务。
【讨论】:
我会推荐Percona 的Xtrabackup 工具。它支持通过 SSH 热复制数据,并具有出色的文档。与使用 mysqldump 不同,这将复制 MySQL 实例的所有元素,包括用户权限、触发器、复制等...
【讨论】:
【讨论】: