mysql 备份和增量备份 python实现

首先暂时不考虑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 ")

                
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值