8種手動和自動備份MySQL數據庫的方法

一、使用MySQLDump進行MySQL備份前端

mysqldump是MySQL內置的工具,容許用戶將數據庫指定不一樣的選項備份到文件、服務器,甚至是壓縮gzip文件中。mysqldump實用程序靈活,快速,可執行高級備份,並接受各類命令行參數,用戶可經過這些參數來更改備份數據庫的方式。mysql

Windows操做系統中的c:mysqlbin和Unix / Linux系統的/usr/local/mysql/bin中可找到mysqldump實用程序,將不一樣的參數傳遞給mysqldump實用程序,就能夠如下形式使用。git

mysqldump ---user [user name] ---password= [password]sql

[database name] > [dump file]shell

手動備份,只須要MySQL數據庫的密碼,使用p選項做爲密碼,將命令發送到mysqldump。例如,要備份全部數據庫,請使用all databases:數據庫

Mysqldump –u USER –p –all-databases> /mnt/backups/all緩存

 

二、使用MySQLpump進行MySQL備份安全

MySQLpump相似於mysqldump,生成支持並行化的邏輯備份。MySQLpump以並行方式爲多個數據庫執行全部與轉儲相關的操做,這大大減小了執行邏輯備份所花費的時間。bash

可是,MySQLpump不備份performance_schema,sys schema和ndbinfo,所以您必須使用 – databases來命名它們,它也不會轉儲用戶賬戶定義。服務器

Shell> mysqlpump –exclude-databases=% --users

 

三、使用AutoMySQLBackup進行MySQL備份

AutoMySQLBackup能夠備份服務器上的數據庫,不管是單個、多個仍是全部數據庫。每一個數據庫都保存在一個單獨的文件中,能夠壓縮該文件。如何執行呢?只需下載一個文件bash腳本,保存並根據本身的喜愛自定義,使其可執行。

手動運行腳本:./automysqlbackup.sh.2.5

因爲此腳本不支持將備份文件夾保存到遠程位置,所以可能須要安裝遠程空間或使用其餘技術遠程上傳文件。

 

四、使用mydumper進行MySQL備份

Mydumper是一個實用的軟件程序,能夠保證快速可靠的多線程MySQL備份過程。衆所周知,Mydumper能夠很好地處理大型數據庫,提供並行性。用戶須要建立以下所示的備份,而後將變量($)替換實變量,壓縮文件夾並將其放在首選位置。

Mydumper

--database=$DB_NAME

--host=$DB_HOST

--user=$DB_PASS

--rows=500000

--compress

--build-empty-files

--compress-protocol

 

快速和自動備份

五、使用PHPMyAdmin進行MySQL備份

PHPMyAdmin是一個流行的應用程序,用於管理MySQL數據庫,能夠無償使用。不少服務提供商都使用PHPMyAdmin,有可能你本身都安裝了卻不自知。

備份數據庫所須要作的就是打開PHPMyAdmin,選擇文件或文件夾,而後單擊「導出」連接,另外,也有「另存爲」和「壓縮」等在本地保存數據的選項。

 

六、使用文件系統快照進行MySQL備份

可使用Veritas,LVM或ZFS等文件系統進行系統快照。要使用文件系統快照,從客戶端程序執行具備讀鎖定的刷新表,而後從另外一個shell執行運行mount vxfs snapshot。從第一個客戶端解鎖表,而後將文件從快照複製到目標文件夾,稍後卸載快照。

 

七、經過複製表文件進行備份

經過將表文件複製爲*.MYD,*.MYI文件來備份MyISAM表,使用時須要中止服務器或鎖定並刷新相關表:

FLUSH TABLES tbl_list WITH READ LOCK;

在數據庫中複製文件時,讀鎖容許其餘客戶機繼續查詢表,而刷新則確保在備份過程以前將全部活動索引頁寫入磁盤。

