MySQL的备份与恢复具体解释

MySQL数据备份

在mySQL里面,有逻辑备份和物理备份。逻辑备份最大长处是对于各种存储引擎,都能够使用相同的方法来备份。

而物理备份则不同。不同的存储引擎有着不同的备份方法。

逻辑备份与恢复

备份

在MySQL中逻辑备份是使用mysqldump将数据库中的数据备份为一个文本文件,备份的文件能够被查看和编辑。依照备份范围,能够将备份分为下面三种备份。

  • 备份指定的一个数据库或者该数据库中的某些表

    mysqldump [options] 数据库名 [表名] > data.sql

  • 备份指定的多个数据库

    mysqldump [options] –database > data.sql 数据库1名 数据库2名 数据库3名…

  • 备份全部的数据库

    mysqldump [options] –all-database > data.sql

    解析:[options] 备份时候。须要的权限信息等。

    mysqldump的选项非常多,详细能够通过mysqldump –help来查看。 为了保证数据备份一致性。MySQL存储引擎在北方时候,须要加上-l 參数,表示将全部表加上读锁。在备份期间。全部的表将仅仅能读,而不能写。可是对于InnoDB引擎来说,能够採用–single-transaction。data.sql备份的数据文件

    參数:

    l:代表给全部表加锁

    f:代表生成一个新的日子文件

实例将xxpt数据库中全部表备份到dequan.sql表中。

命令例如以下:

mysqldump -uroot -p xxpt >dequan.sql

由于上面我没有指定备份路径,默认情况下,会备份到当前路径,所以备份到D:\wamp\bin\mysql\mysql5.6.17\bin路径下了。

恢复

全然恢复

mysqldump的恢复也非常easy。将备份作为输入运行就可以。结果例如以下:

mysql -uroot -p dbname

不全然恢复

不全然恢复包括基于时间点的恢复和基于位置的恢复。时间点与位置是相相应二进制日志(binlog日志)里面的时间点和位置。

基于时间点

将设下午4:00到下午5:00之前的数据室错误的。恢复时候。须要跳过。首先我们来看一下binlog日志。例如以下午4点多更新数据是错误的,恢复时候须要跳过。下午5点多删除数据是正确的。须要保留。

1.通过mysql -uroot -p dbname

基于位置的恢复

使用位置恢复时候,我们须要先查看binlog日志文件,确定位置编号,然后使用例如以下命令进行恢复:

mysqlbinlog D:\wamp\bin\mysql\mysql5.6.17\data\mybinlog.000012 –stop-position=716406|mysql -uroot -p

恢复5点之后的操作

D:\wamp\bin\mysql\mysql5.6.17\data\mybinlog.000012 –start-position=723613|mysql -uroot -p

物理备份与恢复

物理备份分为冷备份和热备份。和逻辑备份相比,它的最大长处是备份和恢复的速度快。

由于物理备份的原理都是基于文件的cp。

冷备份与恢复

冷备份事实上就是将停掉数据库服务,复制数据文件的方法。这样的方法对MyISAM和InnoDB都适合。

恢复:首先停掉Mysql服务。在操作系统级别恢复MySQL的数据文件,然后重新启动Mysql服务,使用Mysqlbinlog工具恢复备份以来的全部binlog。

热备份

在mysql中不同存储引擎的热备份时不相同的。

MyISAM存储引擎

MyISAM存储引擎备份原理就是将要备份的表加读锁,然后在cp数据文件到备份文件夹。经常用法

  • 方法一:使用mysqlhotcop

    mysqlhotcop db_name [文件夹]

  • 方法二:手工锁表copy

    首先给数据库中全部表加读锁。然后cp数据。

    锁定全部表flush tables with read lock;

InnoDB存储引擎

正在学习中···

表的导入与导出

导出

  • 使用SELECT …INTO OUTFILE …+[options]命令实现

    关于options參数例如以下

    默认路径为该数据相应的路径下:

  • 使用mysqldump

    mysqldump -u username -T targetDir dbname tableName[options]

    比方:

    mysqldump -uroot -p -T D:/wamp/bin/mysql/mysql5.6.17/ xxpt t1

    生成了两个文件。例如以下图:

    t1.txt中保存中数据信息,t1.sql文件内容例如以下

-- MySQL dump 10.13  Distrib 5.6.17, for Win32 (x86)
--
-- Host: localhost    Database: xxpt
-- ------------------------------------------------------
-- Server version   5.6.17-log

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @[email protected]@TIME_ZONE */;
/*!40103 SET TIME_ZONE=‘+00:00‘ */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE=‘‘ */;
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `t1`
--

