mysqldump备份与恢复 之 黑锅侠
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,公司这几天数据库有数据丢失,所以找到运维部门要恢复数据库,但是我们的工程师,在执行完恢复命令后,提示语法错误,并没有恢复数据库,坑爹啊~~~具体原因:由于备份时语法错误 或 指定的目录不存在,但在备份
千家信息网最后更新 2025年02月02日mysqldump备份与恢复 之 黑锅侠
公司这几天数据库有数据丢失,所以找到运维部门要恢复数据库,但是我们的工程师,在执行完恢复命令后,提示语法错误,并没有恢复数据库,坑爹啊~~~
具体原因:由于备份时语法错误 或 指定的目录不存在,但在备份的时候又没报错,所以工程师以为备份成功了,最终酿成大祸;(成为黑锅侠)
公司最终开恩,每人扣除1000元的惩罚,下面来总结并模拟下正常过程。
博主新的博客地址: https://www.dgstack.cn/ 进入有惊喜哦~~ 欢迎收藏
一、错误备份演示
语法出错,备份失效看似备份成功,但查看备份内容时,出现语法错误的警告
[root@db02 ~]# mysqldump -uroot -poldboy123 -A -B oldboy >/opt/oldboy_bak1.sql[root@db02 ~]# cat /opt/oldboy_bak1.sqlUsage: mysqldump [OPTIONS] database [tables]OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]OR mysqldump [OPTIONS] --all-databases [OPTIONS]For more options, use mysqldump --help#提示:#1,错误点就是 -A 与 [-B 指定库名] 不能同时使用,会产生语法错误,看下面解释就明白了,指定的范围有冲突#-A:--all databases 所有数据库备份#-B:指定多个数据库备份 增加建库语句及use语句 #mysql 不能使用kill -9 否则后果自负;
补充强调:我们平时发帖子,都是通过web服务器连接mysql,之后通过insert语句把数据存入数据库
mysqldump的参数说明,总结常用的几个:
-A:--all databases 所有数据库备份-B:指定多个数据库备份 增加建库语句及use语句--compact 减少无用输出---去掉备份文件中注释的SQL语句,适合调试,生产中不建议使用-F 刷新binlog日志,生产新文件,将来增量从这个新文件开始(完整恢复=全备+临界点binlog)--master-data 增加binlog日志文件名及对应的位置点(有锁表功能)(即CHANGE MASTER 语句)--master-data=1 不注释可执行 --master-data=2 注释信息(-x 是锁表,为什么要锁表?主要是确保备份数据的完整性,不要出现"锯齿状"数据,尽量在业务低谷时备份或内部专门用于备份的从数据库 在锁表-l 对所有表加读锁。(默认是打开的,用--skip-lock-tables来关闭,上面的选项会把关闭-l选项)-d 只备份库表结构无数据-t 只备份数据无表结构 SQL语句形式-T 库表,数据分离不同文件,数据是文本形式、--single-transaction 适合InnoDB数据数据库备份,它有Acid 特性,隔离性:执行dump后,只能看到之前的数据,之后插入的被隔离-q, --quick 直接导出不写入内存 Don't buffer query, dump directly to stdout.##快速 (Defaults to on; use --skip-quick to disable.)--single-transaction 备份期间不锁表,又能保证数据一致性(基于innodb引擎),例如给每个人照相,"快照"-S 多实例指定socket
出现events-warning,下面是 处理方法:
这是因为mysqldump默认是不备份事件表的,只有加了--events 才会,解决办法: 加上--events 或 --ignore-table=mysql.events 参数即可; #导出事件 #忽略某个表的意思,可以mysqldump --help 查看mysqldump -uroot -poldboy123 -S /data/3307/mysql.sock --events -A >all.sql
-B的"增加建库语句"作用
如果没有-B这个参数 备份文件中就不会有如下内容,在恢复的时候不会有建库的动作
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysql` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `mysql`;
如何拒绝成为黑锅侠:胆大心细,善于总结,吸取经验,脱离黑锅;
二,正确备份演示
定期做备份恢复演练 或恢复测试
1,在test数据库中创建student表
mysql> use test; ##进入test库create table student(id int(4) not null,name char(20) not null,age tinyint(2) NOT NULL default '0',dept varchar(16) default NULL);##创建student表 里面是各个字段的设置
2,备份数据库test
mysqldump -uroot -poldboy123 -S /data/3307/mysql.sock -B test >/opt/test.sqlcat /opt/test.sql #检测备份是否有效
3,删除test库(模拟真实环境)
mysql> drop database test;Query OK, 0 rows affected (0.00 sec)mysql> show databases; #没有test数据了+--------------------+| Database |+--------------------+| information_schema || mysql || oldboy || performance_schema |+--------------------
4,恢复test库
[root@db02 ~]# mysql -uroot -poldboy123 -S /data/3307/mysql.sock show databases; #恢复test库,因为之前使用-B备份的,所以现在不用指定库,直接恢复mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || oldboy || performance_schema || test |+--------------------+5 rows in set (0.00 sec)mysql> desc student;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id | int(4) | NO | | NULL | || name | char(20) | NO | | NULL | || age | tinyint(2) | NO | | 0 | || dept | varchar(16) | YES | | NULL | |+-------+-------------+------+-----+---------+-------+4 rows in set (0.00 sec)
到此,模拟数据恢复成功。
备份
数据
数据库
语句
文件
语法
错误
黑锅
成功
参数
注释
事件
公司
内容
多个
工程
工程师
形式
日志
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
马鞍山招网络技术
超星平台连接服务器失败
数据库技术和支持平台基本概念
网络安全展深圳
数据库连接池技术大全
未成年网络安全手抄报模板难
数据库原理与应用下载
南京品质联想服务器供应商
管理类读计算机网络技术好吗
把手机变成服务器
吉林特种网络技术优势
网络安全宣传月
组建软件开发团队需要什么人
网络安全警察报警电话
网络安全联络员
云服务器的数据库容量多大
国家网络安全边界
网络安全学习经验
网上购物软件开发计划书
网络技术知识基础
win10服务器安装不了软件
效果图制作软件开发
力控数据库不运行一直初始化
分布式服务器最多的区域
数据库设计表是什么
无锡无线网络技术有哪些
教育系统网络安全宣传画三年级
如何设置默认数据库文件夹里
守望先锋体验服自建服务器
千星科技网络技术有限公司