mysqldump冷备份
数据库备份的重要性
- 提高系统的高可用性和灾难可恢复性,在数据库系统崩溃时,没有数据备份就没法找到数据。
- 使用数据库备份还原数据库,是数据库崩溃时提供数据恢复最小代价的最优方案。
- 没有数据库就没有一切,数据库备份是一种防范灾难的强力手段。
数据库备份的分类
- 物理备份:指对数据库操作系统的物理文件(例如数据文件、日志文件等)的备份。物理备份游客分为脱机备份(冷备份)和联机备份(热备份)。
 冷备份:在关闭数据库时进行的备份操作,能够较好地保证数据库的完整性。
 热备份:在数据库运行状态中进行操作,这种备份方法依赖于数据库的日志文件。
- 逻辑备份:指对数据库逻辑组件(如表等数据库对象)的备份。从数据库的备份策略角度,备份可分为完全备份、差异备份和增量备份。
 完全备份:每次对数据库进行完整的备份。可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。
 差异备份:备份那些自从上次完全备份之后被修改过的文件,只备份数据库的部分内容。
 增量备份:只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。
完全备份(在linux模式中进行备份操作)
完全物理备份
使用tar打包文件夹备份
- 数据库压缩时会使用压缩率较大的xz格式压缩。
rpm -q xz //检查xz软件包是否安装
 yum -y install xz //安装xz软件包
- 对数据库文件夹(/usr/local/mysql/data/)进行打包操作
tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/
 //备份数据库文件夹,并以年月日的形式命名
 ls /opt/
 mysql-2018-07-02.tar.xz 
- 对数据库文件进行恢复操作
 只需将数据库文件的压缩包,解压缩即可,即使整个/data/目录都丢失仍可找回mkdir /abc
 tar Jxf mysql-2018-07-03.tar.xz -C /abc/ 完全逻辑备份使用mysqldump工具备份
- 备份某个数据库
mysqldump -u root -p stady > /opt/stady.sql
 //备份stady库到/opt目录下,-p之后可跟密码,也可不写。不写就在回车之后输入密码验证。 **备份文件后缀都为.sql,前面名称见名知意即可** 
- 查看备份文件的内容  - 备份多个数据库
mysqldump -u root -p --databases mysql stady > /opt/mysql-stady.sql 
- 备份所有数据库
mysqldump -u root -p --opt --all-databases > /opt//all.sql
- 备份数据库中的表
mysqldump -u root -p stady info > /opt/stady-info.sql //险些库名,再接表名
- 备份数据库的表结构
mysqldump -u root -p -d stady info > /opt/decribe-info.sql
 // -d 库名+表名数据恢复登陆MySQL,使用source命令恢复
 
- 备份多个数据库
- 恢复”备份数据库中的表“步骤中的info表
[root@centos7-6 /]# mysql -u root -p
 Enter password:
 ··· //省略部分内容
 mysql> use stady; //切换到库
 Database changed
 mysql> drop table info; //删除info表
 Query OK, 0 rows affected (0.02 sec)
 mysql> show tables; //查看库中表
 Empty set (0.00 sec) //库中为空
 mysql> source /opt/stady-info.sql //恢复info表,格式是source+备份文件路径和文件名称
 Query OK, 0 rows affected (0.02 sec)
 ··· //省略部分内容
 mysql> show tables; //查看库中表
 +-----------------+
 | Tables_in_stady |
 +-----------------+
 | info | //info表已经成功恢复
 +-----------------+
 1 row in set (0.00 sec)
