MySQL学习笔记(七)—— 数据备份还原
数据安全 - 数据备份
- 一、数据库备份的概念
- 1、数据库备份类型
- 2、数据库备份方式
- 3、数据库备份场景
- 二、mysqldump命令备份单库或者多库
- mysqldump使用语法:
- 三、MySQL的数据恢复
- 1、远程恢复数据(备份的数据文件里有创建库的语句):
- 2、远程恢复数据(备份的数据文件里没有创建库的语句):
- 四、物理备份
- 1、看数据源文件路径(一)
- 2、看数据源文件路径(二)
- 五、利用二进制日志mysqlbinlog备份数据
- 1、什么是二进制日志
- 2、二进制日志可以做什么
- 3、开启二进制日志会有什么损失?
- 4、查看二进制日志是否开启
- 5、开启二进制日志
- 6、查看所有的binlog日志列表
- 7、刷新二进制日志
- 8、重置(清空)二进制日志文件
- 9、使用mysqldump备份数据时,加上-F选项可以重新生成一个新的二进制日志文件
- 六、利用二进制日志mysqlbinlog恢复数据
- 1、查看二进制日志文件来恢复数据
- 2、把二进制文件导出普通文件
- 3、找出要恢复的位置
- 4、恢复数据
一、数据库备份的概念
(1)保护数据的安全;
(2)在出现意外的时候(硬盘的损坏,断电,黑客的攻击),以便数据的恢复;
(3)导出生产的数据以便研发人员或者测试人员测试学习;
(4)高权限的人员操作失误导致数据丢失,以便恢复;
1、数据库备份类型
- 完全备份(对整个数据库数据进行备份)
- 部分备份(一张表或者多张表)
- 增量备份:以上一次备份为基础,节约空间
- 差异备份:以第一次完全备份的基础来变更备份,浪费空间
2、数据库备份方式
- 逻辑备份:生成sql语句,还原时再进行执行sql。效率低,数据量大时尤其明显,但是逻辑备份占用空间小。
- 物理备份:直接复制相关库文件 …/mysql/mydata。浪费空间,恢复相对较快
3、数据库备份场景
- 热备份:在备份时,依然可以进行读写操作,业务不影响
- 温备份:在备份时,可以执行读操作,不能写操作
- 冷备份:在备份时,不能执行任何读写操作
二、mysqldump命令备份单库或者多库
mysqldump使用语法:
mysqldump -u 用户 -h host -p 密码 dbname table > 路径
-- 远程备份单库例子:
-- > 号相当于输出到哪个文件路径下
mysqldump -uroot -pabc123456 -h120.25.93.69 zabbix | gzip > /mysql_data_back/zabbix_users.sql.gz-- 远程备份单库例子并保留创建库语句:
mysqldump -uroot -pabc123456 -h120.25.93.69 --databases zabbix | gzip
> /mysql_data_back/zabbix_bak.sql.gz-- 远程备份单库单表的例子:
-- 在库的后边加上表的名字
mysqldump -uroot -pabc123456 -h120.25.93.69 zabbix users | gzip
> /mysql_data_back/zabbix_users.sql.gz
--远程备份多库的例子:
-- databases选项,备份中是否包含了创建库表信息
mysqldump -uroot -pabc123456 -h120.25.93.69 --databases zabbix XD | gzip
> /mysql_data_back/zabbix_XD.sql.gz-- 远程备份全库的例子:需要加上--all-databases选项
mysqldump -uroot -pabc123456 -h120.25.93.69 --all-databases | gzip > /mysql_data_back/all.sql.gz
数据量不算大的时候,就用这个命令挺合适
不建议将执行复制任务的mysqldump命令 执行在 数据 所在的服务器
三、MySQL的数据恢复
1、远程恢复数据(备份的数据文件里有创建库的语句):
mysql -uroot -pabc123456 -h120.25.93.69 < zabbix_bak.sql
2、远程恢复数据(备份的数据文件里没有创建库的语句):
mysql -uroot -pabc123456 -h120.25.93.69 zabbix < zabbix_bak.sql
四、物理备份
1、看数据源文件路径(一)
mysql> show variables like 'datadir%';
+---------------+---------------+
| Variable_name | Value |
+---------------+---------------+
| datadir | /data/mydata/ |
+---------------+---------------+
2、看数据源文件路径(二)
cat /etc/my.cnf
MyISAM表源文件:
db.opt:创建库的时候生成,主要存储着当前库的默认字符集和字符校验规则
.frm :记录着表结构信息的文件
.MYI:记录着索引的文件
.MYD :记录着表的数据
InnoDB表源文件:InnoDB有着共享表空间跟独立表空间的概念。
db.opt:创建库的时候生成,主要存储着当前库的默认字符集和字符校验规则
.frm:记录着表结构信息的文件
.ibd:独立表空间,里边记录这个表的数据和索引
ibdata1:共享表空间,里边记录表的数据和索引
请求全局读锁:
flush tables with read lock;
解锁:
unlock tables;
五、利用二进制日志mysqlbinlog备份数据
1、什么是二进制日志
二进制日志就是记录着mysql数据库中的一些写入性操作,比如一些增删改,但是,不包括查询!
2、二进制日志可以做什么
一般情况下,二进制日志有着数据复制和数据恢复的功能
3、开启二进制日志会有什么损失?
开启二进制日志会有1%的性能消耗!
4、查看二进制日志是否开启
mysql> show variables like 'log_bin%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
5、开启二进制日志
vi /etc/my.cnf[mysqld]
log-bin=/data/mydata/log_bin/mysql-bin
server-id=1
6、查看所有的binlog日志列表
mysql> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 23638 |
+------------------+-----------+
7、刷新二进制日志
flush logs;
8、重置(清空)二进制日志文件
mysql> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 1091 |
+------------------+-----------+
9、使用mysqldump备份数据时,加上-F选项可以重新生成一个新的二进制日志文件
mysqldump -uroot -p XD user -F > user_bak.sql
六、利用二进制日志mysqlbinlog恢复数据
1、查看二进制日志文件来恢复数据
[root@qsr log_bin]# mysqlbinlog mysql-bin.000002
mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8'
解决:
1、在mysqlbinlog 后边加上 --no-defaults
2、注释掉配置文件里边的default-character-set=utf8
2、把二进制文件导出普通文件
mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000002 > mysqlbin.sql
3、找出要恢复的位置
(1)找出关键字的行数:mysqlbinlog --no-defaults mysql-bin.000002 | cat -n | grep -iw 'drop'[root@qsr log_bin]# mysqlbinlog --no-defaults mysql-bin.000002 | cat -n | grep -iw 'drop'4180 DROP TABLE `user` /* generated by server */(2)打印出相关内容:mysqlbinlog --no-defaults mysql-bin.000002 | cat -n | sed -n '4170,4180p'[root@qsr log_bin]# mysqlbinlog --no-defaults mysql-bin.000002 | cat -n | sed -n '4170,4180p'4170 # at 595784171 #190419 0:41:48 server id 1 end_log_pos 59609 CRC32 0x36cda2b7 Xid = 63804172 COMMIT/*!*/;4173 # at 596094174 #190419 0:41:48 server id 1 end_log_pos 59674 CRC32 0x8de2f06a Anonymous_GTID last_committed=145 sequence_number=1464175 SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;4176 # at 596744177 #190419 0:41:48 server id 1 end_log_pos 59787 CRC32 0x6b2edd2b Query thread_id=14 exec_time=0 error_code=04178 use `XD`/*!*/;4179 SET TIMESTAMP=1555605708/*!*/;4180 DROP TABLE `user` /* generated by server */
[root@qsr log_bin]#
4、恢复数据
- 第一步:把备份的数据表user恢复到数据库中:
mysql -uroot -p XD < /mysql_data_back/user_bak.sql
- 第二步:利用上面找到的删除的位置进行恢复数据
mysqlbinlog --no-defaults --set-charset=utf8 --stop-position="59674" /data/mydata/log_bin/mysql-bin.000002 | mysql -uroot -p`
登录数据库查看数据是否恢复回来
MySQL学习笔记(七)—— 数据备份还原相关推荐
- mysql 权限 备份还原,MYSQL学习笔记09:备份还原,用户权限,外键
在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 整个数据库数据备份也称为sql数据备份:备份的结果都是sql指令 在mysql中,提供了专门用于备份sql的客户端: ...
- MySQL学习笔记5||数据查询select
备注:该博客内容根据技术教学视频整理与总结而成,原视频来自于尚硅谷MySQL教程. 一.基础查询 select from 语法: SELECT 要查询的东西[FROM 表名]; 特点: ...
- mysql没法修改数据_MySQL学习笔记之数据的增、删、改实现方法
本文实例讲述了MySQL学习笔记之数据的增.删.改实现方法.分享给大家供大家参考,具体如下: 一.增加数据 插入代码格式: insert into 表明 [列名-] values (值-) creat ...
- mysql分页概念_MySQL学习笔记之数据定义表约束,分页方法总结
本文实例讲述了MySQL学习笔记之数据定义表约束,分页方法.分享给大家供大家参考,具体如下: 1. primary key 主键 特点:主键是用于唯一标识一条记录的约束,一张表最多只能有一个主键,不能 ...
- MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- Mysql学习笔记(七)查(补充)
Mysql学习笔记(七)查(补充) 原文:Mysql学习笔记(七)查(补充) PS:五一还是要学习...虽然有点苦逼..但是路是自己选的,那么自己就要坚持的走下去... 学习内容: 1.数据库查找的补 ...
- MySQL学习笔记8:权限管理、数据库备份与设计
1.前言 学习视频源自:[狂神说Java]MySQL最新教程通俗易懂 B站视频链接:https://www.bilibili.com/video/BV1NJ411J79W [狂神说Java]MySQL ...
- Mysql学习笔记(二)——表格及数据的插入
Mysql学习笔记(二)--表格及数据的插入 文章目录 Mysql学习笔记(二)--表格及数据的插入 1.Mysql常用指令 2.创建表格 A.数据类型 B.完整性约束条件 3.查看表格 4.修改表格 ...
- MYSQL学习笔记(自用)第七章
MYSQL学习笔记(自用)第七章 第一节.创建视图| Creating Views USE sql_invoicing;CREATE VIEW sales_by_client AS SELECT c. ...
- MySQL学习笔记-约束以及修改数据表
MySQL学习笔记-约束以及修改数据表 约束: 按功能划为: NOT NULL , PRIMARY KEY , UNIQUE KEY , DEFAULT , FOREIGN KEY 按数据列的数目划为 ...
最新文章
- 香港大学工程学院计算机教授,香港大学郑振刚教授访问软件园校区
- java web项目使用log4j的使用笔记
- 【Android View绘制之旅】Draw过程
- java 大臣的旅费_PREV-9-蓝桥杯-历届试题-大臣的旅费-java
- 成功解决AttributeError: module 'tensorflow.python.ops.nn' has no attribute '_seq2seq'
- 吴恩达 coursera ML 第三课总结
- Qt文档阅读笔记-QWebEngineView及QML WebEngineView
- 我修改的IP地址掩码 呵呵~~开心
- 腾讯发力研发文化升级,宣布加入Linux基金会TODO 工作组
- python数据环境的搭建_Python数据分析环境搭建
- Python:计算器(代码全+解析+实现结果)
- win10配置计算机环境变量,教你win10怎么设置环境变量
- 两种异步时钟同步化区别分析
- python绘制线段_绘制线条点图
- python修改图片,Python之修改图片像素值的方法
- K8s 集群节点在线率达到 99.9% 以上,扩容效率提升 50%,我们做了这 3 个深度改造...
- 在datadog中对某个主机上的进程进行监控
- 2019 华为手机录屏adb命令不识别
- 音乐平台程序源码分享
- 华为防火墙配置流量根据链路权重负载分担