mysql資料庫備份空文件,資料庫完全備份文件

本文目錄一覽:

mysql 怎麼備份資料庫

備份語法如下:

mysqldump -u username -p dbname table1 table2 …- BackupName.sql

其中:

dbname參數表示資料庫的名稱;

table1和table2參數表示需要備份的表的名稱,為空則整個資料庫備份;

BackupName.sql參數表設計備份文件的名稱,文件名前面可以加上一個絕對路徑。通常將資料庫被分成一個後綴名為sql的文件;

使用root用戶備份test資料庫下的person表

mysqldump -u root -p test person D:\backup.sql

mysql資料庫備份文件怎麼為空

mysqldump -hlocalhost -u root -p -R test d:/qytxl.sql

-h和localhost之間沒空格

如何對mysql備份

Mysql資料庫的常用備份方法是使用使用實用程序mysqldump, 其命令格式如下

# mysqldump [options] database [tables]

其參數的含義為:

options:代表mysqldump的選項,通過mysqldump –help可以查到。

database: 代表將要備份的資料庫

tables: 代表將要備份的表,如果不指定任何錶,則備份整個資料庫。

使用 mysqldump進行備份非常簡單,如果要備份資料庫」 phpbb_db_backup 」,使用命令:

#mysqldump –u -p phpbb_db_backup /usr/backups/mysql/ phpbb_db_backup.2005.5.6

還可以使用gzip命令對備份文件進行壓縮:

#mysqldump phpbb_db_backup | gzip /usr/backups/mysql/ phpbb_db_backup.2005.5.6。gz

恢複數據使用命令:

#mysql –u -p phpbb_db_backup /usr/backups/mysql/phpbb_db_backup.2005

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’;

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

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

相關推薦

發表回復

登錄後才能評論