mysql 备份和增量备份 python实现

本文介绍了使用mysqldump结合binlog实现MySQL数据库的逻辑备份策略,详细阐述了全量备份与增量备份的步骤,并提供了相关命令行操作示例。讨论了物理备份的局限性和逻辑备份的优势,同时给出了数据库还原的命令行操作。重点关注了--single-transaction和--master-data选项在备份过程中的作用,以及如何利用binlog进行增量备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先暂时不考虑python 如何实现,先实现mysql备份

两个思路 mysqldump + binlog 逻辑备份 与 xtraback 物理备份

考虑到实际需要,物理备份还原是通过删除原数据库从新创建并还原数据,这种方式对于频繁还原来说并不合适,

逻辑备份对于数据库本身无操作,只是操作对应sql语句,比较后决定使用第一种mysqldump + binlog的方式实现(先确认binlog可用)。

第一次通过命令行执行mysqldump进行全量备份

mysqldump -uroot -p12345 --single-transaction --master-data=1 testdb > /data/dev.sql

如果只表结构备份 -d 参数:
mysqldump -uroot -p12345 --single-transaction --master-data=1 -d testdb > /data/dev.sql

-u username -p password -P port -h host testdb 需要备份的库名 如果全库的话 --all-databases

默认情况下mysqldump会对表加锁,而使用--single-transaction会将备份的操作放在一个事务中进行,从而避免了加表锁。

--master-data=1会在dump出的sql文件中记录Binlog文件和位置。使用--master-data=1参数后sql文件中会出现下面这行:

CHANGE MASTER TO MASTER_LOG_FILE='binlog.000001', MASTER_LOG_POS=155;

binlog.000001 文件用于后续增量备份时候进行切片,命令行执行如下

mysqlbinlog --start-post=155 binlog.000001 > /data/binlog.000001.sql

命令实现 通过pos点 155 开始到最新的日志 转成sql脚本。

或者通过时间进行切片转换sql脚本

mysqlbinlog --start-datetime='2022-01-1 00:00:00' /data/binlog.000001 > binlog.000001.sql

数据库语句:

        查看是否开启 binlog

        show variables like 'log_bin'

        查看binglog文件

        show binary logs

        查看当前正在写入的binlog文件

        show master status

数据库还原可以通过命令行操作对应文件

mysql -uroot -p123456 testdb < binlog.000001.sql

python实现可以使用os.system执行shell 命令

os.system("mysql -uroot -p12345 testdb < binlog.000001.sql ")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值