mysql資料庫恢復

来源:https://www.cnblogs.com/yanyanqaq/archive/2020/05/15/12894412.html
-Advertisement-
Play Games

[TOC] 1.資料庫恢復基本事項 MySQL命令以及source命令恢複數據庫的原理就是在資料庫里重新執行文件的SQL語句的過程。數據恢復和字元集的關聯很大,如果字元集不正確則會導致恢復的數據亂碼。 2.利用source命令恢複數據庫 2.1.使用source命令恢複數據庫的說明 進入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=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=2 --single-transaction oldboy|gzip >/opt/oldboy.sql.gz
gzip -cd /opt/oldboy.sql.gz >/opt/oldboy1.sql  #特殊解壓方法
mysql </opt/oldboy1.sql

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 指定字元集登錄資料庫或備份

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • NoSQL 開發中或多或少都會用到,也是面試必問知識點。最近這幾天的面試每一場都問到了。但是感覺回答的並不好,還有很多需要梳理的知識點。這裡通過幾篇 Redis 筆記整個梳理一遍,後面再加上面試題。 Redis 系列: 1. Redis系列(一)Redis入門 2. Redis系列(二)Redi... ...
  • NoSQL 開發中或多或少都會用到,也是面試必問知識點。最近這幾天的面試每一場都問到了。但是感覺回答的並不好,還有很多需要梳理的知識點。這裡通過幾篇 Redis 筆記整個梳理一遍,後面再加上面試題。 Redis 系列: 1. Redis系列(一)Redis入門 2. Redis系列(二)Redi... ...
  • NoSQL 開發中或多或少都會用到,也是面試必問知識點。最近這幾天的面試每一場都問到了。但是感覺回答的並不好,還有很多需要梳理的知識點。這裡通過幾篇 Redis 筆記整個梳理一遍,後面再加上面試題。 Redis 系列: 1. Redis系列(一)Redis入門 2. Redis系列(二)Redi... ...
  • NoSQL 開發中或多或少都會用到,也是面試必問知識點。最近這幾天的面試每一場都問到了。但是感覺回答的並不好,還有很多需要梳理的知識點。這裡通過幾篇 Redis 筆記整個梳理一遍,後面再加上面試題。 Redis 系列: 1. Redis系列(一)Redis入門 2. Redis系列(二)Redi... ...
  • NoSQL 開發中或多或少都會用到,也是面試必問知識點。最近這幾天的面試每一場都問到了。但是感覺回答的並不好,還有很多需要梳理的知識點。這裡通過幾篇 Redis 筆記整個梳理一遍,後面再加上面試題。 Redis 系列: 1. Redis系列(一)Redis入門 2. Redis系列(二)Redi... ...
  • NoSQL 開發中或多或少都會用到,也是面試必問知識點。最近這幾天的面試每一場都問到了。但是感覺回答的並不好,還有很多需要梳理的知識點。這裡通過幾篇 Redis 筆記整個梳理一遍,後面再加上面試題。 Redis 系列: 1. Redis系列(一)Redis入門 2. Redis系列(二)Redi... ...
  • 一、NoSQL簡介 NoSQL並不是No SQL(不再需要SQL),而是指Not Only SQL(不僅僅只有SQL)。NoSQL並不是用來替代關係型資料庫的,而是在某些使用關係型資料庫不合適的場景中,可以使用NoSQL資料庫進行優化,而在系統中主要的、常規的數據仍然使用關係型資料庫。 常用的NoS ...
  • [TOC] 前言 mysqlbinlog工具的作用是解析mysql的二進位binlog的日誌內容,把二進位日誌解析成可以在MySQL資料庫里執行的SQL語句。 1.mysql的binlog日誌是什麼 mysql數據目錄下的xxx bin.000001這樣的文件就是mysql的binlog日誌 2.m ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...