不管徹底備份仍是增量備份,MySQL數據庫備份都是必不可少的,並且隨着數據庫大小的增長,您可能還須要更改備份策略。

 

八、MySQL自動備份與ottomatik

Ottomatik使用備用降落傘爲您的MySQL數據庫提供了極好的備份解決方案。Ottomatik支持雲或本地服務器,經過安裝腳本,它會自動安裝鏈接到Linux服務器的SSH密鑰,還能夠爲備份做業選擇多個服務器。

 

備份工具

rsync:一個快速的單向增量備份和鏡像工具(LCTT 譯註:rsync 應是雙向的)。經常使用於複製一個數據倉庫到線下存儲,能夠選擇經過SSH或stunnel的加密鏈接。

 

rdiff-backup:另外一個有效利用帶寬的增量備份工具。管理兩個連續快照之間的差分。

 

duplicity:一個加密的增量備份工具。使用GnuPG加密備份,並經過SSH上傳到遠程服務器。

 

數據庫備份有四種類型,分別應用於不一樣的場合?

  • 徹底備份 這是大多數人經常使用的方式,它能夠備份整個數據庫,包含用戶表、系統表、索引、視圖和存儲過程等全部數據庫對象。但它須要花費更多的時間和空間,因此,通常推薦一週作一次徹底備份;

     

  • 事務日誌備份 事務日誌是一個單獨的文件, 它記錄數據庫的改變, 備份的時候只須要複製自上次備份以來對數據庫所作的改變, 因此只須要不多的時間。 爲了使數據庫具備魯棒性,推薦每小時甚至更頻繁的備份事務日誌;

     

  • 差別備份 也叫增量備份。它是隻備份數據庫一部分的另外一種方法,它不使用事務日誌,相反,它使用整個數據庫的一種新映象。它比最初的徹底備 份小,由於它只包含自上次徹底備份以來所改變的數據庫。它的優勢是存儲和恢復速度快。推薦天天作一次差別備份;

     

  • 文件備份 數據庫能夠由硬盤上的許多文件構成。若是這個數據庫很是大,而且一個晚上也不能將它備份完,那麼可使用文件備份每晚備份數據庫 的一部分。因爲通常狀況下數據庫不會大到必須使用多個文件存儲,因此這種備份不是很經常使用;

 

常見問題  :

1. 怎麼備份數據的,包括數據庫備份?

回答:在生產環境下,無論是應用數據、仍是數據庫數據首先在部署的時候就會有主從架構,這自己就是是屬於數據的熱備份;

其實考慮冷備份,用專門一臺服務器作爲備份服務器,好比能夠用rsync+inotify配合計劃任務來實現數據的冷備份,若是是發版的包備份,正常狀況下有臺發佈服務器,每次發版都會保存好發版的包。

2.熱備份和冷備份區別?

    冷備份發生在數據庫已經正常關閉的狀況下,當正常關閉時會提供給咱們一個完整的數據庫。冷備份時將要害性文件拷貝到另外的位置的一種說法。對於備份Oracle信息而言,冷備份時最快和最安全的方法。

      熱備份是在數據庫運行的狀況下,採用archivelog mode方式備份數據庫的方法。因此,假如你有昨天夜裏的一個冷備份並且又有今天的熱備份文件,在發生問題時,就能夠利用這些資料恢復更多的信息。熱備份要求數據庫在Archivelog方式下操做,並須要大量的檔案空間。一旦數據庫運行在archivelog狀態下,就能夠作備份了。


常見問題 : 

1.mysql的innodb如何定位鎖問題:
在使用 show engine innodb status檢查引擎狀態時,發現了死鎖問題
在5.5中,information_schema 庫中增長了三個關於鎖的表(MEMORY引擎)

innodb_trx                           ## 當前運行的全部事務
innodb_locks                       ## 當前出現的鎖
innodb_lock_waits               ## 鎖等待的對應關係
mysql如何減小主從複製延遲:

