DB的備份與恢復
前言
因為我們的專案要進行底層架構改造,原本用的資料庫是關係型的Oracle資料庫。但是由於業務場景的需要,Oracle在多度查詢下效能表現較差,所以組內決定採用圖資料庫Arangodb來代替Oracle部門能力。所以博主在這段時間就去研究這個圖資料庫了,並且完成了十萬級,百萬計,千萬級資料的產生。本來是比較順利的,但是由於自己手賤,在copy程式碼的時候順帶copy了一行dropDatabase()的程式碼,然後果不其然,一百萬的資料瞬間就被幹沒了。然後由於Arangodb的生態不夠好,網上關於它的備份恢復相關資料基本沒有。所以最後只能重新造了一遍。然後博主就萌生了學習下DB的備份恢復相關的知識,所以就有了這篇水文。
正文
這裡將以Mysql為例,講述從利用儲存過程造資料,再到指令碼完成備份dump檔案,最後成功恢復資料庫的過程。
-
建立儲存過程造資料資料
這裡採用for迴圈,跑了一晚上大概達到千萬級資料量。CREATE DEFINER=
root
@%
PROCEDUREtestDatabase
(in con INT)
BEGIN
DECLARE
i int DEFAULT 1;
WHILE i<con DO
insert into user(id,username,number,age,isDelete)
VALUES (i,‘junwei’,‘123456879’,20,0);
END WHILE ;
COMMIT;
ENDselect檢視測試資料的資料量,達到了3400w,而查詢時間需要16s。
這個查詢效率真的是太差了,這個還是經過索引優化後的結果。所以說當mysql的達到千萬級或者上億時,磁碟的IO效能達到瓶頸,普通的sql優化方式已不能滿足業務需要,需要通過其他手段比如分庫分表等技術,提高整體的IO效能降低資料庫讀寫時間。
-
匯出資料庫dump檔案
mysql資料一般儲存在/var/lib/mysql下,一般我們備份資料庫的話是備份它的dump檔案,備份某個庫的命令為:
mysqldump --database program(資料庫名) > program20200107(備份後的檔案),如圖:
-
刪除資料庫後通過dump檔案恢復
drop databses刪除資料庫
mysql < dump檔案恢復資料庫
show一下檢視資料庫是否還原成功,資料是否存在
證明資料庫被成功恢復。在生產中,應該用指令碼定時備份資料庫。而不是重複的手工操作。
結尾
國慶假期餘額不足了。。。
相關文章
- DB2備份與恢復DB2
- RAC備份恢復之Voting備份與恢復
- db2備份恢復(backup restore)DB2REST
- 備份與恢復:polardb資料庫備份與恢復資料庫
- db2 命令列備份和恢復DB2命令列
- GitLab的備份與恢復Gitlab
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- Jenkins備份與恢復Jenkins
- Postgresql 備份與恢復SQL
- MySQL 備份與恢復MySql
- Mysql備份與恢復(1)---物理備份MySql
- GitLab的自動備份、清理備份與恢復Gitlab
- MySQL備份與恢復——基於MyDumper/MyLoader 邏輯備份恢復MySql
- Oracle 備份 與 恢復 概述Oracle
- MySQL 非常規恢復與物理備份恢復MySql
- Mysql備份與恢復(2)---邏輯備份MySql
- MySQL備份與恢復——基於OUTFILE /LOAD DATA 邏輯備份恢復MySql
- Mysql的幾種備份與恢復MySql
- Elasticsearch叢集的備份與恢復Elasticsearch
- Linux 系統的備份與恢復Linux
- 備份與恢復oracle_homeOracle
- 《入門MySQL—備份與恢復》MySql
- MySQL備份與恢復——實操MySql
- 入門MySQL——備份與恢復MySql
- RMAN備份與恢復測試
- MySQL備份與恢復操作解析MySql
- Mysql資料備份與恢復MySql
- 物理冷備份與恢復的操作命令
- mydumper備份恢復
- Mysql備份恢復MySql
- 備份和恢復
- Oracle 12c 備份與恢復Oracle
- MySQL入門--備份與恢復(三)MySql
- MySQL入門--備份與恢復(一)MySql
- MySQL入門--備份與恢復(二)MySql
- MySQL 日誌管理、備份與恢復MySql
- RabbitMQ如何備份與恢復資料MQ
- postgresql備份與恢復資料庫SQL資料庫