『壹』 如何記錄mysql命令行操作的內容和時間
創建記錄表
創建觸發器 記錄數據
CREATE TRIGGER t_make_data //創建觸發器
BEFORE INSERT ON t_tab1 //觸發在這張表新增數據前 你可以把增刪查改一起加入。。。 你的邏輯 插入記錄表『貳』 在DOS端如何用命令行進行 MySQL 的操作
首先把mysql
加入環境變數
不過一般安裝完成就自動加入了
mysql
-hhostname
-u
username
-p
pwd
進入之後就可以執行mysql命令了
『叄』 如何用命令行進入mysql具體操作步驟
用命令行進入mysql方法: windows打開命了行,在左下角開始,運行,cmd,mysql 然後就要讓你數據密碼的,當然前提是你的mysql安裝正確,網上有好多圖文並茂的安裝教程。開始,運行,cmd [ ,cd mysql安裝目錄/bin ], mysql -u userName -p Password先用CD命令進到mysql的BIN目錄 然後mysql -u root -p 再輸入ROOT的密碼就行了。 這樣就可以了哦,希望能幫上朋友們。
『肆』 mysql命令行下怎樣實現數據的回滾操作
當啟動Binlog後,事務會產生Binlog Event,這些Event被看做事務數據的一部分。因此要保證事務的Binlog Event和InnoDB引擎中的數據的一致性。所以帶Binlog的CrashSafe要求MySQL宕機重啟後能夠保證:
- 所有已經提交的事務的數據仍然存在。
- 所有沒有提交的事務的數據自動回滾。
- 所有已經提交了的事務的Binlog Event也仍然存在。
- 所有沒有提交事務沒有記錄Binlog Event。
這些要求很好理解,如果重啟後數據還在,但是Binlog Event沒有了,就沒辦法復制到其他節點上了。如果重啟後,數據沒了,但是Binlog Event還在,那麼不存在的數據就會被復制到其他節點上,從而導致主從的不一致。
為了保證帶Binlog的CrashSafe,MySQL內部使用的兩階段提交(Two Phase Commit)。
2 - MySQL的Two Phase Commit(2PC)
在開啟Binlog後,MySQL內部會自動將普通事務當做一個XA事務來處理:
- 自動為每個事務分配一個唯一的ID
- COMMIT會被自動的分成Prepare和Commit兩個階段。
- Binlog會被當做事務協調者(Transaction Coordinator),Binlog Event會被當做協調者日誌。
想了解2PC,可以參考文檔:【https://en.wikipedia.org/wiki/Two-phase_commit_protocol。】
- 分布式事務ID(XID)
使用2PC時,MySQL會自動的為每一個事務分配一個ID,叫XID。XID是唯一的,每個事務的XID都不相同。XID會分別被Binlog和InnoDB記入日誌中,供恢復時使用。MySQ內部的XID由三部分組成:
- 前綴部分
前綴部分是字元串"MySQLXid"
- Server ID部分
當前MySQL的server_id
- query_id部分
為了保證XID的的唯一性,數字部分使用了query_id。MySQL內部會自動的為每一個語句分配一個query_id,全局唯一。
參考代碼:sql/xa。h的struct xid_t結構。
- 事務的協調者Binlog
Binlog在2PC中充當了事務的協調者(Transaction Coordinator)。由Binlog來通知InnoDB引擎來執行prepare,commit或者rollback的步驟。事務提交的整個過程如下:
1. 協調者准備階段(Prepare Phase)
告訴引擎做Prepare,InnoDB更改事務狀態,並將Redo Log刷入磁碟。
2. 協調者提交階段(Commit Phase)
2.1 記錄協調者日誌,即Binlog日誌。
2.2 告訴引擎做commit。
注意:記錄Binlog是在InnoDB引擎Prepare(即Redo Log寫入磁碟)之後,這點至關重要。
在MySQ的代碼中將協調者叫做tc_log。在MySQL啟動時,tc_log將被初始化為mysql_bin_log對象。參考sql/binlog.cc中的init_server_components():
if (opt_bin_log) tc_log= &mysql_bin_log;
而在事務提交時,會依次執行:
tc_log->prepare();
tc_log->commit();
參考代碼:sql/binlog.cc中的ha_commit_trans()。當mysql_bin_log是tc_log時,prepare和commit的代碼在sql/binlog.cc中:
MYSQL_BIN_LOG::prepare();
MYSQL_BIN_LOG::commit();
-協調者日誌Xid_log_event
作為協調者,Binlog需要將事務的XID記入日誌,供恢復時使用。Xid_log_event有以下幾個特點:
- 僅記錄query_id
因為前綴部分不變,server_id已經記錄在Event Header中,Xid_log_event中只記錄query_id部分。
- 標志事務的結束
在Binlog中相當於一個事務的COMMIT語句。
一個事務在Binlog中看起來時這樣的:
Query_log_event("BEGIN");DML產生的events; Xid_log_event;
- DDL沒有BEGIN,也沒有Xid_log_event 。
- 僅InnoDB的DML會產生Xid_log_event
因為MyISAM不支持2PC所以不能用Xid_log_event ,但會有COMMIT Event。
Query_log_event("BEGIN");DML產生的events;Query_log_event("COMMIT");
問題:Query_log_event("COMMIT")和Xid_log_event 有不同的影響嗎?
- Xid_log_event 中的Xid可以幫助master實現CrashSafe。
- Slave的CrashSafe不依賴Xid_log_event
事務在Slave上重做時,會重新產生XID。所以Slave伺服器的CrashSafe並不依賴於Xid_log_event 。Xid_log_event 和Query_log_event("COMMIT"),只是作為事務的結尾,告訴Slave Applier去提交這個事務。因此二者在Slave上的影響是一樣的。
3 - 恢復(Recovery)
這個機制是如何保證MySQL的CrashSafe的呢,我們來分析一下。這里我們假設用戶設置了以下參數來保證可靠性:
- 恢復前事務的狀態
在恢復開始前事務有以下幾種狀態:
- InnoDB中已經提交
根據前面2PC的過程,可知Binlog中也一定記錄了該事務的的Events。所以這種事務是一致的不需要處理。
- InnoDB中是prepared狀態,Binlog中有該事務的Events。
需要通知InnoDB提交這些事務。
- InnoDB中是prepared狀態,Binlog中沒有該事務的Events。
因為Binlog還沒記錄,需要通知InnoDB回滾這些事務。
- Before InnoDB Prepare
事務可能還沒執行完,因此InnoDB中的狀態還沒有prepare。根據2PC的過程,Binlog中也沒有該事務的events。 需要通知InnoDB回滾這些事務。
- 恢復過程
從上面的事務狀態可以看出:恢復時事務要提交還是回滾,是由Binlog來決定的。
- 事務的Xid_log_event 存在,就要提交。
- 事務的Xid_log_event 不存在,就要回滾。
恢復的過程非常簡單:
- 從Binlog中讀出所有的Xid_log_event
- 告訴InnoDB提交這些XID的事務
- InnoDB回滾其它的事務
『伍』 如何使用mysql命令行
mysql命令行的使用主要是對sql語句的掌握,這里簡要介紹一下基礎的命令行操作,更多sql語言相關的內容,用戶可自行學習。
1、mysql命令行登錄
mysql-uroot-p
或者
mysql-uroot-h(mysql伺服器地址)-p
說明:mysql是命令行登錄工具,-u指明登錄用戶,-p指明登錄用戶的密碼,
後面可以直接接密碼。-h後面接伺服器的地址,主要用於遠程登錄mysql服務
器。
『陸』 怎樣用命令行操作MySQL
用命令行進入mysql方法:
windows打開命了行,在左下角開始,運行,cmd,mysql
然後就要讓你數據密碼的,當然前提是你的mysql安裝正確,網上有好多圖文並茂的安裝教程。開始,運行,cmd [ ,cd mysql安裝目錄/bin ], mysql -u userName -p Password先用CD命令進到mysql的BIN目錄
然後 mysql -u root -p
再輸入ROOT的密碼就行了。
希望可以幫到您,謝謝!
『柒』 如何用批處理進入mysql命令行客戶端進行各種操作
mysql既可以互動式地使用mysql輸入查詢並且查看結果。也可以以批模式運行mysql。為了做到這些,把你想要運行的命令放在一個文件中,然後告訴mysql從文件讀取它的輸入:
shell> mysql < batch-file1
如果在Windows下運行mysql,並且文件中有一些可以造成問題的特殊字元,可以這樣操作:
C:\> mysql -e "source batch-file"1
如果你需要在命令行上指定連接參數,命令應為:
shell> mysql -h host -u user -p < batch-file
Enter password: ********12
當這樣操作mysql時,則創建一個腳本文件,然後執行腳本。
如果你想在語句出現錯誤的時候仍想繼續執行腳本,則應使用–force命令行選項。
『捌』 MySQL資料庫是在命令行下操作的嗎
恢復整個資料庫首先,如果要恢復的資料庫是包含授權表的mysql資料庫,你將需要使用--skip-贈款表選項來運行伺服器。否則,伺服器將抱怨無法找到授權表。恢復表後,執行mysqladmin flush-privileges告訴伺服器裝載授權表,並用它們來啟動。資料庫目錄到其他地方的原始內容
復制。例如,你可能會使用他們在以後的事後分析檢查表(驗屍)的崩潰。
酒店與最新的資料庫備份文件重裝。如果你打算使用由mysqlmp的載入的文件,你需要將它們作為mysql的輸入。如果你打算使用直接拷貝從資料庫文件(例如,使用tar或CP),然後復制他們直接回資料庫目錄。然而,在這種情況下,您應關閉伺服器之前復制這些文件,然後重新啟動它。在備份過程中
重做日誌,然後查詢來更新資料庫表。對於所有可用的更新日誌,你可以使用它作為mysql的輸入。指定--one-database選項,以使MySQL只對要還原的資料庫執行查詢。如果您知道需要使用所有的更新日誌文件,你可以使用包含以下命令日誌的目錄:點擊看詳細%LS-TRL更新(0-9)* | xargs的貓| mysql--。一個資料庫DB_NAME
ls命令生成一個單獨的日誌文件更新列表更新日誌文件根據伺服器生成的順序進行排序(你知道,如果你其中的任何文件,排序順序將改變,這將導致更新日誌使用錯誤的順序)。
你可能不得不使用一些更新日誌。例如,如果日誌,因為命名update.392備份,pdate.393等產生的,他們可以重新運行命令:點擊看詳細%的mysql - 一個資料庫DB_NAME <UPDATA。 392
%的mysql - 一個資料庫DB_NAME <updata.393
...
如果正在運行恢復並打算使用更新日誌恢復由於失策DROP DATA BASE,DROPTABLE或DELETE語句和損失的信息,一定要在開始更新日誌中刪除這些語句。
中國恢復單個表恢復單個表是很困難的。如果備份文件中的mysqlmp生成的,它只是不包含數據,你想要一個表,你需要提取的相關線路,並用它們作為mysql的輸入,這部分比較容易。難度被施加到提取片段更新日誌表。你會發現:mysql_find_rows效用在這方面有用的,它可以從更新的多線查詢日誌提取。另一種可能性是使用另一台伺服器
恢復整個資料庫,然後你想要的表中的文件復制到原始資料庫。這其實是很容易的!當文件被復制回資料庫目錄,確保原始資料庫伺服器關閉。
『玖』 怎麼用mysql命令行登錄,進入mysql命令行
用命令行進入mysql方法:
windows打開命了行,在左下角開始,運行,cmd,mysql
然後就要讓你數據密碼的,當然前提是你的mysql安裝正確,網上有好多圖文並茂的安裝教程。開始,運行,cmd [ ,cd mysql安裝目錄/bin ], mysql -u userName -p Password先用CD命令進到mysql的BIN目錄
然後 mysql -u root -p
再輸入ROOT的密碼就行了。