mysql備份數據庫表結構(oracle數據庫備份表結構)

  • 1、mysql備份方式有哪些
  • 2、MYSQL備份數據庫
  • 3、MySQL備份數據庫時需要備份的對象有哪些?

數據庫最直接的備份方法就是使用自帶的mysqldump命令進行備份。

1、 mysqldump命令備份數據

在MySQL中提供了命令行導出數據庫數據以及文件的一種方便的工具mysqldump,我們可以通過命令行直接實現數據庫內容的導出dump,首先我們簡單了解一下mysqldump命令用法:

#MySQLdump常用

mysqldump -u root -p –databases 數據庫1 數據庫2 xxx.sql

2、 mysqldump常用操作實例

2.1備份全部數據庫的數據和結構

mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql

2.2備份全部數據庫的結構(加 -d 參數)

mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql

2.3 備份全部數據庫的數據(加 -t 參數)

mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql

2.4 備份單個數據庫的數據和結構(,數據庫名mydb)

mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql

2.5 備份單個數據庫的結構

mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql

2.6 備份單個數據庫的數據

mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql2

2.7 備份多個表的數據和結構(數據,結構的單獨備份方法與上同)

mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql

2.8 一次備份多個數據庫

mysqldump -uroot -p123456 –databases db1 db2 /data/mysqlDump/mydb.sql

定期的備份可使我們數據庫崩潰造成的損失大大降低。在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’;

數據庫備份對象包含數據,表結構,創建存儲過程,日誌等。

1、 mysqldump命令備份數據

在MySQL中提供了命令行導出數據庫數據以及文件的一種方便的工具mysqldump,我們可以通過命令行直接實現數據庫內容的導出dump,首先我們簡單了解一下mysqldump命令用法:

#MySQLdump常用

mysqldump -u root -p –databases 數據庫1 數據庫2 xxx.sql

2、 mysqldump常用操作實例

2.1備份全部數據庫的數據和結構

mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql

2.2備份全部數據庫的結構(加 -d 參數)

mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql

2.3 備份全部數據庫的數據(加 -t 參數)

mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql

2.4 備份單個數據庫的數據和結構(,數據庫名mydb)

mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql

2.5 備份單個數據庫的結構

mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql

2.6 備份單個數據庫的數據

mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql2

2.7 備份多個表的數據和結構(數據,結構的單獨備份方法與上同)

mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql

2.8 一次備份多個數據庫

mysqldump -uroot -p123456 –databases db1 db2 /data/mysqlDump/mydb.sql

原創文章,作者:ACL1J,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/126870.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ACL1J的頭像ACL1J
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • 如何修改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
  • Vue TS工程結構用法介紹

    在本篇文章中,我們將從多個方面對Vue TS工程結構進行詳細的闡述,涵蓋文件結構、路由配置、組件間通訊、狀態管理等內容,並給出對應的代碼示例。 一、文件結構 一個好的文件結構可以極…

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

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

    編程 2025-04-29
  • Python程序的三種基本控制結構

    控制結構是編程語言中非常重要的一部分,它們指導着程序如何在不同的情況下執行相應的指令。Python作為一種高級編程語言,也擁有三種基本的控制結構:順序結構、選擇結構和循環結構。 一…

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

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

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

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

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

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

    編程 2025-04-28

發表回復

登錄後才能評論