mysql數據庫備份練習(mysql數據庫完全備份)

本文目錄一覽:

MYSQL備份數據庫

定期的備份可使我們數據庫崩潰造成的損失大大降低。在MySQL中進行數據備份的方法有兩種,一種是使用mysqldump程序,一種是使用mysqlhotcopy、cp、tar或cpio等打包程序直接拷貝數據庫文件。mysqldump程序備份數據庫較慢,但它生成的文本文件便於移植。使用mysqlhotcopy等程序備份速度快,因為它直接對系統文件進行操作,需人為協調數據庫數據的備份前後一致性。

使用mysqldump備份數據庫其實就是把數據庫轉儲成一系列CREATE TABLE和INSERT語句,通過這些語句我們就可重新生成數據庫。使用mysqldump的方法如下:

% mysqldump –opt testdb | gzip /data/backup/testdb.bak

#–opt選項會對轉儲過程進行優化,生成的備份文件會小一點,後的管道操作會進行數據壓縮

% mysqldump –opt testdb mytable1,mytable2 | gzip /data/backup/testdb_mytable.bak

#可在數據庫後接數據表名,只導出指定的數據表,多個數據表可用逗號分隔

–opt選項還可激活–add-drop-table選項,它將會在備份文件的每條CREATE TABLE前加上一條DROP TABLE IF EXISTS語句。這可方便進行數據表的更新,而不會發生“數據表已存在”的錯誤。

用mysqldump命令還可直接把數據庫轉移到另外一台服務器上,不用生成備份文件。重複執行可定期更新遠程數據庫。

% mysqladmin -h remote_host create testdb

% mysqldump –opt testdb | mysql -h remote_host testdb

另外還可通過ssh遠程調用服務器上的程序,如:

% ssh remote_host mysqladmin create testdb

% mysqldump –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把數據庫直接拷貝到遠程服務器

在把數據庫直接拷貝到遠程主機時,應注意兩台機器必須有同樣的硬件結構,或者將拷貝的數據表全部是可移植數據表類型。

使用mysqlhotcopy工具,它是一個Perl DBI腳本,可在不關閉服務器的情況下備份數據庫,它主要的優點是:

它直接拷貝文件,所以它比mysqldump快。

可自動完成數據鎖定工作,備份時不用關閉服務器。

能刷新日誌,使備份文件和日誌文件的檢查點能保持同步。

下面是該工具的使用示例:

% mysqlhotcopy 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 TABLES;

使用BACKUP TABLE語句備份的數據表可用RESTORE TABLE重新加載到服務器。

InnoDB和BDB數據庫也可用mysqldump和直接拷貝法進行備份。使用直接拷貝法時應注意需把組成InnoDB和BDB數據庫的所有文件都拷貝下來,如InnoDB的.frm文件、日誌文件和表空間配置文件;BDB的數據文件、日誌文件等。

使用鏡像機制進行備份,我們可用SLAVE STOP語句掛起從服務器的鏡像,在從服務器上通過直接拷貝法或其它工具製作備份。備份完成,用SLAVE START重新啟動鏡像,從服務器重新與主服務器同步,接收備份時主服務器所做的修改。

在MySQL中沒有為數據庫重命名的命令,但我們可用mysqldump轉儲數據庫,再創建一個新的空數據庫,把轉儲文件加載到該新數據庫,這樣就完成數據庫重命名的工作。如:

% mysqldump old_db db.sql #轉儲db數據庫數據

% mysqladmin create new_db #新建一個空的數據庫

% mysql new_db db.sql #把db數據庫的數據加載到新的數據庫中

% mysqladmin drop old_db #刪除舊的數據庫

一個更簡單的重命名數據庫的方法是直接修改數據庫目錄名,但該方法不適用於InnoDB和BDB數據庫。注意,在更名後,需在權限表中更新相關數據表信息,需執行以下語句:

mysql UPDATE db SET db=’new_db’ WHERE db=’old_db’;

mysql UPDATE tables_priv SET db=’new_db’ WHERE db=’old_db’;

mysql UPDATE columns_priv SET db=’new_db’ WHERE db=’old_db’;

mysql UPDATE host SET db=’new_db’ WHERE db=’old_db’;

mysql怎麼備份數據庫

方法一:如果你使用的是虛擬主機,可以用使用phpmyadmin來備份數據庫。

1)登陸phpmyadmin。登陸後左邊會出現數據庫列表,單擊要備份的數據庫,如圖。

Mysql數據庫備份的幾種方法

2)在彈出的頁面中,右側上部單擊“導出”按鈕,一般保持默認選項,最下面“另存為文件”,選擇“ZIP壓縮”,最後單擊執行按鈕,如圖

Mysql數據庫備份的幾種方法

3)彈出保存文件後,保存文件即可,如圖。

Mysql數據庫備份的幾種方法

mysql數據庫怎麼備份數據庫

可以用mysqldump工具簡單用例說明:

導入、導出數據庫

導出: mysqldump -uroot db1 db1.sql (注db1為database名)

導入:mysql -uroot test db1.sql (注test為database名,將db1中所有的表及數據導入到test數據庫)

導入、導出表

導出:mysqldump -uroot db1 tb1 tb2tables.sql(注db1為database名,tb1 tb2為要導出的表列表,中間用空格隔開)

導入:mysql -uroot test tables.sql(將db1數據庫中的tb1和tb2表導入到test數據庫)

常見參數:

–all-databases , -A

導出全部數據庫。

mysqldump -uroot -p –all-databases

–all-tablespaces , -Y

導出全部表空間。

mysqldump -uroot -p –all-databases –all-tablespaces

–no-tablespaces , -y

不導出任何錶空間信息。

mysqldump -uroot -p –all-databases –no-tablespaces

