首页 公告 项目 RSS

介绍一个数据库备份的操作

December 25, 2023 本文有 539 个字 需要花费 2 分钟阅读

简介

在处理内网环境中的数据库同步问题时,我们可能会遇到一些挑战。传统的方法是从源数据库导出数据,然后压缩并传输到目标网络,最后在目标网络解压并导入数据。这种方法不仅操作繁琐,而且如果数据库体积较大,还需要大量的磁盘空间。为了解决这个问题,我们可以使用 SSH 隧道和 MySQL 的数据压缩功能,以简化数据同步过程。

建立 SSH 隧道

首先,我们需要在两个网络之间建立一个 SSH 隧道。这可以通过以下命令完成:

ssh -L 3306:10.10.100.22:3306 -p 22 [email protected] -i id_rsa

这条命令将本地的 3306 端口映射到目标网络的数据库服务器(10.10.100.22)的 3306 端口。

数据同步

随后,我们可以开始进行数据同步。这可以通过以下命令完成:

mysqldump -u root -h 10.10.1.22 --port 3306 \
    --databases db1 db2 \
    --compress \
    --single-transaction \
    --order-by-primary  \
    -ppassword | mysql -u root \
        --port=3306 \
        --host=127.0.0.1 \
        -ppassword

这条命令首先从源数据库(10.10.1.22)导出 db1 和 db2 数据库的数据,然后通过管道将数据输入到目标数据库。这里,我们使用了 mysqldump 命令的 –compress 选项来压缩数据,以减少网络传输的数据量。此外,我们还使用了 –single-transaction 选项来保证数据的一致性,以及 –order-by-primary 选项来优化导入性能。

需要注意的是,尽管目标数据库的地址是 127.0.0.1,但实际上数据是通过 SSH 隧道传输到目标网络的数据库服务器的。

通过以上步骤,我们就可以简化数据库间的数据同步过程,同时也减少了需要的磁盘空间。

欢迎关注我的博客www.bboy.app

Have Fun