我的MYSQL学习心得备份和恢复

时间:2019-05-12 13:35:16下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《我的MYSQL学习心得备份和恢复》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《我的MYSQL学习心得备份和恢复》。

第一篇:我的MYSQL学习心得备份和恢复

备份

逻辑备份方法

使用MYSQLDUMP命令备份

MYSQLDUMP是MYSQL提供的一个非常有用的数据库备份工具。mysqldump命令执行时将数据库备份成一个文本文件,该文件中实际上包含了多个CREATE 和INSERT语句,使用这些语句可以重新创建表和插入数据

MYSQLDUMP的语法和选项

mysqldump-u user-p pwd-h host dbname[tbname,[tbname...]]>filename.sql

选项/Option 作用/Action Performed--add-drop-table

这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除--add-locks这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作-c or-complete_insert 这个选项使得mysqldump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。--delayed-insert 在INSERT命令中加入DELAY选项-F or-flush-logs 使用这个选项,在执行导出之前将会刷新MySQL服务器的log.-f or-force 使用这个选项,即使有错误发生,仍然继续导出--full 这个选项把附加信息也加到CREATE TABLE的语句中-l or-lock-tables 使用这个选项,导出表的时候服务器将会给表加锁。-t or-no-create-info 这个选项使的mysqldump命令不创建CREATE TABLE语句,这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。-d or-no-data 这个选项使的mysqldump命令不创建INSERT语句。

在您只需要DDL语句时,可以使用这个选项。--opt 此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。-q or-quick 这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。-T path or-tab = path 这个选项将会创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。DDL文件被命名为table_name.sql,数据文件被命名为table_name.txt.路径名是存放这两个文件的目录。目录必须已经存在,并且命令的使用者有对文件的特权。-w “WHERE Clause” or-where = “Where clause ” 如前面所讲的,您可以使用这一选项来过筛选将要放到 导出文件的数据。

假定您需要为一个表单中要用到的帐号建立一个文件,经理要看今年(2004年)所有的订单(Orders),它们并不对DDL感兴趣,并且需要文件有逗号分隔,因为这样就很容易导入到Excel中。为了完成这个任务,您可以使用下面的句子:

bin/mysqldump –p –where “Order_Date >='2000-01-01'” –tab = /home/mark –no-create-info –fields-terminated-by=, Meet_A_Geek Orders 这将会得到您想要的结果。schema:模式

The set of statements, expressed in data definition language, that completely describe the structure of a data base.一组以数据定义语言来表达的语句集,该语句集完整地描述了数据库的结构。SELECT INTO OUTFILE :

mysqldump提供了很多选项,包括调试和压缩的,在这里只是列举最有用的。运行帮助命令mysqldump--help可以获得特定版本的完整选项列表

user表示用户名称;

host表示登录用户的主机名称; pwd为登录密码;

dbname为需要备份的数据库名称;

tbname为dbname数据库中需要备份的数据表,可以指定多个需要备份的表; 右箭头“>”告诉mysqldump将备份数据库表定义和数据写入备份文件; filename为备份文件的名称

1、使用mysqldump备份单个数据库中的所有表 数据库的记录是这样的

打开cmd,然后执行下面的命令

可以看到C盘下面已经生成了school_2014-7-10.sql文件

使用editplus来打开这个sql文件

--MySQL dump 10.13 Distrib 5.5.20, for Win32(x86)----Host: 127.0.0.1 Database: school---------------------------Server version 5.5.20-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8 */;/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;/*!40103 SET TIME_ZONE='+00:00' */;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;----Table structure for table `book`--DROP TABLE IF EXISTS `book`;/*!40101 SET @saved_cs_client = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CREATE TABLE `book`(`bookid` int(11)NOT NULL, `bookname` varchar(255)NOT NULL, `authors` varchar(255)NOT NULL, `info` varchar(255)DEFAULT NULL, `comment` varchar(255)DEFAULT NULL, `year_publication` year(4)NOT NULL, KEY `BkNameIdx`(`bookname`))ENGINE=MyISAM DEFAULT CHARSET=utf8;/*!40101 SET character_set_client = @saved_cs_client */;----Dumping data for table `book`--

LOCK TABLES `book` WRITE;/*!40000 ALTER TABLE `book` DISABLE KEYS */;INSERT INTO `book` VALUES(1,'鍓戝湥','灏忔槑','13','hao',2013);/*!40000 ALTER TABLE `book` ENABLE KEYS */;UNLOCK TABLES;----Table structure for table `student`--DROP TABLE IF EXISTS `student`;/*!40101 SET @saved_cs_client = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CREATE TABLE `student`(`stuno` int(11)DEFAULT NULL, `stuname` varchar(60)DEFAULT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8;/*!40101 SET character_set_client = @saved_cs_client */;----Dumping data for table `student`--

LOCK TABLES `student` WRITE;/*!40000 ALTER TABLE `student` DISABLE KEYS */;INSERT INTO `student` VALUES

(2,'xiaofang'),(3,'zhanghai'),(6,'haojie');/*!40000 ALTER TABLE `student` ENABLE KEYS */;UNLOCK TABLES;----Table structure for table `stuinfo`--DROP TABLE IF EXISTS `stuinfo`;/*!40101 SET @saved_cs_client = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CREATE TABLE `stuinfo`(`stuno` int(11)DEFAULT NULL, `class` varchar(60)DEFAULT NULL, `city` varchar(60)DEFAULT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8;/*!40101 SET character_set_client = @saved_cs_client */;----Dumping data for table `stuinfo`--

LOCK TABLES `stuinfo` WRITE;/*!40000 ALTER TABLE `stuinfo` DISABLE KEYS */;INSERT INTO `stuinfo` VALUES

(1,'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong');/*!40000 ALTER TABLE `stuinfo` ENABLE KEYS */;UNLOCK TABLES;/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;--Dump completed on 2014-07-23 22:04:16

可以看到,备份文件包含了一些信息,文件开头首先写明了mysqldump工具的版本号; 然后是主机信息,以及备份的数据库名称,最后是mysql服务器的版本号5.5.20

备份文件接下来的部分是一些SET语句,这些语句将一些系统变量赋值给用户定义变量,以确保被恢复的数据库的系统变量和原来 备份时的变量相同 例如:

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;该set语句将当前系统变量character_set_client的值赋值给用户变量@OLD_CHARACTER_SET_CLIENT 备份文件的最后几行mysql使用set语句恢复服务器系统变量原来的值,例如:

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;该语句将用户定义变量@OLD_CHARACTER_SET_CLIENT 中保存的值赋值给实际的系统变量OLD_CHARACTER_SET_CLIENT 备份文件中的“--”字符开头的行为注释语句;以“/*!”开头、以“*/”结尾的语句为可执行的mysql注释,这些语句可以被mysql执行

但在其他数据库管理系统将被作为注释忽略,这可以提高数据库的可移植性

另外注意到,备份文件开始的一些语句以数字开头,这些数字代表了mysql版本号,该数字告诉我们这些语句只有在指定的mysql版本 或者比该版本高的情况下才能执行。

例如:40101,表明这些语句只有在mysql版本为4.01.01或者更高版本的条件下才可以执行

2、使用mysqldump备份数据库中的某个表 备份school数据库里面的book表

--MySQL dump 10.13 Distrib 5.5.20, for Win32(x86)----Host: 127.0.0.1 Database: school---------------------------Server version 5.5.20-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8 */;/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;/*!40103 SET TIME_ZONE='+00:00' */;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;----Table structure for table `book`--DROP TABLE IF EXISTS `book`;/*!40101 SET @saved_cs_client = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CREATE TABLE `book`(`bookid` int(11)NOT NULL, `bookname` varchar(255)NOT NULL, `authors` varchar(255)NOT NULL, `info` varchar(255)DEFAULT NULL, `comment` varchar(255)DEFAULT NULL, `year_publication` year(4)NOT NULL, KEY `BkNameIdx`(`bookname`))ENGINE=MyISAM DEFAULT CHARSET=utf8;/*!40101 SET character_set_client = @saved_cs_client */;----Dumping data for table `book`--

LOCK TABLES `book` WRITE;/*!40000 ALTER TABLE `book` DISABLE KEYS */;INSERT INTO `book` VALUES(1,'剑圣','小明','13','hao',2013);/*!40000 ALTER TABLE `book` ENABLE KEYS */;UNLOCK TABLES;/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;--Dump completed on 2014-07-23 22:24:29

备份文件中的内容跟前面的介绍是一样的,唯一不同的是只包含了book表的CREATE语句和INSERT语句

3、使用mysqldump备份多个数据库

如果要使用mysqldump备份多个数据库,需要使用--databases参数。

使用--databases参数之后,必须指定至少一个数据库的名称,多个数据库名称之间用空格隔开

使用mysqldump备份school库和test库

备份文件里的内容,基本上跟第一个例子一样,但是指明了里面的内容那一部分属于test库,哪一部分属于school库

View Code

4、使用--all-databases参数备份系统中所有的数据库 使用--all-databases不需要指定数据库名称

执行完毕之后会产生all_2014-7-10.sql的备份文件,里面会包含了所有数据库的备份信息

提示:如果在服务器上进行备份,并且表均为myisam,应考虑使用mysqlhotcopy 因为可以更快地进行备份和恢复

使用mysqlhotcopy,如果是Windows操作系统,需要先安装perl脚本组件才能使用,因为mysqlhotcopy是使用perl来编写的提示

(1)如果你未使用--quick或者--opt选项,那么mysqldump将在转储结果之前把全部内容载入到内存中。这在你转储大数据量的数据库时将会有些问题。该选项默认是打开的,但可以使用--skip-opt来关闭它。

(2)使用--skip-comments可以去掉导出文件中的注释语句

(3)使用--compact选项可以只输出最重要的语句,而不输出注释及删除表语句等等(4)使用--database或-B选项,可以转储多个数据库,在这个选项名后的参数都被认定为数据库名

SQLSERVER逻辑备份

我发现SQLSERVER的备份概念并没有ORACLE和MYSQL那么多 我们通常都会使用下面的两个SQL语句来备份SQLSERVER数据库,例如备份test库

BACKUP DATABASE test TO DISK='c:test.bak' BACKUP LOG test TO DISK='c:test_log.bak'

第一个SQL是完整备份test库,如果加上WITH DIFFERENTIAL就是差异备份 第二个SQL是备份test库的日志

实际上从我眼中的理解,SQLSERVER就是将数据文件和必要的日志信息放入一个压缩包里面,类似于MYSQL的物理备份,直接复制文件,只是MYSQL并没有进行打包压缩

SQLSERVER的逻辑备份

逻辑备份就是生成表定义脚本和数据插入脚本,SQLSERVER2008开始支持生成数据脚本,在SQLSERVER2008之前只支持生成表定义脚本 我所用的数据库是SQLSERVER2012 SP1 选中需要生成脚本的数据库

比如我要导出test表的数据和表定义

要选择架构和数据,并且要选择索引,这样就会生成表的数据、定义、索引

生成的脚本如下

