如何备份在远程服务器上运行的mysql数据库,我需要将备份文件存储在本地pc上
试试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]
这确保转储在与其他事务隔离的单个事务中运行,从而防止对部分事务进行备份。
例如,假设你有一个游戏服务器,人们可以用他们的账户积分购买装备。基本上有两种对数据库的操作:- 从他们的信用中扣除金额
- 将装备添加到他们的武器库
现在,如果转储发生在这些操作之间,那么下次恢复备份时将导致用户丢失购买的物品,因为第二次操作没有转储到SQL转储文件中。
虽然它只是一个选项,但基本上没有太多理由不使用这个选项。
这个主题出现在我的谷歌搜索结果的第一页,所以这里有一个对新手有用的小提示。
您也可以转储sql并将其gzip到一行中:
mysqldump -u [username] -p[password] [database_name] | gzip > [filename.sql.gz]
mysqldump -h [domain name/ip] -u [username] -p[password] [databasename] > [filename.sql]
尝试了这里所有的组合,但这个对我有效:
mysqldump -u root -p --default-character-set=utf8mb4 [DATABASE TO BE COPIED NAME] > [NEW DATABASE NAME]
如果您还没有安装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
您可以直接将其管道传输到您希望将数据copy
传输到的远程服务器:
mysqldump -u your_db_user_name -p --set-gtid-purged=OFF --triggers --routines --events --compress --skip-lock-tables --verbose your_local_sql_db_name | mysql -u your_db_user_name -p -h your_remote_server_ip your_remote_server_db_name
您需要在远程sql服务器上创建数据库。
使用上面的命令,我能够从我的本地sqlserver版本8.0.23复制到我的远程sqlserver运行8.0.25
下面是成功备份.sql文件后恢复备份的方法
mysql -u [username] [databasename]
并使用以下命令选择sql文件:
source MY-BACKED-UP-DATABASE-FILE.sql