6

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

 8 months ago
source link: 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/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

December 25, 2023 本文有 539 个字 需要花费 2 分钟阅读
20231225-1.webp

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK