久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

我的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.tmdps.cn/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時尚,就是讓年薪八千的人看上去像年薪十萬。我們總是要求男人有孩子一樣的眼神,父親一樣的能力。一分鐘就可以遇見一個人,一小時喜歡上一......

主站蜘蛛池模板: 日本理论片午午伦夜理片2021| 欧美狠狠入鲁的视频| 国产精品成人av片免费看| 亚洲国产福利一区二区三区| 军人粗大的内捧猛烈进出视频| 亚洲综合色区在线播放2019| 日本卡2卡3卡4卡5卡精品视频| 国产好爽…又高潮了毛片| 午夜毛片不卡免费观看视频| 草草影院发布页| 免费吃奶摸下激烈视频| 人妻熟女一区二区aⅴ图片| 亚洲精品色情aⅴ色戒| 国产精品无码日韩欧| 中文字幕婷婷日韩欧美亚洲| 日日躁夜夜躁狠狠躁夜夜躁| 国产精品青青在线观看爽香蕉| 国内少妇偷人精品视频| 亚欧美日韩香蕉在线播放视频| 蜜臀视频在线一区二区三区| 亚洲成a人片在线观看高清| 女人大荫蒂毛茸茸视频| 特级欧美成人性a片| 亚洲精品无码久久久久av麻豆| 亚洲精品国产精品乱码视色| 国产精品呻吟av久久高潮| aa片在线观看视频在线播放| 国产精品亚洲аv无码播放| 色狠狠av一区二区三区| 亚洲午夜精品久久久久久APP| 亚洲日韩一中文字暮av| 用舌头去添高潮无码视频| 国精产品一区二区三区有限公司| 久久av青久久久av三区三区| 午夜片无码区私人影院| 日韩精品无码一区二区中文字幕| 国产精品久久久久9999赢消| 宅男宅女精品国产av天堂| 激情射精爆插热吻无码视频| 亚洲人成网站色www| 亚洲日韩va无码中文字幕|