–add-drop-database

每個數據庫創建之前添加drop數據庫語句。

mysqldump -uroot -p –all-databases –add-drop-database

–add-drop-table

每個數據表創建之前添加drop數據表語句。(默認為打開狀態,使用–skip-add-drop-table取消選項)

mysqldump -uroot -p –all-databases (默認添加drop語句)

mysqldump -uroot -p –all-databases –skip-add-drop-table (取消drop語句)

–databases, -B

導出幾個數據庫。參數後面所有名字參量都被看作數據庫名。

mysqldump -uroot -p –databases test mysql

–no-data, -d

不導出任何數據,只導出數據庫表結構。

mysqldump -uroot -p –host=localhost –all-databases –no-data

–host, -h

需要導出的主機信息

mysqldump -uroot -p –host=localhost –all-databases

–password, -p

連接數據庫密碼

–port, -P

連接數據庫端口號

–set-charset

添加’SET NAMES default_character_set’到輸出文件。默認為打開狀態,使用–skip-set-charset關閉選項。

mysqldump -uroot -p –host=localhost –all-databases

mysqldump -uroot -p –host=localhost –all-databases –skip-set-charset

–tables

覆蓋–databases (-B)參數,指定需要導出的表名。

mysqldump -uroot -p –host=localhost –databases test –tables test

–user, -u

指定連接的用戶名。

如何用mysql命令備份和恢復

Mysql數據庫備份和還原常用的命令是進行Mysql數據庫備份和還原的關鍵,沒有命令,什麼都無從做起,更談不上什麼備份還原,只有給系統這個命令,讓它去執行,才能完成Mysql數據庫備份和還原的操作,下面為大家分享一下操作的常用的命令。

一、備份命令

1、備份MySQL數據庫的命令

!–

Code highlighting produced by Actipro CodeHighlighter (freeware)

–mysqldump-hhostname-uusername-ppassword databasenamebackupfile.sql

2、備份MySQL數據庫為帶刪除表的格式

備份MySQL數據庫為帶刪除表的格式,能夠讓該備份覆蓋已有數據庫而不需要手動刪除原有數據庫。

!–

Code highlighting produced by Actipro CodeHighlighter (freeware)

–mysqldump-–add-drop-table-uusername-ppassword databasenamebackupfile.sql

3、直接將MySQL數據庫壓縮備份

!–

Code highlighting produced by Actipro CodeHighlighter (freeware)

–mysqldump-hhostname-uusername-ppassword databasename|gzipbackupfile.sql.gz

4、備份MySQL數據庫某個(些)表

!–

Code highlighting produced by Actipro CodeHighlighter (freeware)

–mysqldump-hhostname-uusername-ppassword databasename specific_table1 specific_table2backupfile.sql

5、同時備份多個MySQL數據庫

!–

Code highlighting produced by Actipro CodeHighlighter (freeware)

–mysqldump-hhostname-uusername-ppassword –databases databasename1 databasename2 databasename3multibackupfile.sql

6、僅僅備份數據庫結構

!–

Code highlighting produced by Actipro CodeHighlighter (freeware)

–mysqldump –no-data –databases databasename1 databasename2 databasename3structurebackupfile.sql

7、備份服務器上所有數據庫

!–

Code highlighting produced by Actipro CodeHighlighter (freeware)

–mysqldump –all-databasesallbackupfile.sql

二、還原命令

1、還原MySQL數據庫的命令

!–

Code highlighting produced by Actipro CodeHighlighter (freeware)

–mysql-hhostname-uusername-ppassword databasenamebackupfile.sql

2、還原壓縮的MySQL數據庫

!–

Code highlighting produced by Actipro CodeHighlighter (freeware)

–gunzipbackupfile.sql.gz|mysql-uusername-ppassword databasename

3、將數據庫轉移到新服務器

!–

Code highlighting produced by Actipro CodeHighlighter (freeware)

–mysqldump-uusername-ppassword databasename|mysql –host=*.*.*.*-C databasename

總結

做好數據備份和還原,定好合適的備份策略,這是一個DBA所做事情的一小部分,萬事開頭難,就從現在開始吧!

mysql數據庫如何備份?

MySQL數據庫備份與還原

備份和恢複數據

生成SQL腳本

在控制台使用mysqldump命令可以用來生成指定數據庫的腳本文本,但要注意,腳本文本中只包含數據庫的內容,而不會存在創建數據庫的語句!所以在恢複數據時,還需要自已手動創建一個數據庫之後再去恢複數據。

mysqldump –u用戶名 –p密碼 數據庫名生成的腳本文件路徑

現在可以在C盤下找到mydb1.sql文件了!

注意,mysqldump命令是在Windows控制台下執行,無需登錄mysql!!!

執行SQL腳本

執行SQL腳本需要登錄mysql,然後進入指定數據庫,才可以執行SQL腳本!!!

執行SQL腳本不只是用來恢複數據庫,也可以在平時編寫SQL腳本,然後使用執行SQL 腳本來操作數據庫!大家都知道,在黑屏下編寫SQL語句時,就算髮現了錯誤,可能也不能修改了。所以我建議大家使用腳本文件來編寫SQL代碼,然後執行之!

SOURCE C:\mydb1.sql

注意,在執行腳本時需要先行核查當前數據庫中的表是否與腳本文件中的語句有衝突!例如在腳本文件中存在create table a的語句,而當前數據庫中已經存在了a表,那麼就會出錯!

還可以通過下面的方式來執行腳本文件:

mysql -uroot -p123 mydb1c:\mydb1.sql

mysql –u用戶名 –p密碼 數據庫要執行腳本文件路徑

這種方式無需登錄mysql!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/239579.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:17
下一篇 2024-12-12 12:17

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28

發表回復

登錄後才能評論