- 使用mysql命令恢复表
[root@centos7-6 /]# mysql -u root -p
 Enter password:
 ··· //省略部分内容
 mysql> use stady; //切换到库
 Database changed
 mysql> drop table info; //删除info表
 Query OK, 0 rows affected (0.02 sec)
 mysql> show tables; //查看库中表
 Empty set (0.00 sec) //库中为空
 mysql> quit //退出数据库,切换到linux
 Bye
 [root@centos7-6 /]# mysql -u root -p stady < /opt/stady-info.sql //在linux环境中恢复
 Enter password:
 [root@centos7-6 /]# mysql -u root -p //进入数据库查看
 Enter password:
 ··· //省略部分内容
 mysql> use stady;
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 Database changed
 mysql> show tables;
 +-----------------+
 | Tables_in_stady |
 +-----------------+
 | info | //info表已恢复
 +-----------------+
 1 row in set (0.00 sec)恢复库和恢复表的方式相同,但在恢复数据表时要注意,如果备份文件中只备份了表文件,此时mysql中又没有库时,若直接恢复,会失败,必须先创建库,然后再进行恢复。 增量备份在MySQL数据库中创建stady库,创建info表,并插入数据 mysql> use stady;
 mysql> select * from info;
 +----------+-------+
 | name | score |
 +----------+-------+
 | zhangsan | 80.00 |
 | lisi | 90.00 |
 +----------+-------+
 2 rows in set (0.00 sec)
- 开启二进制日志
vim /etc/my.cnf
 log-bin=mysql-bin //在[mysqld]段插入该语句
 systemctl restart mysqld.service //重启mysql服务,会在/data/目录下生成新的日志文件(空文件)  
- 使用mysqldump备份stady库
mkdir /backup
 mysqldump -u root -p stady > /backup/stady.sql
 mysqladmin -u root -p flush-logs //刷新生成新的日志文件,存在01中,新存在的02为空文件 
- 插入新数据,生成新的增量日志文件
mysql> insert into info (name,score) values ('chen',90);//进入数据库,向表中插入数据
 mysqladmin -u root -p flush-logs //刷新生成新的增量文件,增量备份保存在02中
 mysql> insert into info (name,score) values ('chen01',96);//再次进入数据库,向表中插入数据
 mysql> select * from info;
 +----------+-------+
 | name | score |
 +----------+-------+
 | zhangsan | 80.00 |
 | lisi | 90.00 |
 | chen | 90.00 |
 | chen01 | 96.00 |
 +----------+-------+
 4 rows in set (0.00 sec)
 mysqladmin -u root -p flush-logs //再次刷新,增量备份保存在03中 增量恢复
- 模拟数据丢失,删除新添加的两条记录
[root@centos7-6 data]# mysql -u root -p
 Enter password:
 mysql> use stady;
 Database changed
 mysql> delete from info where name='chen';
 Query OK, 1 row affected (0.00 sec)
 mysql> delete from info where name='chen01';
 Query OK, 1 row affected (0.00 sec)
 mysql> select * from info;
 +----------+-------+
 | name | score |
 +----------+-------+
 | zhangsan | 80.00 |
 | lisi | 90.00 |
 +----------+-------+
 2 rows in set (0.00 sec)
