我在server_1(操作系统是Windows
)有一个很大的mysql数据库,我想把server_1中的所有数据复制到server_2(操作系统是Centos
)。我尝试将 server_1 中的数据导出到 sql 文件并在 server_2 中获取 sql 文件,但是这会花费很多时间。
我觉得写代码(Pandas
)复制数据是一个选择,但是数据很大而且server_1和server_2不在同一个局域网内(他们有私有(private)IP),考虑网络拥塞,也许这不是一个好的选择。
可以帮忙提出一个好的解决方案。谢谢!
最佳答案
通过命令行中的 mysqldump 从您的 Windows 机器上获取备份:
mysqldump -R --triggers --events -uroot -p<root_pass> --all-databases > c:/backup/mybackup.sql
现在将此备份移动到您的 centos 机器上,您可以借助 winscp(如果需要,您可以存档):
现在通过以下命令恢复数据:
mysql -uroot -p<root_pass> < /backup_path/mybackup.sql
更新1
单数据库备份:
mysqldump -R -uroot -proot_pass db1 > c:/backup/db1.sql
多数据库备份:
mysqldump -R -uroot -proot_pass -B db1 db2 db3 > c:/backup/db1_2_3.sql
单/多表备份:
mysqldump -uroot -proot_pass db1 tbl1 tbl2 tbl3 > c:/backup/db1_tbl_1_2_3.sql
此外,由于您的数据库大小为 1 TB,即使通过 mysqldump 也需要时间,因此您也可以简单地复制二进制文件,即使它不是一个干净的程序,但您可以使用它。
第 1 步:停止您的 mysql 服务。
第 2 步:归档您的 mysql 数据目录并移动到目标机器。
第 3 步:停止 taget 机器上的 mysql 服务,备份存在于您的 mysql 数据目录中的所有文件,并从此处清除。
Step4:将备份的mysql目录下的所有数据复制到目标mysql目录。
Step5:通过以下命令更改mysql目录下这些复制文件的权限。
$ chown -R mysql.mysql /var/lib/mysql
注意:假设你的数据目录是/var/lib/mysql
第六步:启动你的mysql服务。
注意:可能您在 mysql 日志文件中收到的警告很少,但 mysql 应该可以正常工作。
关于python - mysql,如何备份数据到另一台机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36129452/