本文做者是 NIVAS,原文地址是 mysqldump – 25 tips for DBAsmysql
mysqldump 是文本備份仍是二進制備份linux
它是文本備份,若是你打開備份文件你將看到全部的語句,能夠用於從新建立表和對象。它也有 insert 語句來使用數據構成表。
mysqldump 的語法是什麼?sql
mysqldump -u [uname] -p[pass] –databases [dbname][dbname2] > [backupfile.sql]
使用 mysqldump 怎樣備份全部數據庫?數據庫
mysqldump -u root -p –all-databases > backupfile.sql
使用 mysqldump 怎樣備份指定的數據庫?windows
mysqldump -u root -p –databases school hospital > backupfile.sql
使用 mysqldump 怎樣備份指定的表?服務器
mysqldump –user=root –password=mypassword -h localhost databasename table_name_to_dump table_name_to_dump_2 > dump_only_two_tables_file.sql
我不想要數據,怎樣僅獲取 DDL?socket
mysqldump -u root -p –all-databases –no-data > backupfile.sql
一次 mysqldump 備份花費多長時間?大數據
這依賴於數據庫大小,100 GB 大小的數據庫可能花費兩小時或更長時間
怎樣備份位於其餘服務器的遠程數據庫?ui
mysqldump -h 172.16.25.126 -u root -ppass dbname > dbname.sql
–routines 選項的含義是什麼?.net
經過使用 -routines 產生的輸出包含 CREATE PROCEDURE 和 CREATE FUNCTION 語句用於從新建立 routines。若是你有 procedures 或 functions 你須要使用這個選項
怎樣列出 mysqldump 中的全部選項?
mysqldump –help
mysqldump 中經常使用的選項是?
All-databases Databases Routines Single-transaction (它不會鎖住表) – 一直在 innodb databases 中使用 Master-data – 複製 (如今忽略了) No-data – 它將 dump 一個沒有數據的空白數據庫
默認全部的 triggers 都會備份嗎?
是的
single transaction 選項的含義是什麼?
–singletransaction 選項避免了 innodb databases 備份期間的任何鎖,若是你使用這個選項,在備份期間,沒有鎖
使用 mysqldump 備份的經常使用命令是什麼?
nohup mysqldump –socket=mysql.sock –user=user1 –password=pass –single-transaction –flush-logs –master-data=2 –all-databases –extended-insert –quick –routines > market_dump.sql 2> market_dump.err &
使用 mysqldump 怎樣壓縮一個備份?
注意: 壓縮會下降備份的速度 Mysqldump [options] | gzip > backup.sql.gz
mysqldump 備份大數據庫是不是理想的?
依賴於你的硬件,包括可用的內存和硬盤驅動器速度,一個在 5GB 和 20GB 之間適當的數據庫大小。 雖然有可能使用 mysqldump 備份 200GB 的數據庫,這種單一線程的方法須要時間來執行。
怎樣經過使用 mysqldump 來恢復備份?
在恢復期間我想記錄錯誤到日誌中,我也想看看恢復的執行時間?
Time Mysql –u root –p < backup.sql > backup.out 2>&1
怎樣知道恢復是否正在進行?
顯示完整的進程列表
若是數據庫是巨大的,你不得不作的事情是?
使用 nohup 在後臺運行它
我是否能夠在 windows 上使用 mysqldump 備份而後在 linux 服務器上恢復?
是的
我怎麼傳輸文件到目標服務器上去?
若是我使用一個巨大的備份文件來源來恢復會發生什麼?
若是你的一個數據庫備份文件來源,它可能須要很長時間運行。處理這種狀況更好的方式是使用 nohup 來在後臺運行。也可以使用在 unix 中的 screen 代替
默認狀況下,mysqldump 包含 drop 數據庫嗎?
你須要添加 –add-drop-database 選項
怎樣從一個多數據庫備份中提取一個數據庫備份(假設數據庫名字是 test)?
sed -n '/^-- Current Database: `test`/,/^-- Current Database: `/p' fulldump.sql > test.sql