- 使用mysqlbinlog命令,恢复数据
[root@centos7-6 data]# mysqlbinlog --no-defaults mysql-bin.000002 | mysql -u root -p
 Enter password: //输入密码确认恢复数据
 [root@centos7-6 data]# mysql -u root -p
 Enter password: //输入密码登陆系统
 mysql> use stady;
 Database changed
 mysql> select * from info;
 +----------+-------+
 | name | score |
 +----------+-------+
 | zhangsan | 80.00 |
 | lisi | 90.00 |
 | chen | 90.00 |//增量备份的02数据成功恢复
 +----------+-------+
 3 rows in set (0.00 sec)使用mysqlbinlog查看增量备份文件的内容mysqlbinlog --no-defaults --base64-output-decode-rows -v /usr/local/mysql/data/mysql-bin.000002
 //--base64-output=decode-rows使用64位编码机制解码,按行读取 -v 显示出来
 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
 ··· //省略部分内容
 # at 345
 #180703 21:12:11 server id 1 end_log_pos 389 CRC32 0xb0bc2cb1 Write_rows: table id 118 flags: STMT_END_F
 ### INSERT INTO `stady`.`info`
 ### SET
 ### @1='chen'
 ### @2=90.00
 ···//省略部分内容在开启二进制日志之后就会在/data/目录下生成空的mysql-bin.000001文件,在使用该命令mysqladmin -u root -p flush-logs 后会将增量备份写入mysql-bin.000001,同时生成一个新的mysql-bin.000002空文件,等待下次刷新写入,同时再创建mysql-bin.000003…… 增量断点恢复模拟环境模拟插入数据出现误操作,在插入两条数据的同时,删除了一条正确的数据。 [root@centos7-6 data]# mysql -u root -p
 Enter password:
 mysql> use stady;
 Database changed
 mysql> insert into info (name,score) values ('test01',88);
 Query OK, 1 row affected (0.00 sec)
 mysql> delete from info where name='chen';
 Query OK, 1 row affected (0.00 sec)
 mysql> insert into info (name,score) values ('test02',88);
 Query OK, 1 row affected (0.01 sec)
 mysql> select * from info;
 +----------+-------+
 | name | score |
 +----------+-------+
 | zhangsan | 80.00 |
 | lisi | 90.00 |
 | test01 | 88.00 |
 | test02 | 88.00 |
 +----------+-------+
 4 rows in set (0.00 sec) //插入了两条test01和test02,但是chen被操作删除
 mysql> quit //退出数据库
 Bye
 [root@centos7-6 data]# mysqladmin -u root -p flush-logs //刷新生成新的增量文件,保存在04中
 Enter password:增量时间节点恢复
- 解码导出增量备份文件,便于查看和做恢复
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000004 > /backup/info.txt
 cd /backup记录错误操作的开始时间,以及正确操作的开始时间,恢复时跳过该时段的操作。  
- 根据时间点恢复被误操作的数据
mysql> drop table info; //删除被误操作的表
 mysql -u root -p stady < /backup/stady.sql //恢复完全备份的stady库
 mysqlbinlog --no-defaults --stop-datetime='2018-07-03 21:57:08' /usr/local/mysql/data/mysql-bin.000004 | mysql -u root -p //恢复误操作前的内容
 mysqlbinlog --no-defaults --start-datetime='2018-07-03 21:57:14' /usr/local/mysql/data/mysql-bin.000004 | mysql -u root -p //恢复误操作之后的内容
- 根据位置标记号恢复数据  mysql> drop table info; //删除被误操作的表
 mysql -u root -p stady < /backup/stady.sql //恢复完全备份的stady库
 mysqlbinlog --no-defaults --stop-position='1408' /usr/local/mysql/data/mysql-bin.000005 | mysql -u root -p
 mysqlbinlog --no-defaults --start-position='1674' /usr/local/mysql/data/mysql-bin.000005 | mysql -u root -p数据完成恢复 
mysqldump冷备份的更多相关文章
- Mysql实战之数据备份
		author:JevonWei 版权声明:原创作品 blog:http://119.23.52.191/ --- 数据备份和恢复 mysqldump 冷备份单库(不会创建新库,需要手动创建并指定导入数 ... 
- mysql备份工具 :mysqldump mydumper Xtrabackup  原理
		备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低.衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(R ... 
- MariaDB/MySQL备份和恢复(一):mysqldump工具用法详述
		本文目录:1.备份分类2.备份内容和备份工具3.mysqldump用法详述 3.1 语法选项 3.1.1 连接选项 3.1.2 筛选选项 3.1.3 DDL选项 3.1.4 字符集选项 3.1.5 复 ... 
- MySQL数据库备份工具mysqldump的使用(转)
		说明:MySQL中InnoDB和MyISAM类型数据库,这个工具最新版本好像都已经支持了,以前可能存在于MyISAM的只能只用冷备份方式的说法. 备份指定库: mysqldump -h127.0.0. ... 
- MYSQL5.6学习——mysqldump备份与恢复
		MYSQL备份 冷备份:停止服务进行备份,即停止数据库的写入 热备份:不停止服务进行备份(在线) l mysql的MyIsam引擎只支持冷备份,InnoDB支持热备份,原因: InnoDB引擎是事务 ... 
- mysqldump的用法
		1.mysqldump 是文本备份还是二进制备份 它是文本备份,如果你打开备份文件你将看到所有的语句,可以用于重新创建表和对象.它也有 insert 语句来使用数据构成表. mysqldump可产生两 ... 
- Mysql数据库之备份还原(mysqldump,LVM快照,select备份,xtrabackup)
		备份类型: 热备份:读写不受影响 温备份:仅可执行读备份 冷备份:离线备份,读写均不能执行,关机备份 物理备份和逻辑备份 物理备份:复制数据文件,速度快. 逻辑备份:将数据导出之文本文件中,必要时候, ... 
- MySQL/MariaDB数据库的冷备份和还原
		MySQL/MariaDB数据库的冷备份和还原 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL/MariaDB数据库的备份和还原概述 1>.为什么要备份 为了 ... 
- 数据库单,多,全库、冷热备份思路及备份与还原(mysqldump)
		热备份:服务开启状态下进行备份, 冷备份:服务关闭状态进行备份, 冷备份 数据库原有内容如下: MariaDB [(none)]> show databases;+--------------- ... 
随机推荐
- Linux 文本三剑客之 grep
			Linux 系统中一切皆文件. 文件是个文本.可以读.可以写,如果是二进制文件,还能执行. 在使用Linux的时候,大都是要和各式各样文件打交道.熟悉文本的读取.编辑.筛选就是linux系统管理员的必 ... 
- Go语言核心36讲(Go语言进阶技术十四)--学习笔记
			20 | 错误处理 (下) 在上一篇文章中,我们主要讨论的是从使用者的角度看"怎样处理好错误值".那么,接下来我们需要关注的,就是站在建造者的角度,去关心"怎样才能给予使 ... 
- Linux&C———进程间通信
			管道和有名管道 消息队列 共享内存 信号 套接字 由于进程之间的并不会像线程那样共享地址空间和数据空间,所以进程之间就必须有自己特有的通信方式,这篇博客主要介绍自己了解到的几种进程之间的通信方式,内容 ... 
- Jmeter下载安装(一)
			一.JMeter介绍 JMeter使用了不同技术和协议,是一款可以进行配置和执行负载测试.性能测试和压力测试的工具.负载测试.性能测试和压力测试概念: 负载测试: 这类测试使系统或者应用程 ... 
- 【pycharm】Python pip升级及升级失败解决方案,报错:You are using pip version 10.0.1, however version 21.3.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.
			我已经升级到了最新的版本 安装其他模块过程中出现下面提示,便说明你需要升级pip You are using pip version 10.0.1, however version 21.3.1 is ... 
- 几个你不知道的dubbo注册中心细节
			你会正确配置backup地址吗? 在配置dubbo注册中心时,一般会这样写 dubbo.registry.protocol=zookeeper dubbo.registry.address=127.0 ... 
- Idea tomcat debug按钮灰色无法运行
			打开Project Structure 2.选中src,点击按钮关闭界面,重启idea即可 
- maven中的distributionManagement的作用
			mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库. 本地Maven仓库的构件只能供当前用户使用,在分发到远程Ma ... 
- 动图图解!怎么让goroutine跑一半就退出?
			光看标题,大家可能不太理解我说的是啥. 我们平时创建一个协程,跑一段逻辑,代码大概长这样. package main import ( "fmt" "time" ... 
- 关于Java内存泄漏的介绍
			翻译自这篇文章 Java一个最显著的优势就是它的内存管理.你只需要简单地创建对象,而Java垃圾收集器会负责内存的分配与释放.不过,事情并没有那么简单,因为在Java应用中时常会出现内存泄漏. 1. ... 
