一、使用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