這篇文章主要講解了“中的事務(wù)處理和數據備份恢復方法”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“MySQL中的事務(wù)處理和數據備份恢復方法”吧!
目錄:
1、事務(wù)
2、備份和還原
1、事務(wù):
轉賬: A賬戶(hù) 轉100–》B賬戶(hù)
sql:
1、A賬戶(hù)-100;
2、B賬戶(hù)+100;
如果1和2都完成了,那么我們說(shuō)這樣轉賬過(guò)程就完成。
一旦1和2兩個(gè)步驟,有一步?jīng)]有完成,那么我們說(shuō)轉成失??!
怎么辦?
要把已經(jīng)完成的那部分,回滾(撤銷(xiāo)),消除影響。
在mysql中,有沒(méi)有這樣的功能呢?
答案是有?。?! 用事務(wù)!
事務(wù):一組sql的集合,要么全部都執行成功,要么全部都不執行(已經(jīng)執行的sql要回滾),把狀態(tài)退回到sql執行之前。
語(yǔ)法:
開(kāi)啟事務(wù):
start transaction;
把sql的執行結果暫存。
提交:
commit
如果所有的sql都執行成功,則提交。將sql的執行結果 持久化 到數據庫中
回滾:
rollback
如果有執行失敗的sql,則需要回滾。將狀態(tài)退回到事務(wù)開(kāi)始之前。
持久化:將數據寫(xiě)入到數據庫中。
無(wú)論 commit還是rollback,都會(huì )關(guān)閉事務(wù)。(需要使用事務(wù),還要再開(kāi)啟)
事務(wù),在沒(méi)有commit之前,是沒(méi)有持久化到數據的。所以,其他連接是看不到數據變化的。事務(wù),只針對當前的鏈接生效。
然而另外的連接中,看不到數據更新。
rollback后,之前的sql產(chǎn)生的影響,都被消除。
之前沒(méi)有用事務(wù)的時(shí)候,單條sql,一執行,馬上會(huì )持久化到數據庫。
為什么:
大家想一下,開(kāi)啟了事務(wù),我們提交后才能持久化到數據庫。也就說(shuō),沒(méi)有用過(guò)事務(wù)的時(shí)候,提交是自動(dòng)的。
自動(dòng)提交能不能關(guān)閉呢?
可以?。?!
我們只要把自動(dòng)提交的變量設置成0(把自動(dòng)提交關(guān)閉)
set autocommit = 0
這個(gè)時(shí)候,不用開(kāi)啟事務(wù),每次都要手動(dòng)提交,才能持久化到數據庫。
注意:commit后,不能自動(dòng)關(guān)閉。
記得要set autocommit=1 開(kāi)啟自動(dòng)提交
注意:事務(wù)和外鍵一樣,只能在存儲引擎為innodb時(shí)才能使用。
2、數據的備份和還原
1. 簡(jiǎn)單的數據備份(單表備份)
通過(guò)select語(yǔ)句,將查詢(xún)數據,寫(xiě)入到一個(gè)文件中,存儲起來(lái)。
格式:
select 字段列表 into outfile “文件路徑” from 表名;
如:
SQL> select * into outfile 'D:/wamp/www/php1510/0113/bak.sql' from goods;
此時(shí),文件bak.sql中寫(xiě)入了應該在屏幕上顯示的數據,每個(gè)字段用制表符分隔,每行用換行符。但是,可以定義。字段之間用,來(lái)分隔。
如:
SQL> select * into outfile 'D:/wamp/www/php1510/0113/bak2.sql' fields terminated by "," lines terminated by '\r\n' from goods;
簡(jiǎn)單備份的還原:(亂碼問(wèn)題)
# load data infile “D:/wamp/www/php1510/0113/bak.sql” into table copy_goods
2. 用數據導出工具,mysqldump 到出的是sql語(yǔ)句。
在D:\wamp\bin\mysql\mysql5.5.24\bin下面有個(gè)mysqldump.exe的工具。這個(gè)不是sql,在cmd中使用。
格式:
mysqldump 數據庫地址 端口 用戶(hù)名 密碼 -B 庫名 > 備份文件
如果有-B,則sql中有創(chuàng )建庫的sql語(yǔ)句
箭頭:> 輸出重定向
備份一個(gè)庫:
# mysqldump -hlocalhost -P3306 -uroot -p zm0109 > D:/wamp/www/php1510/0113/zm0109.sql
備份庫下的某些表:
格式:
mysqldump 數據庫服務(wù)器地址 端口 用戶(hù)名 密碼 -B 庫名 表名 > 備份文件
# mysqldump -hlocalhost -P3306 -uroot -p zm0109 goods student > D:/wamp/www/php1510/0113/zm01093.sql
還原數據:
1.在登錄mysql客戶(hù)端的情況下進(jìn)行還原:
source sql文件
SQL> source D:/wamp/www/php1510/0113/zm01093.sql
2、在未登錄mysql客戶(hù)端的情況下進(jìn)行還原:
# mysql -uroot -p zm3 <d: wamp="" www="" php1510="" 0113="" zm01093.sql 箭頭:< 輸入重定向
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站