#RePost #DevOps 一个数据库备份的操作https://www.bboy.app/2023/12/25/%E4%BB%8B%E7%BB%8D%E4%B8%80%E4%B8%AA%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A4%87%E4%BB%BD%E7%9A%84%E6%93%8D%E4%BD%9C/

在处理内网环境中的数据库同步问题时,我们可能会遇到一些挑战。传统的方法是从源数据库导出数据,然后压缩并传输到目标网络,最后在目标网络解压并导入数据。这种方法不仅操作繁琐,而且如果数据库体积较大,还需要大量的磁盘空间。为了解决这个问题,我们可以使用 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 隧道传输到目标网络的数据库服务器的。
 
 
Back to Top
OKHK