目錄
- 1.資料庫恢復基本事項
- 2.利用source命令恢復資料庫
- 2.1.使用source命令恢復資料庫的說明
- 2.2.恢復演示
- 3.利用MySQL命令恢復(標準)
- 3.1.使用MySQL命令恢復基本實踐
- 3.2.使用開發人員提交的SQL陳述句恢復檔案
- 3.3.針對壓縮的備份資料進行恢復
- 3.3.1.使用gzip解壓(會洗掉壓縮檔案)
- 3.3.2.使用gzip解壓(不會洗掉壓縮檔案)
- 3.3.3.使用gunzip解壓(不會洗掉壓縮檔案)
- 3.3.4.使用zcat讀取壓縮包資料
- 4.利用mysql -e引數查看mysql資料
- 4.1.查看資料庫oldboy庫test表資料
- 4.2.利用mysql -e引數查看SQL執行緒執行狀態
- 4.3.利用mysql -e引數查看mysql變數及性能狀態
- 4.4.利用mysql -e引數不重啟資料庫修改資料庫引數
- 4.5.利用mysql -e引數引出的重要命令
- 4.6.mysqladmin命令常用引數
- 4.7.mysql命令常用引數
1.資料庫恢復基本事項
MySQL命令以及source命令恢復資料庫的原理就是在資料庫里重新執行檔案的SQL陳述句的程序,資料恢復和字符集的關聯很大,如果字符集不正確則會導致恢復的資料亂碼,
2.利用source命令恢復資料庫
2.1.使用source命令恢復資料庫的說明
進入MySQL資料庫控制臺后,切換到想恢復資料的資料庫,
接著,使用source命令進行恢復,后面接.sql檔案,
source oldboy_db.sql
這個oldboy_db.sql檔案是系統的相對路徑,默認是登錄MySQL前的系統路徑,也可以使用完整的路徑,
2.2.恢復演示
1、先執行一次正式的備份:
mysqldump -B --master-data=https://www.cnblogs.com/yanyanqaq/p/2 --single-transaction oldboy|gzip >/opt/oldboy.sql.gz
2、恢復前解壓為SQL檔案:
gzip -d /opt/oldboy.sql/gz
3、登錄資料庫洗掉oldboy資料庫,然后準備用source恢復:
drop database oldboy;
select * from oldboy.test;
source /opt/oldboy.sql
select * from oldboy.test;
3.利用MySQL命令恢復(標準)
3.1.使用MySQL命令恢復基本實踐
MySQL命令是MySQL資料庫自帶的重要命令之一,除了日常登錄資料庫之外,還可以通過Mysqldump備份的檔案或者人工編輯的SQL陳述句檔案對資料庫進行資料恢復,
drop database oldboy;
mysql </opt/oldboy.sql
mysql -e "select * from oldboy.test;" #使用-e引數,可在命令列查MySQL資料
3.2.使用開發人員提交的SQL陳述句恢復檔案
假定開發人員讓運維人員或DBA插入資料到資料庫(可能是通過郵箱發送的,內容可能是字串或者SQL檔案),
此時的SQL檔案里很可能沒有use db這樣的字樣,此時如果使用mysql命令匯入就要指定資料庫名,
mysql oldboy </opt/oldboy.sql
指定庫名oldboy的作用就相當于是在資料庫里執行use oldboy,因此如果使用mysqldump備份時不使用-B引數,那么在恢復時不但可能會提示沒有資料庫,還可能會提示沒有選擇資料庫,
并且在SQL陳述句檔案里盡可能地加入字符集設定,以防止亂碼,假設開發人員提交了N行插入陳述句,則需要插入到資料庫,
insert into test(name) values('小陶');
檔案里執行:
set names utf8;
insert into test(name) values('小陶');
如果是utf8資料庫,人工編輯的SQL檔案,使用“utf8”的格式,
恢復資料到資料庫:
mysql </opt/insert.sql
mysql oldboy</opt/insert.sql
mysql -e "select * from oldboy.test;"
使用-B引數以后,備份結果中會帶use oldboy和“create database oldboy”陳述句,而恢復時在mysql命令后指定庫名就相當于是執行use oldboy,
mysql </opt/oldboy.sql
否則:
mysql oldboy</opt/insert.sql
3.3.針對壓縮的備份資料進行恢復
3.3.1.使用gzip解壓(會洗掉壓縮檔案)
gzip -d /opt/oldboy.sql.gz
mysql </opt/oldboy.sql
3.3.2.使用gzip解壓(不會洗掉壓縮檔案)
!mysqldump #呼叫最近的mysqldump命令,重復執行備份,
mysqldump -B --master-data=https://www.cnblogs.com/yanyanqaq/p/2 --single-transaction oldboy|gzip >/opt/oldboy.sql.gz
gzip -cd /opt/oldboy.sql.gz >/opt/oldboy1.sql #特殊解壓方法
mysql
3.3.3.使用gunzip解壓(不會洗掉壓縮檔案)
gunzip -cd /opt/oldboy.sql.gz >/opt/oldboy.sql
mysql </opt/oldboy2.sql
或者:
gunzip</opt/oldboy.sql.gz|mysql
3.3.4.使用zcat讀取壓縮包資料
zcat /opt/oldboy.sql.gz >/opt/oldboy3.sql
mysql </opt/oldboy3.sql
4.利用mysql -e引數查看mysql資料
mysql命令提供了一個功能,可以讓使用者無須登錄資料庫,在Linux命令列就可以執行SQL陳述句,
4.1.查看資料庫oldboy庫test表資料
mysql -e "use oldboy;select * from test;"
4.2.利用mysql -e引數查看SQL執行緒執行狀態
mysql -e "show processlist;"
查看慢查詢陳述句:
mysql -e "show full processlist;"
show full processlist;
kill id; #id=xxx
解決辦法:
調整MySQL的超時引數配置:
show variables like '&_timeout%';
set global wait_timeout = 60;
set global interactive_timeout = 60;
組態檔里修改:
[mysqld]
interactive_timeout = 120 #此引數設定后wait_timeout自動生效
wait_timeout = 120
其他方法:
1、在PHP程式中,不使用持久鏈接,即使用mysql_connect而不是pconnect,
2、PHP程式執行完畢,應該顯式呼叫mysql_close,
3、Java程式調整連接池(C3P0)或者調整JAVA服務(Tomcat有關連接池引數),
4、逐步分析MySQL的SQL查詢及慢查詢日志,找到查詢過慢的SQL,優化,
4.3.利用mysql -e引數查看mysql變數及性能狀態
查看mysql的所有引數配置:
mysql -e "show variables;"
查看my.cnf組態檔的配置有沒有在資料庫中生效:
mysql -e "show variables like 'log-bin';"
查看mysql資料庫運行狀態:
mysql -e "show global status;"|head -5
4.4.利用mysql -e引數不重啟資料庫修改資料庫引數
mysql -e "show variables;"|grep key_buffer
mysql -e "set global key_buffer_size = 1024*1024*16;"
mysql -e "show variables;"|grep key_buffer
實作不重啟資料庫更改資料庫引數:
set global key_buffer_size = 1024*1024*16; #及時生效,重啟mysql失效
4.5.利用mysql -e引數引出的重要命令
show processlist; #查看資料庫里正在執行的SQL陳述句,可能無法看全完整的SQL陳述句,
show full processlist; #查看正在執行的完整SQL陳述句,完整顯示,
set global key_buffer_size = 1024*1024*16; #不重啟資料庫調整資料庫引數,直接生效,重啟后失效,
show variables; #查看資料庫的配置引數資訊,例如,my.cnf里引數的生效情況,
show variables like '%log_bin%';
kill ID; #殺掉SQL執行緒的命令,ID為執行緒號,
show session status; #查看當前會話的資料庫狀態資訊,
show global status; #查看整個資料庫運行的狀態資訊,要分析并要做好監控,
show engine innodb status; #顯示innodb引擎的性能狀態,
4.6.mysqladmin命令常用引數
mysqladmin password oldboy123 #設定密碼
mysqladmin -uroot -poldboy123 password oldboy #修改密碼
mysqladmin -uroot -poldboy123 status #查看狀態,相當于show status
mysqladmin -uroot -poldboy123 -i 1 status #每秒查看一次狀態
mysqladmin -uroot -poldboy123 extended-status #等同于show global status
mysqladmin -uroot -poldboy123 flush-logs #切割日志
mysqladmin -uroot -poldboy123 processlist #查看執行的SQL陳述句資訊
mysqladmin -uroot -poldboy123 processlist -i 1 #每秒查看一次執行的SQL陳述句
mysqladmin -uroot -p'oldboy123' shutdown #關閉mysql服務
mysqladmin -uroot -p'oldboy123' variables #相當于show variables
4.7.mysql命令常用引數
| mysql命令常用引數 | 說明 |
|---|---|
| -u | 指定資料庫用戶 |
| -p | 指定資料庫密碼 |
| -S | 指定資料庫socket檔案 |
| -h | 指定資料庫主機,默認localhost |
| -P | 指定資料庫埠,默認3306 |
| -e | 不登錄資料庫執行資料庫命令 |
| --default-character-set=name | 指定字符集登錄資料庫或備份 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/40015.html
標籤:MySQL
上一篇:mysql 根據日期(date)做年,月,日分組統計查詢
下一篇:mysqlbinlog增量恢復
