mysql進階操作
函數(shù):
?在select 命令里使用函數(shù)做查詢的格式
第一種格式
SELECT? 函數(shù)(表頭名)? FROM? 庫名.表名;
?第二種格式
SELECT? 函數(shù)(函數(shù)())? ;
?第三種格式:單獨把函數(shù)的執(zhí)行結(jié)果輸出
SELECT? 函數(shù)() ;
?
常用函數(shù)的使用:
1.1? 字符函數(shù)的使用
作用:處理字符或字符類型的字段
LENGTH(str)?? ???? ?? 返字符串長度,以字節(jié)為單位
CHAR_LENGTH(str)???? 返回字符串長度,以字符為單位
UPPER(str)和UCASE(str)? 將字符串中的字母全部轉(zhuǎn)換成大寫
LOWER(str)和LCASE(str)? 將str中的字母全部轉(zhuǎn)換成小寫
SUBSTR(s, start,end) ??? 從s的start位置開始取出到end長度的子串
INSTR(str,str1)????? 返回str1參數(shù),在str參數(shù)內(nèi)的位置
TRIM(s)?????????? 返回字符串s刪除了兩邊空格之后的字符串
?
1.2? 數(shù)學(xué)函數(shù)的使用? 具體函數(shù)的使用見案例
作用:處理數(shù)據(jù)或數(shù)值類型的字段
ABS(x) 返回x的絕對值
PI()?????? 返回圓周率π,默認顯示6位小數(shù)
MOD(x,y)?? 返回x被y除后的余數(shù)
CEIL(x)、CEILING(x)? 返回不小于x的最小整數(shù) (x 是小數(shù))
FLOOR(x)???????? 返回不大于x的最大整數(shù) (x 是小數(shù))
ROUND(x)????????? 返回最接近于x的整數(shù),即對x進行四舍五入 (x 是小數(shù))
ROUND(x,y) ?????? 返回最接近x的數(shù),其值保留到小數(shù)點后面y位,若y為負????????????? 值,則將保留到x到小數(shù)點左邊y位 (x 是小數(shù))
1.3? 聚集函數(shù)的使用? sum()? avg()? min()? max()? count()
mysql> system date? 查系統(tǒng)時間日期
mysql> select now();
mysql> select curtime() ;
1.5? 數(shù)學(xué)計算的使用? +?? -???? *?? /???? %?
???
1.6? 流程控制函數(shù) : 查詢表記錄事可以加判斷語句
?if語句 語法格式
?語法:
if(條件,v1,v2) 如果條件是TRUE則返回v1,否則返回v2
ifnull(v1,v2)? 如果v1不為NULL,則返回v1,否則返回v2?
case語句 語法格式? (可以有多個判斷添加)
如果字段名等于某個值,則返回對應(yīng)位置then后面的結(jié)果,
如果與所有值都不相等,則返回else后面的結(jié)果
??????
語法格式1
CASE 字段名?????????????
WHEN 值1 THEN 結(jié)果
WHEN 值2 THEN 結(jié)果?
WHEN 值3 THEN 結(jié)果
ELSE 結(jié)果?
END
?語法格式2
CASE?????????????
WHEN? 判斷條件 THEN 結(jié)果
WHEN? 判斷條件? THEN 結(jié)果?
WHEN? 判斷條件 THEN 結(jié)果
ELSE 結(jié)果?
END?
查詢結(jié)果處理
語法格式1
?select??? 字段名列表? from?? 庫.表??? 分組|排序|過濾|分頁 ;
?語法格式2
?select??? 字段名列表? from?? 庫.表?? where? 篩選條件??? 分組|排序|過濾|分頁 ;
? ??分組 :? 對查找到數(shù)據(jù)做分組處理(表頭值相同為一組,只顯示一次) 。??
命令??? group by?? 字段名
? ?
排序? 把查找到的數(shù)據(jù)排隊 ,用來排隊的字段數(shù)據(jù)類型應(yīng)該是 數(shù)值類型
?order by?? 字段名?? [asc];???? 從小到大排序(升序)默認的排序方式
order by?? 字段名?? desc;?? 從大到小排序(降序)
過濾數(shù)據(jù) having
作用對select 查詢到的數(shù)據(jù) 再次做篩選 使用的命令是having?
?格式1? ?select? 字段名列表? from?? 庫.表???? having?? 篩選條件;
?格式2? select? 字段名列表? from?? 庫.表? where?? 條件???? having?? 篩選條件;
?分頁 limit
作用:限制查詢結(jié)果顯示行數(shù)(默認顯示全部的查詢結(jié)果)
使用SELECT查詢時,如果結(jié)果集數(shù)據(jù)量很大,比如1萬行數(shù)據(jù),放在一個頁面顯示的話數(shù)據(jù)量太大,
不如分頁顯示,比如每次只顯示100行 ?100次顯示完
?命令格式1? (只顯示查詢結(jié)果的頭幾行)
select? 字段名列表? from?? 庫.表? limit 數(shù)字;
select? 字段名列表? from?? 庫.表? where?? 條件? limit 數(shù)字;
命令格式2 (顯示查詢結(jié)果指定范圍內(nèi)的行)
select? 字段名列表? from?? 庫.表? limit 數(shù)字1,數(shù)字2;
select? 字段名列表? from?? 庫.表? where?? 條件? 數(shù)字1,數(shù)字2;
?數(shù)字1?? 表示起始行??
第1行用數(shù)字0表示?? 第2行用數(shù)字1表示?? 第3行用數(shù)字2表示
?數(shù)字2? 表示顯示的總行數(shù)
?????
連接查詢
? ?連接查詢分類
按功能分類
?????? 內(nèi)連接
?????? 外連接
?????? 交叉連接
SELECT 字段列表? FROM 表1 [AS] 別名? [連接類型]?? JOIN?? 表2 [AS] 別名
ON 連接條件?? WHERE 篩選條件 ;
?或
SELECT 字段列表? FROM 表1 [AS] 別名? [連接類型]?? JOIN?? 表2 [AS] 別名
ON 連接條件??
WHERE 篩選條件?
GROUP BY 分組 ?|? HAVING 分組后篩選條件 |? ORDER BY 排序字段 ?
?連接查詢 之 內(nèi)連接?
語法格式
SELECT? 字段列表
FROM? 表1? 別名
INNER JOIN? 表2? 別名? ON 連接條件? INNER JOIN? 表3? 別名? ON 連接條件
[WHERE 篩選條件]
[GROUP BY 分組]
[HAVING 分組后篩選]
[ORDER BY 排序列表]
? ? ? 連接查詢 之 內(nèi)連接? 根據(jù)連接條件的不同又分為:
等值連接:使用相等判斷做連接條件
非等值連接:連接條件不是相等判斷
自連接:? 自己連接自己,把1張表當(dāng)做2張表(需要給表定義別名)
外連接分類如下:
左外連接?? LEFT JOIN?????
左邊表的記錄全都顯示出來 右邊的表只顯示與條件匹配記錄,右邊表比左邊表少的記錄使用NULL匹配
?
右外連接 RIGHT JOIN?
右邊表的記錄全都顯示出來 左邊的表只顯示與條件匹配記錄,左表比右邊表少的記錄使用NULL 匹配
?全外連接(mysql不支持,可以使用UNION實現(xiàn)相同的效果) :合并查詢結(jié)果
?外連接的應(yīng)用場景:
1)比較2個表里記錄的不同
2)者哪些數(shù)據(jù)當(dāng)前表有而另一張表沒有。
聯(lián)合查詢
也稱聯(lián)合查詢,用來合并查詢結(jié)果
可以合并同一張的表的查詢記錄(不同表的查詢記錄也可合并)
要求查詢時,多個select語句的檢索到的字段數(shù)量必須一致
每一條記錄的各字段類型和順序最好是一致的
UNION關(guān)鍵字默認去重,可以使用UNION ALL包含重復(fù)項
?語法格式 1? (SELECT語句 ) UNION (SELECT語句);
語法格式 2? (SELECT語句 ) UNION? ALL (SELECT語句);
?視圖
簡單
用戶無需關(guān)心視圖中的數(shù)據(jù)如何查詢獲得的
視圖中的數(shù)據(jù)已經(jīng)是過濾好的符合條件的結(jié)果集
?安全:用戶只能看到視圖中的數(shù)據(jù)
?數(shù)據(jù)獨立
一旦視圖結(jié)構(gòu)確定,可以屏蔽表結(jié)構(gòu)對用戶的影響
?創(chuàng)建視圖的語法格式?
create? view? 庫.視圖名稱? as? SQL查詢;
create? view? 庫.視圖名稱(字段名列表) as? SQL查詢;
use?? viewdb;? ?#查看當(dāng)前庫里哪些表是視圖
mysql> show table status? where? comment = "view" \G? ?
查看視圖表里的數(shù)據(jù)是從哪個基表獲取的
mysql> show create view viewdb.v1 \G
with? check option? (支持的檢查選項)
選項 local?? 首先滿足自身的限制 ,同時要滿足基本的限制
選項 cascaded (默認值 )? 滿足視圖自身限制即可
? ?默認情況下 通過視圖修改數(shù)據(jù)是不受限制
? ??可以設(shè)置通過視圖修改數(shù)據(jù)受限制:限制的方式如下
create view tarena.v21? as
??? -> select name , uid from? tarena.user where uid > 10
??? -> with check option;
?mysql存儲過程
?1 、 什么是存儲過程
說白了就是mysql服務(wù)的腳本,登錄服務(wù)器后 要重復(fù)執(zhí)行的命令寫成存儲過程
存儲過程就是mysql服務(wù)的腳本。
?2、創(chuàng)建存儲過程的命令格式
?語法:create procedure pria()
??? -> begin
??? -> select? count(*) from?? tarena.salary? ;
??? -> select? count(*) from?? tarena.employees? ;
??? -> end
??? -> //
mysql> delimiter? ;
?執(zhí)行 存儲過程? pria()
?mysql> call pria();? 或? call? tarena.pria();???
?mysql> show procedure status \G? ?#查看已有的存儲過程
刪除存儲過程
mysql> drop? procedure? 庫.存儲過程名 ;
存儲過程進階
1? 變量的使用
??? 1.1 變量的分類 :
?????????? 系統(tǒng)變量: mysql服務(wù)定義包括:
???????????????????????? 全局變量(任意用戶連接服務(wù)查看到值都一樣的)
? ? ? ? ? ? ? ? ? ? ? ?會話變量:連接服務(wù)器的用戶登錄期間使用的變量
? ? ? ? ? ? ? ? ? ? ? ? ?自定義變量: 連接數(shù)據(jù)庫服務(wù)的用戶定義包括:
???????????????????? 用戶變量:用戶登錄數(shù)據(jù)庫服務(wù)器,自己定義的變量
?????? ????????????? 局部變量 :在begin 和 end 定義的變量?? 僅存儲過程執(zhí)行中有效
mysql> show global variables \G????? 查看所有的全局變量
mysql> show global variables? like? "version_compile_os" ;? #僅查看一個全局變量
修改全局變量的值? ? set?? global?? 變量名="值"
mysql> select? @@version_compile_os;??? 輸出某個全局變量的值
?show session variables \G??? 查看連接的所有變量
mysql> show session variables? like?? "%關(guān)鍵字%"? \G
? ?mysql> show session variables? like? "%cache%" ;?? 僅查看與內(nèi)存相關(guān)的變量
mysql> set session sort_buffer_size=50000;? 修改
局部變量的使用?
declare? 命令 用來的 定義局部變量? ??
用戶變量的使用
#定義并賦值? ? ?mysql> set @age=19 , @name="pangljing" ;
2? 參數(shù)的使用
create? procedure??? 名(參數(shù),參數(shù),......)
參數(shù)定義的語法格式????? 參數(shù)類型??? 變量名??? 數(shù)據(jù)類型
?參數(shù)類型分3種: in???? out??? inout
in? ????in類型的參數(shù)負責(zé)把數(shù)據(jù)傳給存儲過程
例如??? create???? proucedure? p2(? in?? x?? int )
??????? begin
???????? ?......
?????? end
mysql> delimiter //
mysql> create procedure tarena.p3(in? dept_no int)
??? -> begin
??? -> select dept_id , count(*) as 總?cè)藬?shù)? from
-> tarena.employees where dept_id=dept_no group by? dept_id;
??? -> end
??? -> //
mysql> delimiter ;??
mysql> call? p3() ;??? 不給參數(shù)會報錯
mysql> call? p3(1) ;? 查看部門編號1? 的員工人數(shù)
mysql> call? p3(3) ;? 查看部門編號3? 的員工人數(shù)
out類型的參數(shù)? 負責(zé)接收存儲過程的處理結(jié)果。
?? 存儲過程執(zhí)行結(jié)束后 可以調(diào)用 out類型的參數(shù) 獲取存儲過程的處理結(jié)果
create???? proucedure? tarena.p31(? out?? x?? int )
????????? begin
???????? ?......
?????? ???end
call?? tarena.p31(@名);
???? select? @名;
使用INOUT參數(shù)(既有in參數(shù)的功能又有out參數(shù)的功能)
格式1? 一個判斷條件
IF 條件 THEN
? 語句;
END IF;
?格式2? 條件不成立的時候執(zhí)行什么操作
IF 條件 THEN
? 語句1;
ELSE
? 語句2;
END IF;?
格式3? 有多個判斷條件
?IF 條件1 THEN
? 語句1;
ELSEIF 條件2 THEN
? 語句2;
ELSE
? 語句3;
END IF;
case語句
?語法格式
CASE 變量|表達式|字段
WHEN 判斷的值1 THEN 返回值1;
WHEN 判斷的值2 THEN 返回值2;
... ...
ELSE 返回值n;
END CASE;
MySQL存儲過程的循環(huán)結(jié)構(gòu)的例子:
while 循環(huán)結(jié)構(gòu)? 條件判斷成立時 重復(fù)執(zhí)行同一段代碼
?????????? ?? 如果第1次判斷條件就不成立 會直接結(jié)束循環(huán)
語法格式
while 判斷條件 do?????
???? 代碼
end while;
loop? 循環(huán)結(jié)構(gòu)?
沒有判斷條件 重復(fù)執(zhí)行同一段代碼 只要不人為結(jié)束就一直執(zhí)行 所以被稱為死循環(huán)
語法格式
loop
代碼
end loop;
終止循環(huán)
在mysql登錄狀態(tài)下 查看正在執(zhí)行的命令
mysql>? show? processlist;
?在mysql登錄狀態(tài)下終止命令的執(zhí)行
mysql>? kill?? id號;
repeat循環(huán)的例子:
至少循環(huán)一次
因為先執(zhí)行循環(huán)體 ,再判斷條件(當(dāng)判斷條件成立時繼續(xù)執(zhí)行循環(huán)體(判斷條件不成立為為真),反之結(jié)束循環(huán))
?語法格式
repeat
?? 循環(huán)體
?? until 判斷條件
end repeat;
循環(huán)控制語句
leave? (結(jié)束循環(huán))
iterate 終止當(dāng)前循環(huán)并開始下次循環(huán)
備份與恢復(fù)
一、數(shù)據(jù)的備份與恢復(fù)
??? 1.1? 相關(guān)概念
?????????? 數(shù)據(jù)備份: 就是把當(dāng)前服務(wù)器的上數(shù)據(jù)拷貝一份 放到其他的存儲設(shè)備里
?????? ?? 恢復(fù)數(shù)據(jù): 放到其他的存儲設(shè)備里備份 , 還原丟失的數(shù)據(jù)。
? ? ? ? 數(shù)據(jù)備份方式:物理備份? 、邏輯備份
? ? ? ? ?數(shù)據(jù)備份策略 :
?????? ?? ?完全備份 :備份所有數(shù)據(jù):
??? ??????????????????? 可以是一臺數(shù)據(jù)庫服務(wù)器上的所有數(shù)據(jù)
???????????????????? 也可以是 一個數(shù)據(jù)庫下所有表
???????????????????? 還可以僅一張表里的所有記錄
? ? ? ? ? ? ? ? ? 增量備份:? ?備份上次備份后,新產(chǎn)生的數(shù)據(jù)。
?????? ??? 差異備份:? 備份自完全備份后,新產(chǎn)生的數(shù)據(jù)。
1.2 備份策略的使用方式:
????????????? 完全備份+增量備份
????????????? 完全備份+差異備份
1.3 物理備份與恢復(fù)
?cp -r /var/lib/mysql? /bakdir/mysql.bak
1.4 邏輯備份與恢復(fù)
?mysqldump?? -uroot??? -p密碼?? 庫名?? >? /目錄名/備份文件名.sql
庫名的表示方式:
?????? ?庫名? 表名??????????????????? ?#僅備份庫下一張的所有記錄??
?????? ?庫名? 表名1??? 表名2????????? #一起備份庫下2張表的所有記錄
??? ???? -B? 庫名????????????????????? ?#僅備份1個庫里的所有表
?????? ?-B? 庫名1???? 庫名2?????????? #一起備份2個庫里的所有表
?????? ?-A? 或?? --all-databases???? ?#備份服務(wù)器上的所有庫所有表
完全恢復(fù)數(shù)據(jù)命令格式
]# mysql?? -uroot??? -p密碼?? [庫名] <? /目錄名/備份文件名.sql
mysqldump的備份缺點:?
?????? 1 mysqldump 在備份數(shù)據(jù)和恢復(fù)數(shù)據(jù)的時候會鎖表?
??? ??? 2? 使用 mysqldump備份命令生成備份文件恢復(fù)數(shù)據(jù),只能
?????????? 把數(shù)據(jù)恢復(fù)備份時刻的數(shù)據(jù)。
?
4實時備份? (啟用mysql服務(wù)的binlog日志實現(xiàn))
? ? ?binlog日志介紹
???? 也叫二進制日志?
???? 是MySQL服務(wù)日志文件的一種
???? 記錄在數(shù)據(jù)庫服務(wù)器上執(zhí)行的除查詢之外的sql命令
???? 啟用日志能夠達到對數(shù)據(jù)做備份的目的
???? 搭建MySQL主從同步存儲結(jié)構(gòu)的必要條件
???? 默認MySQL服務(wù)沒有啟用binlog日志
Binlog日志管理
??? 1、啟用binlog日志
??? 啟用數(shù)據(jù)庫50主機的binlog日志文件
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #vim? /etc/my.cnf
???????????????????????????????? ? [mysqld]
???????????????????????????????? ? server_id = 50
???????????????????????????????? ? log_bin
自定義日志信息
vim /etc/my.cnf? ? ? ? ? ??
[mysqld]
server_id =? 50
log_bin=/mylog/db50
方法2? :? 創(chuàng)建新日志文件的個數(shù)個完全備份數(shù)據(jù)庫的個數(shù)相同
例子
[root@host50 ~]# mysqldump? -uroot -p123456 --flush-logs? -B tarena?
> /bakdir/tarena.sql
?[root@host50 ~]# mysqldump? -uroot -p123456 --flush-logs? -B tarena?
?db1? > /bakdir/two.sql
? 方法3?? 數(shù)據(jù)庫管理員root 執(zhí)行? 創(chuàng)建新日志文件的命令
???????????????????? ?? mysql> flush logs;
?
binlog日志相關(guān)管理命令
#查看正在使用binlog日志名和偏移量(記錄sql命令的編號)
mysql>? show? master? status;
?#查看數(shù)據(jù)庫服務(wù)器當(dāng)前已有全部 binlog日志文件
mysql> show binary? logs;
?#刪除編號之前的所有日志文件
mysql> purge master logs to "db50.000004";
?#刪除當(dāng)前所有的日志文件重新創(chuàng)建新日志文件和索引文件
mysql> reset master ;
查看日志文件內(nèi)容 2 種方法:
方法1 使用系統(tǒng)命令 mysqlbinlog 查看
[root@host50 ~]# mysqlbinlog?? /mylog/db50.000001? ?
方法2 使用sql命令查看
mysql> show binlog events in "db50.000001" ;
使用binlog日志文件恢復(fù)數(shù)據(jù)
?命令格式1? :??
]# mysqlbinlog?? /目錄名/日志文件名?? |?? mysql? -uroot?? -p密碼
命令格式2 :??
]# mysqlbinlog? 選項?? /目錄名/日志文件名?? |?? mysql? -uroot?? -p密碼
? ?加了選項后會根據(jù)選項指定的范圍查看記錄的sql命令選項包括
#查看指定偏移量范圍內(nèi)記錄的sql命令
--start-position=開始偏移量????? --stop-position=結(jié)束偏移量
?#查看指定時間范圍內(nèi)記錄的sql命令
--start-datetime="yyyy/mm/dd hh:mm:ss"?? --stop-datetime="yyyy/mm/dd? hh:mm:ss"
?命令格式1
查看日志的所有內(nèi)容恢復(fù)數(shù)據(jù) (恢復(fù)所有數(shù)據(jù))
適用于日志文件里只記錄了 insert 和 update 命令 沒有delete 命令的情況下?
]# mysqlbinlog?? /目錄名/日志文件名?? |?? mysql? -uroot?? -p密碼??????
命令格式2?
查看日志的部分內(nèi)容恢復(fù)數(shù)據(jù)(恢復(fù)部分數(shù)據(jù)) 適用于 既有insert 又有delete的情況
]# mysqlbinlog? 選項?? /目錄名/日志文件名?? |?? mysql? -uroot?? -p密碼
查看日志文件的格式
mysql> show??? variables? like??? "binlog_format";
修改日志文件的格式
host50]# vim /etc/my.cnf
?? [mysqld]
??? binlog_format="mixed"?? #自己添加 其他行不需要動
mysql> show variables like "binlog_format";? 查看日志格式
?
通過 指定偏移量范圍恢復(fù)數(shù)據(jù)
--start-position=偏移量????? --stop-position=偏移量
?查看執(zhí)行命令的偏移量范圍
mysql> show binlog events in "db50.000003";?
mysqlbinlog --start-position=658 --stop-position=2794 /mylog/db50.000003 | mysql -uroot -p654321
通過指定時間范圍恢復(fù)數(shù)據(jù)
--start-datetime="yyyy/mm/dd? hh:mm:ss"?? --stop-datetime="yyyy/mm/dd? hh:mm:ss"
#? mysqlbinlog??? /目錄名/日志文件名??? #即可以看到命令執(zhí)行的時間又可以命令執(zhí)行的偏移量
host50]#? mysqlbinlog? /mylog/db50.000003
使用第三方軟件percona提供的備份命令innobackupex 對數(shù)據(jù)做備份和恢復(fù)
?????? 特點:在線熱備不鎖表 適合生產(chǎn)環(huán)境下備份業(yè)務(wù)。
?第一步:安裝提供命令的軟件
#yum -y install libev-4.15-1.el6.rf.x86_64.rpm percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
備份數(shù)據(jù)命令格式
]#innobackupex? -uroot -p密碼? /備份目錄名? --no-timestamp
--no-timestamp??? ?可選項,不用系統(tǒng)的日期做存放備份文件的目錄名? ? ??
恢復(fù)數(shù)據(jù)命令格式
????????????????? 第1步 準備恢復(fù)數(shù)據(jù)
????????????????? ? ]#innobackupex??? --apply-log? /備份目錄名????????????
????????????????? 第2步 拷貝數(shù)據(jù)
????????????????? ? ]#innobackupex??? --copy-back? /備份目錄名
? ? ? ? ? ? ? ? ? ?恢復(fù)數(shù)據(jù)的操作步驟:
????????????????? 1) 停止數(shù)據(jù)庫服務(wù)
????????????????? 2) 清空數(shù)據(jù)庫目錄
????????????????? 3) 準備恢復(fù)數(shù)據(jù)
????????????????? 4) 拷貝數(shù)據(jù)
????????????????? 5) 修改數(shù)據(jù)庫目錄的所有者者組用戶為mysql
????????????????? 6)? 啟動數(shù)據(jù)庫服務(wù)
????????????????? 7)? 管理員root用戶登錄服務(wù)查看數(shù)據(jù)
???
? ?恢復(fù)單張表
?1) 刪除表空間 (表名.ibd) 用來存儲表記錄的文件 select * from? 表;
???????????????????? ?? 刪除表空間就是把數(shù)據(jù)庫目錄下沒有記錄的表名.idb文件刪除
?mysql> ALTER? TABLE? 庫名.表名? DISCARD? TABLESPACE;?
mysql> alter? table? tarena.user discard tablespace;
?2) 導(dǎo)出表信息(生成備份目錄下備份數(shù)據(jù)的信息文件)
]# innobackupex --apply-log --export?? 數(shù)據(jù)完全備份目錄
host51~]# innobackupex? --apply-log --export? /allbak
3) 拷貝表信息文件到數(shù)據(jù)庫目錄下
[root@host51 db51]# cp /allbak/tarena/user.ibd? /var/lib/mysql/tarena/
[root@host51 db51]# cp /allbak/tarena/user.cfg? /var/lib/mysql/tarena/
[root@host51 db51]# cp /allbak/tarena/user.exp? /var/lib/mysql/tarena/
或
[root@host51 db51]# cp /allbak/tarena/user.{ibd,cfg,exp} /var/lib/mysql/tarena/
4) 修改表信息文件的所有者及組用戶為mysql
[root@host51 db51]# chown? mysql:mysql /var/lib/mysql/tarena/user.*?????????
5) 導(dǎo)入表空間
mysql> ALTER? TABLE? 庫名.表名?? IMPORT? TABLESPACE;??
mysql> alter? table? tarena.user? import? tablespace;
6) 刪除數(shù)據(jù)庫目錄下的表信息文件
[root@host51 db51]# rm -rf /var/lib/mysql/tarena/user.cfg
[root@host51 db51]# rm -rf /var/lib/mysql/tarena/user.exp
7) 查看表記錄? ? ? ??
mysql> select? * from tarena.user;??
增量備份數(shù)據(jù)的命令格式
--incremental? 備份新數(shù)據(jù)并定義新數(shù)據(jù)存放的目錄名
--incremental-basedir? 備份新數(shù)據(jù)參考的備份目錄名
]#innobackupex?? -uroot???? -p密碼?? --incremental?? /目錄名??
--incremental-basedir=/目錄名?? --no-timestamp
?增量恢復(fù)數(shù)據(jù)的命令格式
--incremental-dir 增量備份數(shù)據(jù)存放的目錄名??????
?#準備恢復(fù)數(shù)據(jù)
]#innobackupex?? --apply-log?? --redo-only?? /首次備份目錄名
?#合并數(shù)據(jù) 合并的次數(shù)與增量備份的順序要一致
]#innobackupex?? --apply-log?? --redo-only?? /首次備份目錄名?? --incremental-dir=/目錄名
?#拷貝數(shù)據(jù)
]#innobackupex?? --copy-back /完全備份目錄
? ? ? ? ? ? 使用增量備份文件恢復(fù)數(shù)據(jù)的具體操作步驟:
????????????????? 1) 停止數(shù)據(jù)庫服務(wù)
????????????????? 2) 清空數(shù)據(jù)庫目錄
????????????????? 3)數(shù)據(jù)
????????????????? 4) 合并準備恢復(fù)數(shù)據(jù) (合并的次數(shù)要增量備份的次數(shù)一樣 并且合并的順序也有與增量備份的順序一致)
????????????????? 5) 恢復(fù)數(shù)據(jù)
????????????????? 6) 修改數(shù)據(jù)庫目錄的所有者和組用戶為mysql
????????????????? 7)? 啟動服務(wù)
????????????????? 8) 查看數(shù)據(jù)