一、數據備份的重要性 工作中,如果意外刪除了重要的文件或者目錄的話,那結果可就慘了。尤其是當誤刪除的數據涉及重要的客戶或者關鍵項目,並且這些數據無法輕易重新創建的時候,那滋味,不用我說你也能想像得到。不巧的是,像這樣的數據在公司環境中隨處可見,例如銷售記錄、客戶聯系方式,等等。 二、關於mysqlmp MySQL自身提供了許多命令行工具,例如mysql工具可以用來與MySQL的資料庫模式、數據、用戶和配置變數進行交互,而mysqladmin工具則可以進行各種管理任務,還有就是下面將要介紹的mysqlmp。此外還有很多,不過那超出了本文的討論范圍。工具mysqlmp既可以用來備份資料庫模式,還可以用來備份數據;利用它,我們不僅可以對一個伺服器上的所有資料庫進行地毯式的備份,同時我們還可以選擇性地備份某個資料庫,甚至資料庫中指定的某些表。 當在伺服器上安裝MySQL的時候,應修改系統路徑以便使全局命令行可以訪問各個客戶程序。打開終端窗口,並執行下列命令:%mysqlmp Usage: mysqlmp[OPTIONS]database[tables]ORmysqlmp[OPTIONS]--databases [OPTIONS] DB1 [DB2 DB3...] OR mysqlmp [OPTIONS] --all-databases [OPTIONS]Formore options, usemysqlmp--help這里給出了使用mysqlmp程序的方法。舉例來說,若要備份所有資料庫模式和數據至文件backup092210.sql的話,可以執行如下所示的命令:%mysqlmp-u root-p--all-databases backup092210.sql Enter password: 這里,為了能夠訪問所有資料庫,我們需要一個root許可權,所以這里需要在提示符後面輸入相應口令。此外,如果你是在開發用的伺服器上練習這些命令的話,不妨花一些時間看看備份文件的內容。這時您會看到一系列的SQL語句,先是刪除各個表後重新創建的語句,然後是重新創建相關數據的語句。另外,由於上面的例子中我們對所有資料庫進行備份,所以您還會發現,備份文件將創建每個資料庫(如果它還沒有存在的話),然後通過USE命令切換到該資料庫,進而創建與該資料庫相關的表跟數據。 若要備份單個資料庫,例如要備份名為wiki的資料庫到一個名為wiki-backup092210.sql的文件中,我們可以使用如下所示的命令:%mysqlmp-u root-p wikiwiki-backup092210.sql Enter password: 最後,若要備份資料庫中名為users的表的話,例如要把它備份到名為wikiusers-backup092210.sql的文件中,我們可以使用如下所示的命令:%mysqlmp-u root-p wiki userswikiusers-backup092210.sql Enter password:三、調整備份內容 有時候,我們可能只想備份資料庫的模式,或者只想備份資料庫的數據。為了備份資料庫模式,可以向mysqlmp傳遞參數--no-data,如下所示:%mysqlmp-u root-p--no-data wiki wiki-backup092210.sql 對於前面所舉的例子,僅需要少量的擊鍵次數就能執行mysqlmp命令。然而,工作中要乾的活還有很多,並且如果老是執行這些命令的話,那麼生活就會變得太單調了。因此,我們可以設法使這些過程自動化,這時我們可以藉助cron工具來達成我們的目標,這個工具在所有類UNIX操作系統上都能找到。為了自動執行備份任務,我們需要新建一個正確命名的文件。例如nightly-backup.sh,具體命令如下所示:#!/bin/sh mysqlmp-uroot-psecret wiki/home/backup/sql/wiki-backup-`date+%m%d%Y`.sql當我們執行這個腳本的時候,它會將wiki資料庫備份到一個按照備份時間命名的文件中,如wiki-backup-092210.sql。您需要注意一下這里的用戶名root和口令secret是如何傳遞給mysqlmp的,即將它們分別放到選項- u和- p後面。從安全的角度講,我們必須進行正確的許可權設置。 接下來,我們將這個腳本提供交給cron,方法是使用crontab。為此,我們可以執行如下所示的命令:%crontab-e這將打開當前登錄用戶的crontab文件,如果該文件不存在的話就會自動新建一個。在這個文件中,我們可以添加如下內容,來確保每天上午3時運行該備份腳本:03***/home/backup/scripts/nightly-backup .sh如果您對crontab的語法很陌生的話,這里的參數可能讓您摸不著頭腦。這里前五個參數分別對應於執行腳本的時間,依次為分、時、日、月和星期幾。因此,要想在每星期二的4:45am執行腳本的話,可以使用參數45 4 * * 3。 插入上面所示的一行內容後,保存文件,那麼我們的任務就會開始按照給定時間調度執行。 需要注意的是,第二天早上一定要查看相應的目錄,看看事情是否一切正常。 五、其它備份方案 就像本文前面所說的那樣,mysqlmp只是MySQL眾多備份方案中的一個。此外,您還可以使用MySQL的二進制日誌文件進行增量備份,或者使用從MySQL主伺服器中將數據復制到從伺服器中。 六、小結本文中,我們與讀者一道建立了一個簡單的MySQL備份解決方案。如果您之前還未實施任何解決方案的話,不妨立即動手試一下。重要的是,這只需要花費您幾分鍾的時間,我想這是很劃得來的。
㈡ 如何備份MYSQL資料庫
定期的備份可使我們資料庫崩潰造成的損失大大降低。在MySQL中進行數據備份的方法有兩種,一種是使用mysqlmp程序,一種是使用mysqlhot、cp、tar或cpio等打包程序直接拷貝資料庫文件。mysqlmp程序備份資料庫較慢,但它生成的文本文件便於移植。使用mysqlhot等程序備份速度快,因為它直接對系統文件進行操作,需人為協調資料庫數據的備份前後一致性。
使用mysqlmp備份資料庫其實就是把資料庫轉儲成一系列CREATE TABLE和INSERT語句,通過這些語句我們就可重新生成資料庫。使用mysqlmp的方法如下:
% mysqlmp --opt testdb | gzip > /data/backup/testdb.bak
#--opt選項會對轉儲過程進行優化,生成的備份文件會小一點,後的管道操作會進行數據壓縮
% mysqlmp --opt testdb mytable1,mytable2 | gzip > /data/backup/testdb_mytable.bak
#可在資料庫後接數據表名,只導出指定的數據表,多個數據表可用逗號分隔
--opt選項還可激活--add-drop-table選項,它將會在備份文件的每條CREATE TABLE前加上一條DROP TABLE IF EXISTS語句。這可方便進行數據表的更新,而不會發生「數據表已存在」的錯誤。
用mysqlmp命令還可直接把資料庫轉移到另外一台伺服器上,不用生成備份文件。重復執行可定期更新遠程資料庫。
% mysqladmin -h remote_host create testdb
% mysqlmp --opt testdb | mysql -h remote_host testdb
另外還可通過ssh遠程調用伺服器上的程序,如:
% ssh remote_host mysqladmin create testdb
% mysqlmp --opt testdb | ssh remote_host mysql testdb
通過直接拷貝系統文件的方式備份資料庫,在備份時,要確保沒有人對資料庫進行修改操作。要做到這點,最好關閉伺服器。如果不能關閉的,要以只讀方試鎖定有關數據表。下面是一些示例:
% cp -r db /backup/db #備份db資料庫到/backup/db目錄
% cp table_name.* /backup/db #只備份table_name數據表
% scp -r db remotehot:/usr/local/mysql/data #用scp把資料庫直接拷貝到遠程伺服器
在把資料庫直接拷貝到遠程主機時,應注意兩台機器必須有同樣的硬體結構,或者將拷貝的數據表全部是可移植數據表類型。
使用mysqlhot工具,它是一個Perl DBI腳本,可在不關閉伺服器的情況下備份資料庫,它主要的優點是:
它直接拷貝文件,所以它比mysqlmp快。
可自動完成數據鎖定工作,備份時不用關閉伺服器。
能刷新日誌,使備份文件和日誌文件的檢查點能保持同步。
下面是該工具的使用示例:
% mysqlhot db /bakcup/ #把db資料庫備份到backup/db目錄里,會自動創建一個db目錄
使用BACKUP TABLE語句進行備份,該語句最早出現在MySQL 3.23.25版本中,僅適用於MyISAM數據表。用法如下:
mysql> BACKUP TABLE mytable TO '/backup/db'; #把mytable數據表備份到/backup/db目錄下
為了執行該語句,你必須擁有那些表的FILE許可權和SELECT許可權,備份目錄還必須是伺服器可寫的。該語句執行時,會先把內存中的數據寫入磁碟,再把各個數據表的.frm(表結構定義文件)、.MYD(數據)文件從數據目錄拷貝到備份目錄。它不拷貝.MYI(索引)文件,因為它能用另外兩個文件重建。BACKUP TABLE語句備份時,依次鎖定數據表,當同時備份多個數據表時,數據表可能會被修改,所以備份0完成時,備份文件中的數據和現時數據表中的數據可能會有差異,為了消除該差異,我們可用只讀方式鎖定數據表,在備份完成後再解鎖。如:
mysql> LOCK TABLES tb1 READ,tb2 READ;
mysql> BACKUP TABLE tb1,tb2 TO 'backup/db';
mysql> UNLOCK TABLE
㈢ 如何實現Mysql資料庫每天自動備份定時備份
利用UCache災備雲平台,可作為一個工具,在window伺服器現有架構不變的情況下,針對Mysql資料庫每天自動備份定時備份。
(1)新建備份任務
UCACHE災備雲控制台登錄賬號後:點擊【伺服器定時數據保護】--【數據備份】點擊【新建】按鈕,然後選要保護的對象(您的生產伺服器節點),選中對應的客戶端,選擇【文件系統】然後點擊【 下一步 】
(2)設置備份策略
選擇要進行備份的文件
(3)永久增量備份與數據保留設置
選擇完要過濾的數據之後點擊下一步,可進行下一步備份的高級功能選擇,各個選項說明如下:
【永久增量備份】開啟了永久增量備份每一次增量備份都會進行一次時間點合成形成新的一個永久增量時間點等效於完備時間點。
【數據保留策略】開啟數據保留策略一共有三種保留策略分別為數據保留期限、保留副本數、按備份策略的備份周期設置副本保留策略默認選中數據保留期限一年。可以設置保留完全副本的個數最大可設置1024個副本按備份策略的備份周期設置副本保留策略最大可設置99999個副本。
【傳輸和存儲加密】開啟傳輸加密與存儲加密選項開啟此功能的任務的數據在傳輸和存儲上都經過加密處理。一共有兩種加密方式AES256加密演算法、SM4加密演算法。
【數據壓縮】默認不開啟開啟該選項後默認啟用快速壓縮可選擇啟用強力壓縮
【重復數據刪除】勾選該選項可以啟動源端重復數據刪除的功能該選項在建立任務後不能通過修改任務的方式更改此屬性。指紋庫需要提前創建才能成功開啟重刪功能
最後新建完成
目錄和文件內容,可以全選和分選,還可以利用UCACHE災備雲控制台的「文件過濾」「目錄過濾」「時間過濾」功能進行不必要的數據不進行備份策略添加。為了備份效率不建議兩個任務包含同一文件。
(4)設置郵件告警
備份執行完畢,會得到系統的執行反饋,也可以設定告警監控策略,進行郵件監控
㈣ 如何備份整個mysql資料庫
1、首先打開mysql資料庫軟體進入軟體主界面。
㈤ mysql中備份資料庫的命令是
使用mysqlmp工具進行備份:
1)備份所有資料庫:
$ mysqlmp -uroot -p --all-database > all.sql
(2)備份資料庫test
$ mysqlmp -uroot -p test > test.sql
(3)備份資料庫test下的表emp
$ mysqlmp -uroot -p test emp > emp.sql
(4)備份資料庫test下的表emp和dept
$ mysqlmp -uroot -p test emp dept > emp_dept.sql
㈥ mysql備份問題,mysql版本5.7.2
1.mysqlmp:最早,也是最成熟的邏輯備份工具,是 MySQL 原生的用來備份整個資料庫實例、單個資料庫、單張表的邏輯備份工具, 上手簡單,學習成本幾乎為 0。備份簡單,恢復也簡單。
比如導出單個資料庫 ytt: mysqlmp ytt > /tmp/ytt.sql;
恢復也非常簡單:mysql < /tmp/ytt.sql
缺點是備份速度慢。在整個備份過程中,是單線程運行;備份出來的數據集要恢復的話同樣也是單線程運行,恢復速度也慢。除非對同一時刻的所有表單獨備份出來,自己寫額外腳本進行多線程恢復。
2.mysqlpump:MySQL 5.7 GA 後推出的 mysqlmp工具的增強版。可以對同一個數據集多個線程並發備份,備份速度很快。
其他缺點和 mysqlmp 一樣。
3.MySQL Shell UTIL對象附帶的備份工具:隨 MySQL 8.0.21 最新版本捆綁發布,自帶多線程備份以及多線程恢復功能, 可以直接替代 mysqlmp/mysqlpump。
- mp_instance/mpInstance 用來多線程備份 MySQL 整個單機實例
- mp_schemas/mpSchemas 用來多線程備份 MySQL 單個資料庫
- load_mp/loadDump 用來多線程恢復之前兩個工具導出的數據集文件
㈦ unix下mysql資料庫如何利用工具進行數據備份
用以備份的工具
1.
mysqlmp
2.
mysqlhot
3.mysqlsnapshot
4.ibbackup
聯機備份
.VS.
離線備份
聯機備份通常使用在不能接受資料庫停機的情況下,一般來說,離線備份速度快,並且發生錯誤的幾率少,我們不用擔心資料庫正在執行事務,鎖表等容易發生一致性問題的發生。如果你幸運的可以停下資料庫或者有一個主從方式的資料庫,請使用離線方式備份。
Data
Dump
vs
Raw
backups
Data
mp
輸出一系列SQL
語句序列,可以在後來用來重新創建資料庫的結構並恢復數據。mysqlmp
是這個領域的首選工具,他可以用在任意類型的表上面,無論是本地的還是網路的。當然,由於要產生很多額外的SQL語句,導出結果將是一個很大的文件並且佔用很多CPU資源,最重要的是,當數據恢復後需要一次完全的索引重建。
更有效率的方法是是對MySQL資料庫的物理文件做一次快照(snapshot)。因為我們跳過了很多轉化步驟,因此處理起來比較高效。
做一個MyISM數據表的備份只要拷貝磁碟上數據文件和索引文件。對InnoDB,需要備份對應表空間和關聯的事務日誌。
mysqlmp
/
mysqlhot
/
mysqlsnapshot
/
ibbackup
mysqlmp
-
(online,
mp)
-
最一般的工具,他會通過鎖表的方式從一個聯機資料庫中做數據導出並寫到指定的文件中(磁碟或網路上)。他只適合小的資料庫。
#
typical
mysql
mp
backup
and
restore
usage
mysqlmp
-u
root
-pPassword
-x
–all-databases
>
db_mp.sql
mysql
-u
root
-pPassword
<
db_mp.sql
#
mp
into
『backup』
folder
(local
machine),
into
two
text
files
<data,
table_structure>
mysqlmp
-T
backup
–fields-terminated-by=』,』
database-name
-u
root
-pPassword
#
compress
the
mped
data
on
the
fly
mysqlmp
-u
root
-pPassword
–all-databases
|
bzip2
-c
>
db_mp.bz2
mysqlhot
-
(online,
raw)
將對由
ISAM或MyISAM
表構成的資料庫做一個完全的物理備份。他的操作方式:對所有表獲取一個只讀鎖=>做文件拷貝=>釋放鎖。
#
perform
an
online
backup
into
/backup/location
mysqlhot
-u
root
-p
password
database_name
/backup/location
mysqlsnapshot
-
(online,
raw)
一個非常好的工具用來在聯機方式下獲得MySQL資料庫的一個快照。可以配置它來壓縮數據,並/或
為每一個資料庫提供一個分離的tar文件。
不過他只適合
MyISAM
類型資料庫。
#
save
a
full
database
snapshot
of
an
online
database
into
/backup/location
mysqlsnapshot
-u
root
-pPassword
-s
/backup/location
#
restore
a
snapshot
tar
-xvf
/backup/location/db.tar
ibbackup
-
(online,
raw)
可以對使用InnoDB和MyISAM表的任何資料庫做聯機備份。是一個很好的工具就是要收費.當然如果你是一個InnoDB的用戶,還是值得花錢購買的。
#
perform
online
backup
of
MyISAM
/
InnoDB
tables
ibbackup
/etc/my.cnf
/etc/ibbackup.cnf
#
restore
recent
backup
(as
configured
in
ibbackup.cnf)
ibbackup
–restore
/etc/ibbackup.cnf
cp,
scp,
nc
-
(offline,
raw)
如果你可以停下資料庫,則可以使用這幾個工具直接拷貝資料庫目錄下的文件。是獲取資料庫快照的最安全方法。
㈧ mysql備份方式有哪些
資料庫最直接的備份方法就是使用自帶的mysqlmp命令進行備份。
1、 mysqlmp命令備份數據
在MySQL中提供了命令行導出資料庫數據以及文件的一種方便的工具mysqlmp,我們可以通過命令行直接實現資料庫內容的導出mp,首先我們簡單了解一下mysqlmp命令用法:
#MySQLmp常用
mysqlmp -u root -p --databases 資料庫1 資料庫2 > xxx.sql
2、 mysqlmp常用操作實例
2.1備份全部資料庫的數據和結構
mysqlmp -uroot -p123456 -A > /data/mysqlDump/mydb.sql
2.2備份全部資料庫的結構(加 -d 參數)
mysqlmp -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql
2.3 備份全部資料庫的數據(加 -t 參數)
mysqlmp -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql
2.4 備份單個資料庫的數據和結構(,資料庫名mydb)
mysqlmp -uroot-p123456 mydb > /data/mysqlDump/mydb.sql
2.5 備份單個資料庫的結構
mysqlmp -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql
2.6 備份單個資料庫的數據
mysqlmp -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql2
2.7 備份多個表的數據和結構(數據,結構的單獨備份方法與上同)
mysqlmp -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql
2.8 一次備份多個資料庫
mysqlmp -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql