如何备份在远程服务器上运行的mysql数据库,我需要将备份文件存储在本地pc中。
答案 0 :(得分:74)
#mysqldump --host=the.remotedatabase.com -u yourusername -p yourdatabasename > /User/backups/adump.sql
答案 1 :(得分:51)
您是否可以访问SSH?
您可以在shell中使用此命令来备份整个数据库:
mysqldump -u [username] -p[password] [databasename] > [filename.sql]
这实际上是>
运算符后跟的一个命令,它表示“获取上一个命令的输出并将其存储在此文件中。”
注意:-p和mysql密码之间缺少空格不是拼写错误。但是,如果您保留-p
标志,但实际密码为空,则系统将提示您输入密码。有时建议将密码保留在bash历史记录之外。
答案 2 :(得分:36)
没有人提及 - 单一交易选项。人们应该默认使用InnoDB表来确保数据的一致性。在这种情况下:
mysqldump --single-transaction -h [remoteserver.com] -u [username] -p [password] [yourdatabase] > [dump_file.sql]
这可确保转储在与其他事务隔离的单个事务中运行,从而阻止部分事务的备份。
例如,假设您有一个游戏服务器,人们可以通过他们的帐户信用额购买装备。对数据库基本上有两个操作:
现在,如果在这些操作之间发生转储,则下次还原备份时将导致用户丢失所购买的项目,因为第二个操作未转储到SQL转储文件中。
虽然它只是一个选项,但基本没有太多理由不将此选项与mysqldump一起使用。
答案 3 :(得分:20)
此主题显示在我的Google搜索结果的第一页上,因此这对于新来者来说是一个有用的提示。
你也可以转储sql并将其压缩成一行:
mysqldump -u [username] -p[password] [database_name] | gzip > [filename.sql.gz]
答案 4 :(得分:3)
mysqldump -h [domain name/ip] -u [username] -p[password] [databasename] > [filename.sql]
答案 5 :(得分:1)
尝试了所有组合,但这对我有用:
mysqldump -u root -p --default-character-set=utf8mb4 [DATABASE TO BE COPIED NAME] > [NEW DATABASE NAME]
答案 6 :(得分:0)
如果您还没有安装 mysql_client
而使用 Docker
容器:
sudo docker exec MySQL_CONTAINER_NAME /usr/bin/mysqldump --host=192.168.1.1 -u username --password=password db_name > dump.sql
答案 7 :(得分:-4)
这是在成功备份.sql文件后恢复备份的方法
mysql -u [username] [databasename]
使用以下命令选择您的sql文件:
source MY-BACKED-UP-DATABASE-FILE.sql