MySQL备份
MySQL备份有三种方法,分别是mysqldump、mysqlhotcopy、mysql-binlog备份,他们各自有优点和缺点。
1、mysqldump的备份
原理:全量备份,查处要备份的表结构,在这个表结构上将建表语句(CREATE)和插入语句(INSERT)语句,都写到你要备份的文件中。
优点:支持innodb的存储引擎,但是其mysqldump转存结果前,会将这个结果集放入内存中,数据量过大可能存在问题(手册里说的),所以有主从模式以及mysql-bin增量备份的模式,就可以减少备份的时间,我们可以每天夜里都备份一次,或者写一个shell脚本,进行备份,shell脚本还是要学习的。
由于我的mysqld安装目录在/usr/local/mysql,所以我的mysqldump的路径为在/usr/local/mysql/bin/mysqldump,在这里做一个软连接,使mysqldump作为系统命令。
ln -s /usr/local/mysql/bin/mysqldump /usr/bin ,如图所示:
语法可以上网查一下:(注意了,mysqldump等文件使一个可执行文件,使在Linux的cli中运行的)
案例一:把数据库db_test备份到/tmp/db_test文件中,代码如下【-h 最好加上,格式标准,再说以后分布式的时候都会用到】:
mysqldump -h 127.0.0.1 -uroot -p db_test>/tmp/db_test.sql
效果如下:
我们看看,db_test.sql的问题内容,如下所示:
当然还可以把整个数据库mysqldump备份,具体的问题就具体分析。
2、mysqlhotcopy备份,也可以叫热备份
优点:快
缺点:只支持MySIAM存储引擎
这个就不做例子了,思路和mysqldump差不多,具体用法可以百度查
3、mysql-binlog【重点】
原理:配置文件log-bin=mysql-bin 使控制binlog是否开启的开关。binlog会记录增删改改的记录。
mysql Bin-log日志的使用场景主要有两个:1、主从复制【在后面的文章中会讲到,master 把bin-log的二进制日志推送给slaves来达到master-slave数据一致】。2、数据恢复,通过使用mysql Bin-log工具来使恢复数据。
bingLog地址:data目录下,/usr/local/mysql/data/,如下图所示:
为什么会有这么多mysql Binlog文件?
答:MySQLBinlog当遇到下述情况时,会生成新的日志文件,文件序号递增:
1、MySQL服务重启以及mysqldump进行备份时时候
2、使用flush logs命令
3、当binglog文件超过max_binlog_size变量时,最大值和默认值时1G【但是必须得等它自己的事务执行完毕】。
如何查看mysql binlog中的内容?【如何查看其中内容,以便追踪问题或者恢复数据?】
答:使用命令mysqlbinlog
# 查看bin-log二进制文件(shell方式) mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/master.000003
# 查看bin-log二进制文件(带查询条件) mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/master.000003 \ --start-datetime="2019-03-01 00:00:00" \ --stop-datetime="2019-03-10 00:00:00" \ --start-position="5000" \ --stop-position="20000"
输出内容如下图所示:
总之,你所有的增删改操作都会记录在这个里面。
那么如何利用上述的mysql binlog来进行数据的恢复?
案列:如果我向x_letter表中插入了一条数据,delete了一条数据,又插入了一条记录,那么我应该怎么恢复?
1、查看现在binglog运行的日志,show master status; 效果如下图:
2、具体的MySQL的一个binlog恢复,暂时遇不到,先不管了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效