如何备份在远程服务器上运行的mysql数据库,我需要将备份文件存储在本地pc中。
Answers:
与Mysqldump一起尝试
#mysqldump --host=the.remotedatabase.com -u yourusername -p yourdatabasename > /User/backups/adump.sql
您可以使用SSH吗?
您可以在shell中使用此命令来备份整个数据库:
mysqldump -u [username] -p[password] [databasename] > [filename.sql]
实际上,这是>
操作员遵循的一个命令,说:“获取前一个命令的输出并将其存储在此文件中”。
注意:-p和mysql密码之间没有空格不是错字。但是,如果您保留该-p
标记,但实际密码为空,则将提示您输入密码。有时建议这样做,以使密码不受bash历史记录的影响。
没有人提及--single-transaction选项。人们应该默认将它用于InnoDB表,以确保数据一致性。在这种情况下:
mysqldump --single-transaction -h [remoteserver.com] -u [username] -p [password] [yourdatabase] > [dump_file.sql]
这样可以确保转储在与其他事务隔离的单个事务中运行,从而避免了部分事务的备份。
例如,假设您有一个游戏服务器,人们可以在其中使用他们的帐户信用购买装备。针对数据库实际上有2种操作:
现在,如果转储发生在这些操作之间,那么下次还原备份将导致用户丢失已购买的商品,因为第二个操作未转储到SQL转储文件中。
虽然这只是一个选项,但是您没有在mysqldump中不使用此选项的原因基本上没有很多。
mysqldump: Got error: 1044: "Access denied for user 'USER'@'%' to database 'DB_NAME'" when using LOCK TABLES
,但使用--single-transaction
optionmysqldump
解决了我的问题。
mysqldump -h [domain name/ip] -u [username] -p[password] [databasename] > [filename.sql]
-p[password]
不-p [password]
?
-p'pa$$w0rd!!!!'