USE [sss]GO/****** Object: Table [dbo].[test] Script Date: 2014/7/24 11:27:44 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[test]([a] [int] NULL)ON [PRIMARY]

GOINSERT [dbo].[test]([a])VALUES(10)GO

由于test表是没有任何索引的,所以脚本里看不到CREATE INDEX语句

实际上各种数据库的备份恢复方法都是大同小异的 ORACLE冷备份与恢复

逻辑备份和物理备份

1、导出create table、create index、insert into 表等语句(逻辑备份)mysql:mysqldump、load data infile、select into outfile sqlserver:生成脚本、导入导出向导 oracle:(exp/imp)

2、直接复制文件(物理备份)

sqlserver:backup database语句、backup log语句、停SQLSERVER服务直接拷贝数据文件

mysql:mysqlhotcopy、innobackupex oracle:rman、直接将关键性文件拷贝到另外的位置、(exp/imp)、(expdp/impdp)相似点:上面的各种数据库的各种备份还原方法,每一种基本上都会有一个单独的工具来做 例如sqlserver导入导出向导就是一个单独的exe来做 oracle的rman也是一个单独的工具

冷备份和热备份:无论oracle、sqlserver、mysql都有冷备份和热备份的概念 冷备份其实可以简单理解为:停止服务进行备份

热备份其实可以简单理解为:不停止服务进行备份(在线)上面的停止服务,正确的来讲应该是停止数据库的写入

为什么mysql的myisam引擎只支持冷备份呢? 大家可以先想一下innodb引擎,innodb引擎是事务性存储引擎,每一条语句都会写日志,并且每一条语句在日志里面都有时间点

那么在备份的时候,mysql可以根据这个日志来进行redo和undo,将备份的时候没有提交的事务进行回滚,已经提交了的进行重做

但是myisam不行,myisam是没有日志的,为了保证一致性,只能停机或者锁表进行备份

在书《MYSQL性能调优和架构设计》里面说到了事务的作用

大家可以想一想,为什么sqlserver支持从某一个lsn或者时刻进行恢复数据库,他也是从日志里面读取日志的lsn号来进行恢复到某一个lsn时刻的数据或者某一个时刻的数据 假如没有事务日志,那么sqlserver是做不到时点还原的热备份、冷备份

为什么SQLSERVER需要停止SQLSERVER服务才可以拷贝物理数据文件,为的都是保证数据一致性

物理备份方法

1、直接复制整个数据库目录

因为MYSQL表保存为文件方式,所以可以直接复制MYSQL数据库的存储目录以及文件进行备份。

MYSQL的数据库目录位置不一定相同,在Windows平台下,MYSQL5.6存放数据库的目录通常默认为

C:Documents and SettingsAll UserApplication DataMySQLMYSQL Server 5.6data 或者其他用户自定义的目录;

在Linux平台下,数据库目录位置通常为/var/lib/mysql/,不同Linux版本下目录会有不同

这是一种简单、快速、有效的备份方式。要想保持备份一致,备份前需要对相关表执行LOCK TABLES操作,然后对表执行 FLUSH TABLES。这样当复制数据库目录中的文件时,允许其他客户继续查询表。需要FLUSH TABLES语句来确保开始 备份前将所有激活的索引页写入磁盘。当然,也可以停止MYSQL服务再进行备份操作

这种方法虽然简单,但并不是最好的方法。因为这种方法对INNODB存储引擎的表不适用。使用这种方法备份的数据最好还原

到相同版本的服务器中,不同的版本可能不兼容。

注意:在mysql版本中,第一个数字表示主版本号,主版本号相同的MYSQL数据库文件格式相同

2、使用mysqlhotcopy工具快速备份

mysqlhotcopy是一个perl脚本,最初由Tim Bunce编写并提供。他使用LOCK TABLES、FLUSH TABLES和cp或scp 来快速备份数据库。他是备份数据库或单个表的最快途径,但他只能运行在数据库目录所在机器上,并且只能备份myisam类型的表。语法

mysqlhotcopy db_name_1,...db_name_n /path/to/new_directory db_name_1...n代表要备份的数据库的名称; path/to/new_directory指定备份文件目录

示例

在Linux下面使用mysqlhotcopy备份test库到/usr/backup mysqlhotcopy-u root-p test /usr/backup

要想执行mysqlhotcopy,必须可以访问备份的表文件,具有那些表的SELECT权限、RELOAD权限(以便能够执行FLUSH TABLES)和LOCK TABLES权限

提示:mysqlhotcopy只是将表所在目录复制到另一个位置,只能用于备份myisam和archive表。备份innodb表会出现错误信息

由于他复制本地格式的文件,故也不能移植到其他硬件或操作系统下

逻辑还原

1、使用mysql命令进行还原

对于已经备份的包含CREATE、INSERT语句的文本文件,可以使用myslq命令导入数据库中

还原

备份的sql文件中包含CREATE、INSERT语句(有时也会有DROP语句)。mysql命令可以直接执行文件中的这些语句 其语法如下:

mysql-u user-p [dbname]

用mysql命令将school_2014-7-10.sql文件中的备份导入到数据库中

mysql-u root-h 127.0.0.1-p school

如果已经登录mysql,那么可以使用source命令导入备份文件 使用source命令导入备份文件school_2014-7-10.sql

执行source命令前必须使用use 语句选择好数据库,不然会出现ERROR 1046(3D000):NO DATABASE SELECTED 的错误

还有一点要注意的是只能在cmd界面下执行,不能在mysql工具里面执行source命令,否则会报错

因为cmd是直接调用mysql.exe来执行命令的

而这些mysql 编辑工具只是利用mysql connector连接mysql,来管理mysql并不是直接调用mysql.exe,所以执行source会报错

物理还原

2、直接复制到数据库目录

如果数据库通过复制数据库文件备份,可以直接复制备份文件到MYSQL数据目录下实现还原。通过这种方式还原时,必须保证备份数据的数据库和待还原的数据库服务器的主版本号相同。而且这种方式只对MYISAM引擎有效,对于innodb引擎的表不可用

执行还原以前关闭mysql服务,将备份的文件或目录覆盖mysql的data目录,启动mysql服务。

对于Linux操作系统来说,复制完文件需要将文件的用户和组更改为mysql运行的用户和组,通常用户是mysql,组也是mysql

3、mysqlhotcopy快速恢复

mysqlhotcopy备份后的文件也可以用来恢复数据库,在mysql服务器停止运行时,将备份的数据库文件复制到mysql存放数据的位置

(mysql的data文件夹),重新启动mysql服务即可。

如果根用户执行该操作,必须指定数据库文件的所有者,输入语句如下:

chown-R mysql.mysql /var/lib/mysql/dbname

从mysqlhotcopy复制的备份恢复数据库

cp-R /usr/backup/test usr/local/mysql/data 执行完该语句,重启服务器,mysql将恢复到备份状态

注意:如果需要恢复的数据库已经存在,则在使用DROP语句删除已经存在的数据库之后,恢复才能成功。另外mysql不同版本之间必须兼容,恢复之后的数据才可以使用!

数据库迁移

数据库迁移就是把数据从一个系统移动到另一个系统上。迁移的一般原因:

1、需要安装新的数据库服务器

2、mysql版本更新

3、数据库管理系统变更(从SQLSERVER迁移到mysql)

相同版本的MYSQL数据库之间迁移

相同版本mysql数据库间的迁移就是主版本号相同的mysql数据库直接进行数据库移动。前面讲解备份和还原的时候,知道最简单的方法就是复制数据库文件目录,但是这种方法只适合于myisam表

对于innodb表,不能直接复制文件来备份数据库

最常用的方法是使用mysqldump导出数据,然后在目标数据库服务器使用mysql命令导入

将www.xiexiebang.com/2001/XMLSchema-instance“>

1

green

29

lawer

2

suse

26

dancer

3

evans

27

sports man

4

mary

26 singer

导入

1、使用LOAD DATA INFILE 方式导入文本文件

mysql允许将数据导出到外部文件,也可以从外部文件导入数据。

MYSQL提供了一些导入数据的工具,这些工具有:LOAD DATA语句、source命令、mysql命令

LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称必须为文字字符串 语法如下:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char' ] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] [IGNORE number LINES] [(col_name_or_user_var,...)] [SET col_name = expr,...]] load data infile语句从一个文本文件中以很高的速度读入一个表中。使用这个命令之前,mysqld进程(服务)必须已经在运行。

当读取的文本文件不在本机,而是位于服务器上的文本文件时,使用load data infile语句,在服务器主机上你必须有file的权限。、如果你指定关键词low_priority,那么MySQL将会等到没有其他人读取这个表的时候,才插入数据。例如如下的命令:

load data low_priority infile ”/home/mark/data.sql“ into table Orders;2、如果指定local关键词,则表明读取的文件在本机,那么必须指定local参数。3、replace和ignore参数控制对现有表的唯一键记录重复的处理。如果你指定replace,新行将代替有相同的唯一键值的现有行。

(1)如果你指定ignore,跳过有唯一键的现有行的重复行的输入。

(2)如果你不指定任何一个选项,当找到重复键时,出现一个错误,并且文本文件的余下部分被忽略。

FIELDS TERMINATED BY ','表示字段之间用逗号分隔 ENCLOSED BY '''表示每个字段用双引号括起来

ESCAPED BY '''表示将系统默认的转移字符替换为单引号 LINES STARTING BY ''表示每行数据开头的字符,可以为单个或多个,默认不是有任何字符

LINES TERMINATED BY 'rn'表示每行以回车换行符结尾,保证每一条记录占一行 [IGNORE number LINES] 选项表示忽略文件开始处的行数,number表示忽略的行数。

基本上格式上的参数跟SELECT...INTO OUTFILE是一样的

使用LOAD DATA命令将C:person0。txt文件中的数据导入到test库中的test表

LOAD DATA INFILE 'C:person0.txt' INTO TABLE test.person 先删除person表里的数据,然后执行LOAD DATA命令

使用mysqlimport命令导入文本文件

2、使用mysqlimport命令导入文本文件 mysqlimport是一个单独的exe,他提供了许多与LOAD DATA INFILE语句相同的功能 大多数选项直接对应LOAD DATA INFILE子句

mysqlimport的语法如下

mysqlimport-u root-p dbname filename.txt [OPTIONS]--[OPTIONS] 选项

FIELDS TERMINATED BY 'value' ENCLOSED BY 'value' ESCAPED BY 'value'

LINES TERMINATED BY 'value' IGNORE LINES [OPTIONS] 选项基本上与LOAD DATA INFILE 语句是一样的,这里不做介绍了 mysqlimport不能指定导入的表名称,表名称由导入文件名称确定,即文件名作为表名,导入数据之前该表必须存在

使用mysqlimport命令将C:目录下person.txt文件内容导入到test库 先删除test库的person表的数据

DELETE FROM `person`;

person.txt文件内容 1 green 29 lawer2 suse 26 dancer3 evans 27 sports man4 mary 26 singer 命令如下

mysqlimport-u root-p test C:person.txt

导入成功

mysqlimport的常见选项:

显示帮助消息并退出。

·--columns=column_list,-c column_list

该选项采用用逗号分隔的列名作为其值。列名的顺序指示如何匹配数据文件列和表列。

·--compress,-C

压缩在客户端和服务器之间发送的所有信息(如果二者均支持压缩)。

·---debug[=debug_options],-# [debug_options] 写调试日志。debug_options字符串通常是'd:t:o,file_name'。·--delete,-D 导入文本文件前清空表。

·--fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...,--lines-terminated-by=...这些选项与LOAD DATA INFILE相应子句的含义相同。参见13.2.5节,“LOAD DATA INFILE语法”。

·--force,-f

忽视错误。例如,如果某个文本文件的表不存在,继续处理其它文件。不使用--force,如果表不存在则mysqlimport退出。

·--host=host_name,-h host_name

将数据导入给定主机上的MySQL服务器。默认主机是localhost。

·--ignore,-i 参见--replace选项的描述。·--ignore-lines=n 忽视数据文件的前n行。

·--local,-L 从本地客户端读入输入文件。

·--lock-tables,-l

处理文本文件前锁定所有表以便写入。这样可以确保所有表在服务器上保持同步。

·--password[=password],-p[password]

当连接服务器时使用的密码。如果使用短选项形式(-p),选项和 密码之间不能有空格。如果在命令行中--password或-p选项后面没有 密码值,则提示输入一个密码。·--port=port_num,-P port_num 用于连接的TCP/IP端口号。

·--protocol={TCP | SOCKET | PIPE | MEMORY} 使用的连接协议。

·--replace,-r

--replace和--ignore选项控制复制唯一键值已有记录的输入记录的处理。如果指定--replace,新行替换有相同的唯一键值的已有行。如果指定--ignore,复制已有的唯一键值的输入行被跳过。如果不指定这两个选项,当发现一个复制键值时会出现一个错误,并且忽视文本文件的剩余部分。·--silent,-s 沉默模式。只有出现错误时才输出。

·--socket=path,-S path

当连接localhost时使用的套接字文件(为默认主机)。

·--user=user_name,-u user_name 当连接服务器时MySQL使用的用户名。

·--verbose,-v

冗长模式。打印出程序操作的详细信息。

·--version,-V 显示版本信息并退出。

提示:

LOAD DATA INFILE语句中有一个mysqlimport工具中没有特点: LOAD DATA INFILE 可以按指定的字段把文件导入到数据库中。当我们要把数据的一部分内容导入的时候,这个特点就很重要。

比方说,我们要从Access数据库升级到MySQL数据库的时候,需要加入一些字段(列/字 段/field)到MySQL数据库中,以适应一些额外的需要。

这个时候,我们的Access数据库中的数据仍然是可用的,但是因为这些数据的字段(field)与MySQL中的不再匹配,因此而无法再使用mysqlimport工具。

尽管如此,我们仍然可以使用LOAD DATA INFILE,下面的例子显示了如何向指定的字段(field)中导入数据:

LOAD DATA INFILE ”/home/Order.txt" INTO TABLE Orders(Order_Number, Order_Date, Customer_ID);

如您所见,我们可以指定需要的字段(fields)。这些指定的字段依然是以括号括起,由逗号分隔的,如果您遗漏了其中任何一个,MySQL将会提醒您^_^

如何选择备份工具?

直接复制数据文件是最为直接、快速的备份方法,但缺点是基本上不能实现增量备份。备份时必须确保没有使用这些表。如果在复制一个表的物理数据文件的同时服务器正在修改他,则复制无效。

备份文件时,最好关闭服务器,然后重新启动服务器,为了保证数据的一致性,需要在备份文件前执行以下SQL FLUSH TABLES WITH READ LOCK;也就是把内存中的数据刷新到磁盘中,同时锁定数据表,以保证复制过程中不会有新的数据写入。

这种方法备份出来的数据恢复很简单,直接复制回原来的数据库目录下即可

mysqlhotcopy是一个PERL程序,他使用LOCK TABLES、FLUSH TABLES和CP或SCP来快速备份数据库

他是备份数据库或单个表的最快的途径,但他只能运行在数据库文件所在机器上,并且mysqlhotcopy只能用于备份myisam表

mysqlhotcopy适合于小型数据库的备份,数据量不大,可以使用mysqlhotcopy程序每天进行一次完全备份 mysqldump将数据表导出为SQL脚本,在不同的MYSQL版本之间升级时相对比较合适,这也是最常用的备份方法。mysqldump比直接复制要慢些。

使用mysqldump备份整个数据库成功,把表和数据库删除了,但使用备份文件却不能恢复数据库?

出现这种情况是因为备份的时候没有指定--databases参数。默认情况下,如果只指定数据库名称,mysqldump 备份的是数据库中的所有表,而不包括数据库的创建语句,如下

mysqldump-u root-p booksdb >c:booksdb_2014-7-1.sql 该语句只备份了booksdb数据库下的所有表,读者打开该文件,可以看到文件中不包含创建booksdb数据库 的CREATE DATABASE语句,因此如果把booksdb也删除了,使用该sql文件不能还原以前的表,还原时会出现ERROR 1046(3D000):NO DATABASE SELECTED 的错误信息 而下面的语句,数据库删除之后,可以正常还原备份时的状态

mysqldump-u root-p--databases booksdb>C:booksdb_db_2014-7-1.sql

该语句不仅备份了所有数据库下的表结构,而且包括创建数据库的语句 MYSQL中的备份和还原,还有数据库的迁移,异构数据库之间的迁移基本上都用导出文件文件的方法

如果是小数据量尚可以,如果数据量比较大,导出文本文件也会很大,不是太可取

第二篇:我的MYSQL学习心得

我的MYSQL学习心得

(十一)视图

我的MYSQL学习心得

(一)简单语法 我的MYSQL学习心得

(二)数据类型宽度 我的MYSQL学习心得

(三)查看字段长度

我的MYSQL学习心得

(四)数据类型 我的MYSQL学习心得

(五)运算符 我的MYSQL学习心得

(六)函数 我的MYSQL学习心得

(七)查询

我的MYSQL学习心得

(八)插入 更新 删除 我的MYSQL学习心得

(九)索引

我的MYSQL学习心得

(十)自定义存储过程和函数 我的MYSQL学习心得

(十二)触发器 我的MYSQL学习心得

(十三)权限管理 我的MYSQL学习心得

(十四)备份和恢复 我的MYSQL学习心得

(十五)日志 我的MYSQL学习心得(十六)优化 我的MYSQL学习心得(十七)复制

这一篇《我的MYSQL学习心得

(十一)》将会讲解MYSQL的视图 使用视图的理由是什么?

1、安全性:一般是这样做的:创建一个视图,定义好该视图所操作的数据。

之后将用户权限与视图绑定,这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限。

2、查询性能提高

3、有灵活性的功能需求后,需要改动表的结构而导致工作量比较大,那么可以使用虚拟表的形式达到少修改的效果。这是在实际开发中比较有用的

4、复杂的查询需求,可以进行问题分解,然后将创建多个视图获取数据。将视图联合起来就能得到需要的结果了。

创建视图 创建视图的语法

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

VIEW view_name [(column_list)]

AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] 其中,CREATE:表示新建视图; REPLACE:表示替换已有视图 ALGORITHM :表示视图选择算法 view_name :视图名 column_list:属性列

select_statement:表示select语句

[WITH [CASCADED | LOCAL] CHECK OPTION]参数表示视图在更新时保证在视图的权限范围之内

可选的ALGORITHM子句是对标准SQL的MySQL扩展。

ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。

如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。

对于MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。

对于TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。

对于UNDEFINED,MySQL自己选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。

LOCAL和CASCADED为可选参数,决定了检查测试的范围,默认值为CASCADED。脚本 视图的数据来自于两个表

CREATE TABLE student(stuno INT ,stuname NVARCHAR(60))CREATE TABLE stuinfo(stuno INT ,class NVARCHAR(60),city NVARCHAR(60))

INSERT INTO student VALUES(1,'wanglin'),(2,'gaoli'),(3,'zhanghai')

INSERT INTO stuinfo VALUES(1,'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong')

--创建视图

CREATE VIEW stu_class(id,NAME,glass)AS SELECT student.`stuno`,student.`stuname`,stuinfo.`class` FROM student ,stuinfo WHERE student.`stuno`=stuinfo.`stuno`

SELECT * FROM stu_class

查看视图

查看视图必须要有SHOW VIEW权限

查看视图的方法包括:DESCRIBE、SHOW TABLE STATUS、SHOW CREATE VIEW DESCRIBE查看视图基本信息

DESCRIBE 视图名 DESCRIBE stu_class 结果显示了视图的字段定义、字段的数据类型、是否为空、是否为主/外键、默认值和额外信息

DESCRIBE一般都简写成DESC

SHOW TABLE STATUS语句查看查看视图基本信息 查看视图的信息可以通过SHOW TABLE STATUS的方法

SHOW TABLE STATUS LIKE 'stu_class'

Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

stu_class(NULL)(NULL)(NULL)(NULL)(NULL)(NULL)(NULL)(NULL)(NULL)(NULL)(NULL)(NULL)(NULL)(NULL)(NULL)(NULL)VIEW

COMMENT的值为VIEW说明该表为视图,其他的信息为NULL说明这是一个虚表,如果是基表那么会基表的信息,这是基表和视图的区别

SHOW CREATE VIEW语句查看视图详细信息

SHOW CREATE VIEW stu_class View Create View character_set_client collation_connection-----------------------------------------------------------------

stu_class CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `stu_class` AS select `student`.`stuno` AS `id`,`student`.`stuname` AS `name`,`stuinfo`.`class` AS `class` from(`student` join `stuinfo`)where(`student`.`stuno` = `stuinfo`.`stuno`)utf8 utf8_general_ci 执行结果显示视图的名称、创建视图的语句等信息

在VIEWS表中查看视图的详细信息

在MYSQL中,INFORMATION_SCHEMA VIEWS表存储了关于数据库中的视图的信息 通过对VIEWS表的查询可以查看数据库中所有视图的详细信息

SELECT * FROM `information_schema`.`VIEWS` TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION-------------------------------------------------------------------------------------------------------------------------------------------def school stu_class select

`school`.`student`.`stuno` AS `id`,`school`.`student`.`stuname` AS `name`,`school`.`stuinfo`.`class` AS `class` from `school`.`student` join `school`.`stuinfo` where(`school`.`student`.`stuno` = `school`.`stuinfo`.`stuno`)NONE YES root@localhost DEFINER utf8 utf8_general_ci 当前实例下只有一个视图stu_class

修改视图

修改视图是指修改数据库中存在的视图,当基本表的某些字段发生变化时,可以通过修改视图来保持与基本表的一致性。

MYSQL中通过CREATE OR REPLACE VIEW 语句和ALTER语句来修改视图 语法如下:

ALTER OR REPLACE [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] 该语句用于更改已有视图的定义。其语法与CREATE VIEW类似。当视图不存在时创建,存在时进行修改

修改视图 DELIMITER $$

CREATE OR REPLACE VIEW `stu_class` AS SELECT

`student`.`stuno` AS `id` FROM(`student` JOIN `stuinfo`)WHERE(`student`.`stuno` = `stuinfo`.`stuno`)$$

DELIMITER;

通过DESC来查看更改之后的视图定义

DESC stu_class 可以看到只查询一个字段

ALTER语句修改视图

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] 这里关键字跟前面的一样,这里不做介绍

使用ALTER语句修改视图 stu_class ALTER VIEW stu_class AS SELECT stuno FROM student;使用DESC查看

DESC stu_class

更新视图

更新视图是指通过视图来插入、更新、删除表数据,因为视图是虚表,其中没有数据。通过视图更新的时候都是转到基表进行更新,如果对视图增加或者删除记录,实际上是对基表增加或删除记录

我们先修改一下视图定义

ALTER VIEW stu_class AS SELECT stuno,stuname FROM student;查询视图数据

UPDATE

UPDATE stu_class SET stuname='xiaofang' WHERE stuno=2

查询视图数据

更新成功

INSERT INSERT INTO stu_class VALUES(6,'haojie')

插入成功

DELETE

DELETE FROM stu_class WHERE stuno=1

删除成功 当视图中包含如下内容的时候,视图的更新操作将不能被执行(1)视图中包含基本中被定义为非空的列

(2)定义视图的SELECT语句后的字段列表中使用了数学表达式(3)定义视图的SELECT语句后的字段列表中使用聚合函数

(4)定义视图的SELECT语句中使用了DISTINCT、UNION、TOP、GROUP BY、HAVING子句

第三篇:我的MYSQL学习心得

我的MYSQL学习心得

一、使用视图的理由是什么?

1.安全性。一般是这样做的:创建一个视图,定义好该视图所操作的数据。之后将用户权限与视图绑定。这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限。2.查询性能提高。

3.有灵活性的功能需求后,需要改动表的结构而导致工作量比较大。那么可以使用虚拟表的形式达到少修改的效果。这是在实际开发中比较有用的

例子:假如因为某种需要,a表与b表需要进行合并起来组成一个新的表c。最后a表与b表都不会存在了。而由于原来程序中编

写sql分别是基于a表与b表查询的,这就意味着需要重新编写大量的sql(改成向c表去操作数据)。而通过视图就可以做到不修改。定义两个视图名字还是原来的表名a和b。a、b视图完成从c表中取出内容。说明:使用这样的解决方式,基于对视图的细节了解越详细越好。因为使用视图还是与使用表的语法上没区别。比如视图名a,那么查询还是“select * from a”。

4.复杂的查询需求。可以进行问题分解,然后将创建多个视图获取数据。将视图联合起来就能得到需要的结果了。

视图的工作机制:当调用视图的时候,才会执行视图中的sql,进行取数据操作。视图的内容没有存储,而是在视图被引用的时候才派生出数据。这样不会占用空间,由于是即时引用,视图的内容总是与真实表的内容是一致的。视图这样设计有什么好处?节省空间,内容是总是一致的话,那么我们不需要维护视图的内容,维护好真实表的内容,就可以保证视图的完整性了。

二、通过更新视图实现更新真实表

看到很多例子,更新视图可以更新真实表。原因,我是这样理解的:视图并没有保存内容。只是引用数据。那么,更新视图,其实就是以引用的方式操作了真实表 with check option:对视图进行更新操作的时,需要检查更新后的值是否还是满足视图公式定义的条件。通俗点,就是所更新的结果是否还会在视图中存在。如果更新后的值不在视图范围内,就不允许更新如果创建视图的时候,没有加上with check option,更新视图中的某项数据的话,mysql并不会进行有效性检查。删掉了就删掉了。在视图中将看不到了。

使用有效性检查,实际意义是什么?

视图的实践:重新组织表的需求

CREATE TABLE `result`(`MATH_NO` INT(10)NOT NULL unsigned AUTO_INCREMENT PRIMARY KEY, `TEAMNO` INT(10)NOT NULL, `PLAYERNO` INT(10)NOT NULL, `WON` VARCHAR(10)NOT NULL, `LOST` VARCAHR(10)NOT NULL, `CAPTAIN` INT(10)NOT NULL COMMIT '就是PLAYERNO的另外名字', `DIVISION` VARCHAR(10)NOT NULL)ENGINE=MYISAM DEFAULT CHARSET=utf8 COMMIT='重新组的新表' AUTO_INCREMENT=1

针对每个表创建一个视图,将数据保存进去: CREATE VIEW teams(TEAMNO,PLAYERNO,DIVISION)AS SELECT DISTINCT TEAMNO,CAPTAIN,DIVISION FROM result

报错:#1050-Table 'teams' already exists

说明,因为视图也是一种表,是虚拟表。不能与已有的表(视图)出现重名

接下来,删掉表teams,再执行创建视图的代码。

将视图看成与表一样的东西,更加容易理解使用规则。下面这样对比也许使自己更好理解:

1.在使用视图的时候,就是与使用表的语法一样的。2.创建视图的时候,该视图的名字如果与已经存在表重名的话,那么会报错,不允许创建。视图就是一种特殊的表

3.创建视图的时候,可以这样使用CREATE VIEW teams(TEAMNO,PLAYERNO,DIVISION),可以定义视图表的结构。

4.在phpmyadmin中。左边的表列表中将视图与表列在了一起。只有通过右侧的状态“View:teams”可以知道该表是视图表。

视图在mysql中的内部管理机制:

视图的记录都保存在information_schema数据库中的一个叫views的表中。具体某个视图的定义代码以及属于哪个数据库等信息可以从里面看到理解视图的两种工作机制:

语句:select * from teams

针对上面语句,总结几个知识点

1.确认是视图的过程:teams也可以是表名。由于表与视图的物理机制不同。视图本身是不存储内容的。所以,在使用sql的 时候,mysql是怎么知道teams是一个视图还是表。是因为有一个查看目录的例程在做这件事。

2.mysql对处理视图的两种方法:替代方式和具体化方式。替换方式理解,视图名直接使用视图的公式替换掉了。针对上面视图teams,mysql会使用该视图的公式进行替换,视图公式合并到了select中。结果就是变成了如下sql语句: select * from(SELECT DISTINCT TEAMNO,CAPTAIN,DIVISION FROM result)。也就是最后提交给mysql处理该sql语句。

具体化方式理解,mysql先得到了视图执行的结果,该结果形成一个中间结果暂时存在内存中。之后,外面的select语句就调用了这些中间结果(临时表)。

看起来都是要得到结果,形式上有区别,好像没体会到本质上的区别。两种方式又有什么样的不同呢?

替换方式,将视图公式替换后,当成一个整体sql进行处理了。具体化方式,先处理视图结果,后处理外面的查询需求。替换方式可以总结为,先准备,后执行。具体化方式总结理解为,分开处理。

哪种方式好?不知道。mysql会自己确定使用哪种方式进行处理的。自己在定义视图的时候也可以指定使用何种方式。像这样使用:

CREATE ALGORITHM=merge VIEW teams as SELECT DISTINCT TEAMNO,CAPTAIN,DIVISION FROM result

ALGORITHM有三个参数分别是:merge、TEMPTABLE、UNDEFINED

看mysql手册中提到,替换与具体化的方式的各自适用之处,可以这样理解:

因为临时表中的数据不可更新。所以,如果使用参数是TEMPTABLE,无法进行更新。

当你的参数定义是UNDEFINED(没有定义ALGORITHM参数)。mysql更倾向于选择合并方式。是因为它更加有效。

第四篇:MySQL学习心得

MySQL学习心得

第一章

一、数据库管理系统(DBMS)是操作和管理数据库的大型软件,它按一定的数据模型组织数据。

例如:Oracle、SQL Server、MySQL、Access。

二、数据库应用系统在数据库管理系统(DBMS)支持下建立的计算机应用系统,简写:DBAS。

例如:.net Java。

三、字符集从大到小排序:utf8--gbk--gb2312。

四、mysql的特点:

适用于中小型网站中,体积小、速度快、总体拥有成本低,尤其是有开放源码这一特点。

五、目前Internet上浒的网站构架方式是LAMP(Linux+apache+mysql+php)即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器,由于4个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。

第二章

一、安装过程中遇到的问题及解决方法:

安装过程中没有完成时计算机关机。(没有删除完文件)安装完成时找不到所配置的路径。(可以从配置文件中找到)

安装完成后无法正常使用。(在计算机管理中重新启动MySQL服务)安装到一半时没有出现下一步。(误把配置文件删除了)安装到最后一步时start service错误。到控制面板里面先把mysql删除.到c盘C:Program Files目录下把mysql目录删除.如果在其他盘还有设置目录也要删除.空目录也要删除 到regedit把注册表

HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Applications/MySQL HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Applications/MySQL HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Applications/MySQL 有的话,全部删除!(技巧:用F3循环查找“mysql”)如果任务管理器里有关mysql内容也删除 把防火墙关了

重新装mysql(这里我没有重启计算机)

重装时候有必要的话,重启计算机,停用IIS,和删除temp里的临时文件.实在不行的话,配置mysql时候,把mysql服务换个服务名.使用时输入中文会出错。(在配置时在“Character Set”选框中将latinl修改为gb2312;也可以在配置文件中修改)

二、启动服务器的方法: ① 方法1:

在 “计算机管理”中的“服务”项目中启动与停止。② 方法2: 使用命令(net start mysql和net stop mysql)

三、连接MySQL 格式: mysql-h主机地址-u用户名 -p用户密码

①先在打开DOS窗口,然后进入目录 mysqlbin(如果设置了环境变量,则直接输入命令即可。)②键入命令mysql-uroot-proot ③接回车即可进入到MYSQL中了 MYSQL的提示符是:mysql> 注明:直接打开Mysql command line client

四、MySQL注释符有三种: ①#...②“--...” ③

五、忘记密码重新更改密码

先停止mysql服务,修改D:MySQLMySQL Server 5.0 目录下的my.ini文件,在[mysqld]下添加skip-grant-tables 启动mysql服务后就可以以空密码登录,之后别忘记修改root密码

use mysql update user set password=password('hanaixia')where user='root';(分号不能少)password('hanaixia')此处必须用函数设置。

修改密码后需要重新启动服务或者使用 flush privileges;语句,用于从mysql数据库中的授权表重新载入权限。

把 skip-grant-tables 这一句删掉再重启mysql服务。

第五篇:NBU备份恢复方案

数据备份方案SYMANTEC NetBackup(NBU)简介

SYMANTEC NetBackup软件是一个功能强大的企业级数据备份管理软件,它为UNIX、Windows和Netware混合环境提供了完整的数据保护机制,具有保护企业从工作组到企业级服务器的所有的数据的能力。管理员能够通过图形界面来管理备份和恢复的所有方面,制定企业统一的备份策略。NetBackup针对Oracle、DB2、SAP R/

3、Informix、Sybase、Microsoft SQL Server 和 Microsoft Exchange Server 等数据库提供了备份和恢复的解决方案。

NetBackup模块功能介绍

Master Server 在NetBackup Enterprise Server中,Master Server是第一个组件。Master Server是管理一切数据保护工作的最核心的部件。所管理的工作包括,任务调度,客户端备份,介质管理,设备管理等等。Media Server 当需要备份的数据在不同地点或数据量比较大的时候,我们需要使用多个Media Servers来做分担备份管理的任务。Media Server是NetBackup中第二个组件。Media Server通过网络承担着本地各个机器上的数据备份,它可以和Master Server或其他的Media Server共享备份设备,或使用自己的备份设备也可以。在有多个Media Servers的情况下,一个Media Server因故障停止数据保护工作的时候,可以由Master Server把这个Media Server的数据保护工作转移到另外的Media Servers上。Clients(Protected Server)

第三个组件就是Clients,客户端。所有的通过网络把数据传到Master Server或Media Servers上来做数据保护的机器,都是客户端。在客户端上要安装NetBackup的客户端软件。注意:Master Server和Media Server本身也是NetBackup的Clients,它们在备份自己的数据的时候就是客户端。

NetBackup Tape Library and Rototics Support NetBackup支持所有主流的磁带机、磁带库和光盘库设备,包括StorageTek,IBM,Quantum|ATL,ADIC 和HP等等等。所谓NetBackup支持这些设备不是单指能够往其磁带上写数据,主要是指对其的设备管理和介质管理功能。磁盘缓冲(DISK STAGING)

磁盘缓冲(DISK STAGING)为NetBackup管理员提供了一种备份方法,首先在磁盘上创建备份镜像,然后将镜像转移到另一种介质上。NetBackup软件的磁盘缓冲分三个步骤完成:首先在磁盘上创建NetBackup备份镜像,然后在可以配置的稍后时间,将镜像转移到另外一个介质上。

备份方案设计

目前使用比较广泛的备份方式有以下两种备份方式: LAN备份

LAN备份是基于数据量不大的情况下,结构简单,但是要占用生产的网络带宽,其结构图如下:

采用SAN存储架构的LAN-free备份方式:

采用san存储架构的解决方案,也称为LAN-Free备份。它将磁带库和磁盘阵列各自作为独立的光纤结点,备份时,数据流直接从磁盘阵列传到磁带库内,是一种无需占用网络带宽(LAN-Free)的解决方案。以下是它的结构图:

备份和恢复的定义及实现

备份系统资源的定义

在系统备份前,首先必须定义备份系统,分配磁带库资源。可以如下配置备份系统资源: 将带库中所有磁带驱动器定义成一组或几组资源(术语:Storage Unit)。这样,当你备份一组数据时,系统就会允许使用相应的磁带驱动器去备份相应的数据了。

对每个数据库服务器,我们可以定义一组磁带,作为一个磁带池(术语:Volume Pool),在自动备份时,备份系统回自动将该数据库备份到这个磁带池中。这里我们可以定义:

1.Volume Pool for主数据库 2.Volume Pool for 文件系统

备份策略的定义

定义好备份资源后,必须根据实际需要配置备份策略。定义备份策略,涉及到以下内容: 1.在什么时间 2.将什么数据

3.以什么方式(如全备份或增量备份)、4.通过哪组磁带驱动器(备份通道,如:磁带驱动器)、5.备份到哪一个磁带组(备份目的地,如:Volume Pool for 主数据库)而备份的方式可以分为三种:全备份、增量备份、累计增量备份。1.全备份

每次备份定义的所有数据,优点是恢复快,缺点是备份数据量大,数据多时可能做一次全备份需很长时间

2.增量备份

备份自上一次备份以来更新的所有数据,其优点是每次备份的数据量少,缺点是恢复时需要全备份及多份增量备份

3.差分备份

备份自上一次全备份以来更新的所有数据。我们可以结合这三种方式,灵活应用。数据备份的过程

在业务系统中,我们会在所有数据库服务器上部署相应的Netbackup SAN Media Server软件及用于数据库在线热备份的Agent。

在定义好备份资源和策略后,在指定的时间,备份系统就会自动的将数据库服务器上的数据从服务器上、采用指定的方式、通过指定的磁带驱动器备份到指定磁盘池中。

在备份结束后,系统会报告备份的状况,然后,系统管理员就会在VEIRTAS Netbackup管理界面上清楚地看到已经备份的数据的描述。在VERITAS Netbackup上对备份介质上的数据的管理采用的是简单易懂的目录结构。系统管理员通过该目录下的备份项目可以非常方便的察看已经备份的数据的情况,包括:这个数据是什么时候对哪个数据库的备份,采用的是哪一种备份方式(全备份?增量备份?还是累计增量备份?)。一个完整的备份包括一条或几条备份项目,一般包括一个全备份项目、一个累计增量备份项目、几个增量备份项目。你可以保留以前的备份—在最近一次全备份以前的备份。也可以同时对一份数据做两个备份。

备份系统对数据库的备份采用的是在线备份,通过VERITAS Netbackup的database Agent,我们可以在不停止数据库运行的情况下,对数据库数据进行备份,包括全备份、累计增量备份或者增量备份。这种备份方式,保证了系统的7x24小时的运行。

数据的恢复

当发生数据损坏时,我们需要从磁带库恢复数据。

有了VERITAS Netbackup,数据的恢复是非常快速和简单的。通过Netbackup管理界面,系统管理员只需要选定相应的数据备份项目(备份管理目录下的相应的项目名,对应某个时间点备份的某个数据库的数据,并有说明),进行恢复(Restore)即可。选择备份项目时,如前所述,首先选定最近一次全备份进行恢复,然后选定最近一次累计增量备份,最后选定这次累计增量备份以后的所有增量备份项目,依时间顺序进行恢复即可。

备份系统基础知识

数据备份的原则

对数据进行备份是为了保证数据的一致性和完整性,消除系统使用者和操作者的后顾之忧。不同的应用环境要求不同的解决方案来适应,一般来说,一个完善的备份系统,需要满足以下原则:

 稳定性

备份产品的主要作用是为系统提供一个数据保护的方法,于是该产品本身的稳定性和可靠性就变成了最重要的一个方面。首先,备份软一定要与操作系统100%的兼容,其次,当事故发生时,能够快速有效地恢复数据。 全面性

包括了各种操作平台,如各种厂家的UNIX、NetWare、Windows NT、VMS等,并安装了各种应用系统,如ERP、数据库、群件系统等。选用的备份软件,要支持各种操作系统、数据库和典型应用。 自动化

很多系统由于工作性质,对何时备份、用多长时间备份都有一定的限制。在下班时间系统负荷轻,适于备份。可是这会增加系统管理员的负担,因此,备份方案应能提供定时的自动备份。在自动备份过程中,还要有日志记录功能,并在出现异常情况时自动报警。 高性能

随着业务的不断发展,数据越来越多,更新越来越快,在休息时间来不及备份如此多的内容,在工作时间备份又会影响系统性能。这就要求在设计备份时,尽量考虑到提高数据备份的速度,利用多个磁带机并行操作的方法。 操作简单

需要一个直观的、操作简单的图形化用户界面,缩短操作人员的学习时间,减轻操作人员的工作压力,使备份工作得以轻松地设置和完成。 实时性

关键性的任务是要24小时不停机运行的,在备份的时候,有一些文件可能仍然处于打开的状态。那么在进行备份的时候,要采取措施,实时地查看文件大小、进行事务跟踪,以保证正确地备份系统中的所有文件。 容灾考虑

将磁带库中的磁带拷贝一份,存放在远离数据中心的地方,以防数据中心发生不可预测的灾难。

备份系统组成

能否安全有效的备份取决于以下三个因素: 1.执行备份的磁带机

磁带机的质量与性能在整个备份过程中是至关重要的,它是能否进行高速高质量备份的关键所在。2.存储备份数据的介质

介质是数据的负载物,它的质量一定要有保证,使用质量不过关的介质无疑是拿自己的数据冒险。3.控制备份的软件

优秀备份软件包括加速备份、自动操作、灾难恢复等特殊功能,对于安全有效的数据备份是非常重要的。

确定介质保存时间

备份过程中要用到大量的存储介质,备份介质的保留时间的长短将决定所需购置和维护的介质量。目前的备份策略都是基于多磁带轮换制,即保存有过时数据的介质可重新覆盖使用,轮换频率可根据备份类型和备份的窗口来确定。

计算所需磁带介质数量

1.备份系统所需的介质数量可根据下述流程确定: 2.确定介质容量

3.计算每个服务器上的数据做全备份所需的介质数量

4.根据每种介质的保留时间或轮换频率即可计算出所需的介质数目

售后服务承诺

下载我的MYSQL学习心得备份和恢复word格式文档
下载我的MYSQL学习心得备份和恢复.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    《备份与恢复管理制度》

    备份与恢复管理制度文档控制名称编号版本密级拟制日期审核日期批准日期版本控制日期版本描述作者分发控制序号对象权限12一.目的为加强单位计算机信息数据的备份与管理,避免信......

    Mysql数据库学习心得

    Mysql数据库学习心得 由于工作中需要使用mysql,笔者通过网上学习,动手实践,终于从一个"数据库菜鸟"变成了能熟练操作mysql的"准大虾"了,:)。现将学习心得整理如下。 MySQL是完......

    信息系统备份、恢复管理办法(最终版)

    信息系统备份、恢复管理办法 第一章 总 则 第一条 为加强信息系统信息备份、恢复与介质的管理,确保需要时信息系统能迅速恢复,保证各项业务的正常运行,特制定本管理规定。 第......

    数据备份和恢复管理规范

    数据备份和恢复管理规范 第一章 总 则 第一条 为规范、统一全集团范围内重要系统的数据备份及管理工作,明确各系统数据备份及恢复的角色和职责,确保备份介质的安全和按时、顺......

    Veeam_备份和灾难恢复解决方案

    Veeam 备份和灾难恢复解决方案 目 录 第1章 1.1 1.2 1.3 1.4 摘要 ........................................................................................................

    个人所得税备份恢复数据库步骤

    1.先找到这三个文件 2.备份这三个文件到桌面或指定盘 ●具体操作如下 一、数据备份的方法: 请您右击桌面桌面金税三期个人所得税图标→→属性→→“打开文件位置”(Win7系统)/......

    Oracle数据库备份和恢复论文

    摘要:本文从Oracle的体系结构开始,由原理到实践,论述了Oracle数据库备份的方式和策略。包括IMp/EXp, RMAN,OS备份等。 Abstract: Starting from the architecture of ORACLE, thi......

    MySQL平台数据库备份方案详细说明

    MySQL平台数据库备份方案详细说明.txt时尚,就是让年薪八千的人看上去像年薪十万。我们总是要求男人有孩子一样的眼神,父亲一样的能力。一分钟就可以遇见一个人,一小时喜欢上一......