我有一台带有 mysql 数据库的 Ubuntu 服务器,我想将其全部内容(数据、用户、任何内容)复制到网络上的另一台 mysql 服务器上。
我如何才能获得这个结果(自动,也许使用 cron)并保证安全性(没有人能够拦截数据)?
答案1
最简单的方法可能是设置主/从数据库方案,其中从数据库是您的备份。如果您想要流外备份,您可以停止从数据库以对其进行快照或转储,而无需停止主数据库,这也可能适合您的需求。
我不确定您不停止数据库服务器上的服务的标准是因为您不想停机还是出于其他原因。如果是前者,那么主/从服务器和定期转储从服务器应该可以工作。
答案2
您可以通过编写一个通过 cron 运行的脚本来轻松完成此操作。此脚本将 1) 执行 mysqldump 2) 压缩该数据库转储,然后 3) 使用 scp 将压缩的备份传输到从属服务器。该脚本可以简单到:
#!/bin/bash
mysqldump -u root -p<password> --all-databases | gzip -c | cat /path/to/db_dump.sql.gz
scp /tmp/db_dump.sql.gz user@slave:/path/to/
然后您只需将该数据库转储导入到从属服务器上的 mysql 中。