DROP TABLE IF EXISTS `t1`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t1` (
  `id1` int(11) NOT NULL DEFAULT ‘0‘,
  `id2` int(3) unsigned zerofill NOT NULL DEFAULT ‘000‘
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

/*!40103 SET [email protected]_TIME_ZONE */;

/*!40101 SET [email protected]_SQL_MODE */;
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;
/*!40111 SET [email protected]_SQL_NOTES */;
-- Dump completed on 2016-04-18 19:30:51

导入

方法一:

load data infile

eg:

load data infile ‘D:/wamp/bin/mysql/mysql5.6.17/t1.txt’ into table t1;

方法二:使用mysqlinport

时间: 2024-08-02 02:43:32

MySQL的备份与恢复具体解释的相关文章

利用mysqlbump实现MySQL逻辑备份与恢复

mysqldump作为重要的MySQL备份工具,功能相当强大.备份参数.恢复策略,需要仔细研究. (1)基本语法 备份单个数据库或单个数据库中的指定表: mysqldump [OPTIONS] database [tables] 示例: 1.备份单个数据库mysql:mysqldump -uroot -p mysql > mysql.sql 2.备份单个数据库mysql的指定表user:mysqldump -uroot -p mysql user > mysql.user.sql 备份多个数据

mysql数据库log-slave-updates 参数解释

Mysql数据库log-slave-updates 参数解释 最近学mysql复制时,log-slave-updates参数一直没有搞明白这个参数有什么意义.在上网查了一下,发现网友解释的,我也没有看懂..估计是我这人比较笨的缘故吧...我这人比较笨也比较爱钻牛角.别人可能听老师讲课时,就直接听明白了.当时上课时,我也感觉没有什么问题.但是晚上躺床上回想这些内容的时候,发现还是有疑问..想了好几天才想明白..虽然这参数让我花费了很多时间才想明白,但是心里很高兴.... 如果写的不对,还请大家批评

MySql 的备份与恢复

Linux下的mysql的备份与恢复 备份: 比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldump 命令格式如下: [[email protected] root]# mysqldump -u root -p linux > /root/linux.sql Enter password:在这里输入数据库的密码 通过上面的命令,我们要明白两件事,首先备份数据库是要以数据库管理员的身份备份:其次:备份目的地是/root,备份的文件名是linux.sql.其实备份的

MySQL增量备份与恢复实例【转】

小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的MySQL版本为5.5.40 for Linux (x86_64). 增量备份要确保打开了二进制日志,参考mysql的日志系统: mysql> show variables like '%log_bin%'; 首先对pak数据库做一个完整备份: $ mysqldump -h localhost -u

2.MySQL用户管理,常用SQL语句,MySQL数据库备份与恢复

[toc] MySQL用户管理,重用SQL语句,MySQL数据库备份与恢复 一.MySQL用户管理 1.创建一个普通用户并授权 首先启动mysql,然后进入 [[email protected] ~]# /etc/init.d/mysqld start Starting MySQL... SUCCESS! [[email protected] ~]# mysql -uroot -pxavilinux Warning: Using a password on the command line in

96.创建普通用户并授权,常用SQL语句,MySQL数据库备份与恢复

一.创建普通用户并授权 1.创建用户并授权 [[email protected] ~]# mysql -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.6.36 MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/o

MySQL增量备份与恢复

MySQL增量备份与恢复 技能目标 理解MySQL增量备份的概念 理解MySQL增量备份与恢复的方法 1:增量备份的概念 完全备份每次把所有文件全部备份一边占用空间较大,增量备份就解决了这一问题它可以在你完全备份后如果做了修改或者需要备份的文件不大就用增量备份去解决这一问题 2:增量备份的特点 (1)二进制文件保存了所有更新或者可能更新数据库操作 (2)二进制文件在启动MySQL服务后开始记录 (3)只需要执行刷新就能创建新日志 增量备份实战演练 下面是生产环境中的案例,对它进行增量备份操作 1

Mysql错误编码和解释表

Mysql错误编码和解释表1.错误消息的组成 一共由三部分组成 mysql数字错误代码,这个数字的mysql的特定值,不可以移植到其它数据库系统. 一个五位长度的sqlstate值,这些值取自ANSI SQL和ODBC,并且更加标准化.并不是所有的MySQL错误号都具有相应的SQLSTATE值.在这些情况下,使用'HY000' (一般错误). 错误的消息描述 2.一些额外的说明 如果需要错误检查,请使用错误代码,而不是错误消息. 如果数据库管理员更改语言设置,则会影响错误消息的语言. 错误代码在

很经典的mysql的幻读解释

http://blog.sina.com.cn/s/blog_499740cb0100ugs7.html 上述链接很经典的解释了mysql的mvcc为什么是部分解决了幻读的问题. 同时我需要理解的是,在业务逻辑中,事务是可以分散在业务代码里面的,并不是说一条语句写出.比如,我们启动了一个事务,start transaction.先获取数据库中的数据,然后在业务中判断该条件是否符合自己的业务逻辑,如果是的话,那么就可以插入一部分数据.但是这个时候可能也有别的数据插入进来了,产生了冲突,导致当前的数