当前位置: 首页 > article >正文

Mysql数据库的备份恢复

最近正在做一个异地数据的定期同步汇总工作,涉及到的数据库主要是Mysql数据库,用于存储现场的一些IOT采集的实时数据,所以做了以下备份恢复测试,现场和总部网络可定期联通,但速度有限,因此计划采用备份恢复增量文件方式,具体运行环境:Windows10 + mysql-8.0.19-winx64。

一、完全备份(数据库名称保持不变)

1.完全备份一个或多个完整的库 (包括其中所有的表)

    mysqldump -uroot -p123456 --databases test1 >D:\dev\mysql-8.0.19-winx64\backup\test1.sql ##备份一个test 库

2.完全备份 MySQL 服务器中所有的库

    mysqldump -uroot -p123456 --all-databases > D:\dev\mysql-8.0.19-winx64\backup\all.sql

3.完全备份指定库中的部分表

    mysqldump -uroot -p123456 test table1 > D:\dev\mysql-8.0.19-winx64\backup\test-table1.sql

4. 使用source恢复数据库的步骤

登录到mysql后,执行以下命令。

    source D:\dev\mysql-8.0.19-winx64\backup\test1.sql

5. 使用mysql命令恢复数据库,解决无须登录mysql数据库情况,使用-e删除数据表,执行mysql备份sql脚本的路径

    mysql -uroot -p -e 'drop table test.test;'

    mysql -uroot -p test1 < D:\dev\mysql-8.0.19-winx64\backup\test11.sq

    mysql -uroot -p -e 'show tables from test'

二、增量备份恢复

# 备份 生成新的二进制文件(例:mysql-bin.0000004,mysql-bin.0000005),这个脚本要求每天做,相当于增量的基础二进制文件,后续用这个恢复数据库。可参考附录的增量备份脚本(Increment_backup.bat)。

    mysqladmin -uroot -p123456 flush-logs

#使用64位编码机制去解码,按行读取详细内容,查看解析的内容,查看其他信息及配置详见附录。

    mysqlbinlog --no-defaults --base64-output=decode-rows -v D:\dev\mysql-8.0.19-winx64\data\mysql-bin.000001

#也可以将解析的内容输出到文件

    mysqlbinlog --no-defaults --base64-output=decode-rows -v D:\dev\mysql-8.0.19-winx64\data\mysql-bin.000014 >D:\dev\mysql-8.0.19-winx64\backup\outinfo.txt

# 1.一般恢复(用的最多)

    mysqlbinlog --no-defaults D:\dev\mysql-8.0.19-winx64\data\mysql-bin.000004 | mysql -u root -p 

# 2.基于位置点恢复,位置点可通过附录3的命令查询得到。

#仅恢复到操作 ID 为“1104242"之前的数据,即不恢复1104242位置点之后插入更新删除的数据 

mysqlbinlog --no-defaults --stop-position='1104242' D:\dev\mysql-8.0.19-winx64\data\mysql-bin.000008| mysql -uroot -p123456

# 3.基于时间点恢复

#仅恢复到16:40:00 之前的数据,即不恢复这个时间点之后的数据。

mysqlbinlog --no-defaults --stop-datetime="2023-04-24 16:40:00" --database=test1 D:\dev\mysql-8.0.19-winx64\data\mysql-bin.000009 | mysql -uroot -p

附录

1.查看 log_bin是否开启登录到mysql后,执行如下命令,见下图。

show variables like '%log_bin%';

如果log_bin为OFF,则需要在my.ini的配置文件中加入如下配置

l# 开启二进制日志功能
log-bin=mysql-bin
# 可选,指定二进制日志(binlog)的记录格式为MIXED(混合输入)
binlog_format = MIXED

2.查看当前使用的 logbin.000*** 日志文件,执行如下命令

show master status;

3.查看这个binlog的内容

show binlog events in 'mysql-bin.000014';


http://www.kler.cn/a/15869.html

相关文章:

  • shell编程--永久环境变量和字符串显位
  • 【机器学习导引】ch6-支持向量机
  • [产品管理-82]:《产品经理从入门到精通》产品经理的基本思维与核心思想
  • 源码解析-Spring Eureka(更新ing)
  • Unity读取Json
  • windows tomcat 报错后如何让窗口不闪退
  • 赞!数字中国建设峰会上的金仓风采
  • ubuntu22安装redis7.0
  • 使用 ESP32 设计智能手表第 2 部分 - 环境光和心率传感器
  • 算法套路十四——动态规划之背包问题:01背包、完全背包及各种变形
  • linux_线程锁mutex(互斥量)_线程同步_死锁现象_pthread_mutex_lock函数_pthread_mutex_unlock函数_死锁现象
  • 操作系统之内存管理
  • 把字符串转换成整数
  • Python使用AI photo2cartoon制作属于你的漫画头像
  • Nautilus Chain 测试网第二阶段,推出忠诚度计划及广泛空投
  • 怎样解决高并发下的I/O瓶颈?
  • AI失业潮来袭,某些部门裁员过半
  • LeetCode_回溯_中等_93.复原 IP 地址
  • 使用 ESP32 设计智能手表第 3 部分 - 磁力计和陀螺仪
  • mysql中int、bigint、smallint 和 tinyint的区别详细介绍
  • 【网络编程】网络基础
  • 人工智能之配置环境教程二:在Anaconda中创建虚拟环境安装GPU版本的Pytorch及torchvision并在VsCode中使用虚拟环境
  • leetcode 45. 跳跃游戏 II
  • KALI入门到高级【第三章】
  • iOS autorelease 示例研究
  • 读SQL进阶教程笔记14_SQL编程要点