若是延遲比較大,就先確認如下幾個因素:

1. 從庫硬件比主庫差,致使複製延遲

2. 主從複製單線程,若是主庫寫併發太大,來不及傳送到從庫就會致使延遲。更高版本的mysql能夠支持多線程複製

3. 慢SQL語句過多

4. 網絡延遲

5. master負載

主庫讀寫壓力大,致使複製延遲,架構的前端要加buffer及緩存層

6. slave負載

通常的作法是,使用多臺slave來分攤讀請求,再從這些slave中取一臺專用的服務器

只做爲備份用,不進行其餘任何操做.另外, 2個能夠減小延遲的參數:

–slave-net-timeout=seconds 單位爲秒 默認設置爲 3600秒

#參數含義:當slave從主數據庫讀取log數據失敗後,等待多久從新創建鏈接並獲取數據
–master-connect-retry=seconds 單位爲秒 默認設置爲 60秒

#參數含義:當從新創建主從鏈接時,若是鏈接創建失敗,間隔多久後重試

一般配置以上2個參數能夠減小網絡問題致使的主從數據同步延遲

MySQL數據庫主從同步延遲解決方案

最簡單的減小slave同步延時的方案就是在架構上作優化,儘可能讓主庫的DDL快速執行

還有就是主庫是寫,對數據安全性較高,好比sync_binlog=1,innodb_flush_log_at_trx_commit
= 1 之類的設置,而slave則不須要這麼高的數據安全,徹底能夠講sync_binlog設置爲0或者關閉binlog

innodb_flushlog也能夠設置爲0來提升sql的執行效率。另外就是使用比主庫更好的硬件設備做爲slave
 

2.如何重置mysql root密碼?

1、 在已知MYSQL數據庫的ROOT用戶密碼的狀況下,修改密碼的方法:

一、 在SHELL環境下,使用mysqladmin命令設置:

mysqladmin –u root –p password 「新密碼」              回車後要求輸入舊密碼


二、 在mysql>環境中,使用update命令,直接更新mysql庫user表的數據:

Update  mysql.user  set  password=password(‘新密碼’)  where  user=’root’;
flush   privileges;
注意:mysql語句要以分號」;」結束.

 

三、 在mysql>環境中,使用grant命令,修改root用戶的受權權限。

grant  all  on  *.*  to   root@’localhost’  identified  by  ‘新密碼’;
2、 如查忘記了mysql數據庫的ROOT用戶的密碼,又如何作呢?方法以下:

一、 關閉當前運行的mysqld服務程序:service mysqld stop(要先將mysqld添加爲系統服務)

二、 使用mysqld_safe腳本以安全模式(不加載受權表)啓動mysqld 服務

/usr/local/mysql/bin/mysqld_safe --skip-grant-table &

三、 使用空密碼的root用戶登陸數據庫,從新設置ROOT用戶的密碼

#mysql  -u   root
Mysql> Update  mysql.user  set  password=password(‘新密碼’)  where  user=’root’;
Mysql> flush   privileges;
 

3.怎麼備份數據的,包括數據庫備份?

回答:在生產環境下,無論是應用數據、仍是數據庫數據首先在部署的時候就會有主從架構,這自己就是是屬於數據的熱備份;

其實考慮冷備份,用專門一臺服務器作爲備份服務器,好比能夠用rsync+inotify配合計劃任務來實現數據的冷備份,若是是發版的包備份,正常狀況下有臺發佈服務器,每次發版都會保存好發版的包。

 

4.

 

5.

 

 

 

 

更多介紹  :  https://blog.csdn.net/singit/article/details/47724983

來源 : 小鳥雲計算

8種手動和自動備份MySQL數據庫的方法 : https://mp.weixin.qq.com/s/8dyZGCjTTfOMazlaC-96GA

做者:Singit  來源:CSDN  原文:https://blog.csdn.net/singit/article/details/47724983 

相關文章
相關標籤/搜索