您好,登錄后才能下訂單哦!
這篇文章主要講解了“MySQL中的事務處理和數據備份恢復方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MySQL中的事務處理和數據備份恢復方法”吧!
目錄:
1、事務
2、備份和還原
1、事務:
轉賬: A賬戶 轉100–》B賬戶
sql:
1、A賬戶-100;
2、B賬戶+100;
如果1和2都完成了,那么我們說這樣轉賬過程就完成。
一旦1和2兩個步驟,有一步沒有完成,那么我們說轉成失敗!
怎么辦?
要把已經完成的那部分,回滾(撤銷),消除影響。
在mysql中,有沒有這樣的功能呢?
答案是有!!! 用事務!
事務:一組sql的集合,要么全部都執行成功,要么全部都不執行(已經執行的sql要回滾),把狀態退回到sql執行之前。
語法:
開啟事務:
start transaction;
把sql的執行結果暫存。
提交:
commit
如果所有的sql都執行成功,則提交。將sql的執行結果 持久化 到數據庫中
回滾:
rollback
如果有執行失敗的sql,則需要回滾。將狀態退回到事務開始之前。
持久化:將數據寫入到數據庫中。
無論 commit還是rollback,都會關閉事務。(需要使用事務,還要再開啟)
事務,在沒有commit之前,是沒有持久化到數據的。所以,其他連接是看不到數據變化的。事務,只針對當前的鏈接生效。
然而另外的連接中,看不到數據更新。
rollback后,之前的sql產生的影響,都被消除。
之前沒有用事務的時候,單條sql,一執行,馬上會持久化到數據庫。
為什么:
大家想一下,開啟了事務,我們提交后才能持久化到數據庫。也就說,沒有用過事務的時候,提交是自動的。
自動提交能不能關閉呢?
可以!!!
我們只要把自動提交的變量設置成0(把自動提交關閉)
set autocommit = 0
這個時候,不用開啟事務,每次都要手動提交,才能持久化到數據庫。
注意:commit后,不能自動關閉。
記得要set autocommit=1 開啟自動提交
注意:事務和外鍵一樣,只能在存儲引擎為innodb時才能使用。
2、數據的備份和還原
1. 簡單的數據備份(單表備份)
通過select語句,將查詢數據,寫入到一個文件中,存儲起來。
格式:
select 字段列表 into outfile “文件路徑” from 表名;
如:
SQL> select * into outfile 'D:/wamp/www/php1510/0113/bak.sql' from goods;
此時,文件bak.sql中寫入了應該在屏幕上顯示的數據,每個字段用制表符分隔,每行用換行符。但是,可以定義。字段之間用,來分隔。
如:
SQL> select * into outfile 'D:/wamp/www/php1510/0113/bak2.sql' fields terminated by "," lines terminated by '\r\n' from goods;
簡單備份的還原:(亂碼問題)
# load data infile “D:/wamp/www/php1510/0113/bak.sql” into table copy_goods
2. 用數據導出工具,mysqldump 到出的是sql語句。
在D:\wamp\bin\mysql\mysql5.5.24\bin下面有個mysqldump.exe的工具。這個不是sql,在cmd中使用。
格式:
mysqldump 數據庫服務器地址 端口 用戶名 密碼 -B 庫名 > 備份文件
如果有-B,則sql中有創建庫的sql語句
箭頭:> 輸出重定向
備份一個庫:
# mysqldump -hlocalhost -P3306 -uroot -p zm0109 > D:/wamp/www/php1510/0113/zm0109.sql
備份庫下的某些表:
格式:
mysqldump 數據庫服務器地址 端口 用戶名 密碼 -B 庫名 表名 > 備份文件
# mysqldump -hlocalhost -P3306 -uroot -p zm0109 goods student > D:/wamp/www/php1510/0113/zm01093.sql
還原數據:
1.在登錄mysql客戶端的情況下進行還原:
source sql文件
SQL> source D:/wamp/www/php1510/0113/zm01093.sql
2、在未登錄mysql客戶端的情況下進行還原:
# mysql -uroot -p zm3 <d: wamp="" www="" php1510="" 0113="" zm01093.sql 箭頭:< 輸入重定向
感謝各位的閱讀,以上就是“MySQL中的事務處理和數據備份恢復方法”的內容了,經過本文的學習后,相信大家對MySQL中的事務處理和數據備份恢復方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。