国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
MySQL數(shù)據(jù)庫常用備份方法和注意事項
Mysql數(shù)據(jù)庫備份的常用3種方法: 
1、直接拷貝(cp、tar,gzip,cpio) 
2、mysqldump 
3、mysqlhotcopy 

1.使用直接拷貝數(shù)據(jù)庫備份 
典型的如cp、tar或cpio實用程序。 
當你使用直接備份方法時,必須保證表不在被使用。如果服務(wù)器在你正在拷貝一個表時改變它,拷貝就失去意義。 
保證你的拷貝完整性的最好方法是關(guān)閉服務(wù)器,拷貝文件,然后重啟服務(wù)器。如果你不想關(guān)閉服務(wù)器,要在執(zhí)行表檢查的同時鎖定服務(wù)器。如果服務(wù)器在運行,相同的制約也適用于拷貝文件,而且你應(yīng)該使用相同的鎖定協(xié)議讓服務(wù)器“安靜下來”。 
當你完成了備份時,需要重啟服務(wù)器(如果關(guān)閉了它)或釋放加在表上的鎖定(如果你讓服務(wù)器運行)。 
要用直接拷貝文件把一個數(shù)據(jù)庫從一臺機器拷貝到另一臺機器上,只是將文件拷貝到另一臺服務(wù)器主機的適當數(shù)據(jù)目錄下即可。要確保文件是MyIASM格式或兩臺機器有相同的硬件結(jié)構(gòu),否則你的數(shù)據(jù)庫在另一臺主機上有奇怪的內(nèi)容。你也應(yīng)該保證在另一臺機器上的服務(wù)器在你正在安裝數(shù)據(jù)庫表時不訪問它們。 

2.mysqldump 
基本語法: 
Shell> mysqldump [OPTIONS] database [tables] > data_backup.sql (不指定數(shù)據(jù)庫名表示全部備份)

例如: 

mysqldump -uroot -p --default-character-set=cp932 --opt --extended-insert=false --hex-blob -R -x mysql > E:\mysql.sql

輸出文件的開頭看起來象這樣: 

# MySQL Dump 6.0 

# Host: localhost Database: samp_db 
#--------------------------------------- 
# Server version 3.23.2-alpha-log 

# Table structure for table 'absence' 

CREATE TABLE absence( 
student_id int(10) unsigned DEFAULT '0' NOT NULL
date date DEFAULT '0000-00-00' NOT NULL
PRIMARY KEY (student_id,date
); 

# Dumping data for table 'absence' 

INSERT INTO absence VALUES (3,'1999-09-03'); 
INSERT INTO absence VALUES (5,'1999-09-03'); 
INSERT INTO absence VALUES (10,'1999-09-08'); 
...... 


文件剩下的部分有更多的INSERT和CREATE TABLE語句組成。例: 

%mysqldump samp_db >/opt/mysqldatabak/samp_db.2006-5-15 
%mysqldump samp_db | gzip >/usr/archives/mysql/samp_db.1999-10-02.gz #產(chǎn)生壓縮備份 
%mysqldump samp_db student score event absence >grapbook.sql #備份數(shù)據(jù)庫的某些表 
%mysqladmin -h boa.snake.net create samp_db 
%mysqldump samp_db | mysql -h boa.snake.net samp_db #直接恢復(fù)到另一個服務(wù)器上使用--add-drop-table選項告訴服務(wù)器將DROP TABLE IF EXISTS語句寫入備份文件,這樣當我們以后用來恢復(fù)數(shù)據(jù)庫時,如果表已經(jīng)存在,你不會得到一個錯誤。 
%mysqldump --add-drop-table samp_db | mysql -h boa.snake.net samp_db

mysqldump其它有用的選項包括: 
--flush-logs和--lock-tables組合將對你的數(shù)據(jù)庫檢查點有幫助。--lock-tables鎖定你正在傾倒的所有表,而--flush-logs關(guān)閉并重新打開更新日志文件,新的更新日志將只包括從備份點起的修改數(shù)據(jù)庫的查詢。這將設(shè)置你的更新日志檢查點位備份時間。(然而如果你有需要執(zhí)行個更新的客戶,鎖定所有表對備份期間的客戶訪問不是件好事。) 
如果你使用--flush-logs設(shè)置檢查點到備份時,有可能最好是傾倒整個數(shù)據(jù)庫。如果你傾倒單獨的文件,較難將更新日志檢查點與備份文件同步。在恢復(fù)期間,你通常按數(shù)據(jù)庫為基礎(chǔ)提取更新日志內(nèi)容,對單個表沒有提取更新的選擇,所以你必須自己提取它們。 
缺省地,mysqldump在寫入前將一個表的整個內(nèi)容讀進內(nèi)存。這通常確實不必要,并且實際上如果你有一個大表,幾乎是失敗的。你可用--quick選項告訴mysqldump只要它檢索出一行就寫出每一行。為了進一步優(yōu)化傾倒過程,使用--opt而不是--quick。--opt選項打開其它選項,加速數(shù)據(jù)的傾倒和把它們讀回。 
用--opt實施備份可能是最常用的方法,因為備份速度上的優(yōu)勢。然而,要警告你,--opt選項確實有代價,--opt優(yōu)化的是你的備份過程,不是其他客戶對數(shù)據(jù)庫的訪問。--opt選項通過一次鎖定所有表阻止任何人更新你正在傾倒的任何表。你可在一般數(shù)據(jù)庫訪問上很容易看到其效果。 
一個具有--opt的相反效果的選項是--dedayed。該選項使得mysqldump寫出INSERT DELAYED語句而不是INSERT語句。如果你將數(shù)據(jù)文件裝入另一個數(shù)據(jù)庫并且你想使這個操作對可能出現(xiàn)在該數(shù)據(jù)庫中的查詢的影響最小,--delayed對此很有幫助。 
--compress選項在你拷貝數(shù)據(jù)庫到另一臺機器上時很有幫助,因為它減少網(wǎng)絡(luò)傳輸字節(jié)的數(shù)量。下面有一個例子,注意到--compress對與遠端主機上的服務(wù)器通信的程序才給出,而不是對與本地主機連接的程序: 

%mysqldump --opt samp_db | mysql --compress -h boa.snake.net samp_db

mysqldump有很多其它選項,主要參數(shù): 

--compatible=name

它告訴 mysqldump,導(dǎo)出的數(shù)據(jù)將和哪種數(shù)據(jù)庫或哪個舊版本的 MySQL 服務(wù)器相兼容。值可以為 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要使用幾個值,用逗號將它們隔開。當然了,它并不保證能完全兼容,而是盡量兼容。 
--complete-insert,-c

導(dǎo)出的數(shù)據(jù)采用包含字段名的完整 INSERT 方式,也就是把所有的值都寫在一行。這么做能提高插入效率,但是可能會受到 max_allowed_packet 參數(shù)的影響而導(dǎo)致插入失敗。因此,需要謹慎使用該參數(shù),至少我不推薦。 
--extended-insert = true|false 
默認情況下,mysqldump 開啟 --complete-insert 模式,因此不想用它的的話,就使用本選項,設(shè)定它的值為 false 即可。 
--default-character-set=charset 
指定導(dǎo)出數(shù)據(jù)時采用何種字符集,如果數(shù)據(jù)表不是采用默認的 latin1 字符集的話,那么導(dǎo)出時必須指定該選項,否則再次導(dǎo)入數(shù)據(jù)后將產(chǎn)生亂碼問題。 
--disable-keys 
告訴 mysqldump 在 INSERT 語句的開頭和結(jié)尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 語句,這能大大提高插入語句的速度,因為它是在插入完所有數(shù)據(jù)后才重建索引的。該選項只適合 MyISAM 表。 
--hex-blob 
使用十六進制格式導(dǎo)出二進制字符串字段。如果有二進制數(shù)據(jù)就必須使用本選項。影響到的字段類型有 BINARY、VARBINARY、BLOB。 
--lock-all-tables,-x 
在開始導(dǎo)出之前,提交請求鎖定所有數(shù)據(jù)庫中的所有表,以保證數(shù)據(jù)的一致性。這是一個全局讀鎖,并且自動關(guān)閉 --single-transaction 和 --lock-tables 選項。 
--lock-tables 
它和 --lock-all-tables 類似,不過是鎖定當前導(dǎo)出的數(shù)據(jù)表,而不是一下子鎖定全部庫下的表。本選項只適用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 選項。 
--no-create-info,-t 
只導(dǎo)出數(shù)據(jù),而不添加 CREATE TABLE 語句。 
--no-data,-d 
不導(dǎo)出任何數(shù)據(jù),只導(dǎo)出數(shù)據(jù)庫表結(jié)構(gòu)。 
--opt 
這只是一個快捷選項,等同于同時添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 選項。本選項能讓 mysqldump 很快的導(dǎo)出數(shù)據(jù),并且導(dǎo)出的數(shù)據(jù)能很快導(dǎo)回。該選項默認開啟,但可以用 --skip-opt 禁用。注意,如果運行 mysqldump 沒有指定 --quick 或 --opt 選項,則會將整個結(jié)果集放在內(nèi)存中。如果導(dǎo)出大數(shù)據(jù)庫的話可能會出現(xiàn)問題。 
--quick,-q 
該選項在導(dǎo)出大表時很有用,它強制 mysqldump 從服務(wù)器查詢?nèi)〉糜涗浿苯虞敵龆皇侨〉盟杏涗浐髮⑺鼈兙彺娴絻?nèi)存中。 
--routines,-R 
導(dǎo)出存儲過程以及自定義函數(shù)。 
--single-transaction 
該選項在導(dǎo)出數(shù)據(jù)之前提交一個 BEGIN SQL語句,BEGIN 不會阻塞任何應(yīng)用程序且能保證導(dǎo)出時數(shù)據(jù)庫的一致性狀態(tài)。它只適用于事務(wù)表,例如 InnoDB 和 BDB。 
本選項和 --lock-tables 選項是互斥的,因為 LOCK TABLES 會使任何掛起的事務(wù)隱含提交。 
要想導(dǎo)出大表的話,應(yīng)結(jié)合使用 --quick 選項。 
--triggers 
同時導(dǎo)出觸發(fā)器。該選項默認啟用,用 --skip-triggers 禁用它。

 
3.mysqlhotcopy備份 
mysqlhotcopy是一個Perl腳本,最初由Tim Bunce編寫并提供。它使用LOCK TABLES、FLUSH TABLES和cp或scp來快速備份數(shù)據(jù)庫。它是備份數(shù)據(jù)庫或單個表的最快的途徑,但它只能運行在數(shù)據(jù)庫目錄所在的機器上。mysqlhotcopy只用于備份MyISAM。它運行在Unix和NetWare中 
使用方法見下面的腳本.加入crotab中吧. 
#!/bin/sh 
# Name:mysqlbackup.sh 
# PS:MySQL DataBase Backup,Use mysqlhotcopy script. 
# Last Modify:2008-06-12 
# 定義變量,請根據(jù)具體情況修改 
# 定義腳本所在目錄 
scriptsDir=`pwd` 
# 數(shù)據(jù)庫的數(shù)據(jù)目錄 
dataDir=/var/lib/mysql 
# 數(shù)據(jù)備份目錄 
tmpBackupDir=/tmp/mysqlblackup 
backupDir=/backup/mysql 
# 用來備份數(shù)據(jù)庫的用戶名和密碼 
mysqlUser=root 
mysqlPWD='you password' 
# 如果臨時備份目錄存在,清空它,如果不存在則創(chuàng)建它 
if [[ -e $tmpBackupDir ]]; then 
rm -rf $tmpBackupDir/* 
else 
mkdir $tmpBackupDir 
fi 
# 如果備份目錄不存在則創(chuàng)建它 
if [[ ! -e $backupDir ]];then 
mkdir $backupDir 
fi 
# 得到數(shù)據(jù)庫備份列表,在此可以過濾不想備份的數(shù)據(jù)庫 
for databases in `find $dataDir -type d |
sed -e "s/\/var\/lib\/mysql\///" |
sed -e "s/test//"`; do 
if [[ $databases == "" ]]; then 
continue 
else 
# 備份數(shù)據(jù)庫 
/usr/bin/mysqlhotcopy --user=$mysqlUser --password=$mysqlPWD -q "$databases" $tmpBackupDir 
dateTime=`date "+%Y.%m.%d %H:%M:%S"
echo "$dateTime Database:$databases backup success!" >>MySQLBackup.log 
fi 
done 
# 壓縮備份文件 
date=`date -I` 
cd $tmpBackupDir 
tar czf $backupDir/mysql-$date.tar.gz ./ 
#End完成

 
加入到crontab中設(shè)置每周5運行 

0 0 * * 5 /backup/blackup.sh

注意:恢復(fù)數(shù)據(jù)庫到備份時的狀態(tài) 
mysqlhotcopy 備份出來的是整個數(shù)據(jù)庫目錄,使用時可以直接拷貝到 mysqld 指定的 datadir (在這里是 /var/lib/mysql/)目錄下即可,同時要注意權(quán)限的問題,如下例: 

shell> cp -rf db_name /var/lib/mysql/ 
shell> chown -R mysql:mysql /var/lib/mysql/ (將 db_name 目錄的屬主改成 mysqld 運行用戶)

本套備份策略只能恢復(fù)數(shù)據(jù)庫到最后一次備份時的狀態(tài),要想在崩潰時丟失的數(shù)據(jù)盡量少應(yīng)該更頻繁的進行備份,要想恢復(fù)數(shù)據(jù)到崩潰時的狀態(tài)請使用主從復(fù)制機制(replication)。 
小技巧: 
不想寫密碼在shell中的話,可以在root的home目錄下建立一個.my.cnf文件,以便讓mysqlhotcopy從中讀取用戶名/密碼。 

[mysqlhotcopy] 
user=root 
password=YourPassword

然后安全起見,chmod一下。 

chmod 600 ~/.my.cnf

附:mysqlhotcopy常用參數(shù): 
· --allowold 如果目標存在不放棄(加上一個_old后綴重新命名它)。 
· --checkpoint=db_name.tbl_name 在指定的db_name.tbl_name插入檢查點條目。 
· ---debug 啟用調(diào)試輸出。 
· --dryrun,-n 報告動作而不執(zhí)行它們。 
· --flushlog 所有表鎖定后刷新日志。 
· --keepold 完成后不刪除以前(重新命名的)的目標。 
· -- method=command 復(fù)制方法(cp或scp)。 
· --noindices 備份中不包括全部索引文件。這樣使備份更小、更快。可以在以后用myisamchk -rq重新構(gòu)建索引。 
· --password=password,-p password 當連接服務(wù)器時使用的密碼。請注意該選項的密碼值是不可選的,不象其它MySQL程序。 
· --port=port_num,-P port_num 當連接本地服務(wù)器時使用的TCP/IP端口號。 
· --quiet,-q 除了出現(xiàn)錯誤時保持沉默。 
· --regexp=expr 復(fù)制所有數(shù)據(jù)庫名匹配給出的正則表達式的數(shù)據(jù)庫。 
· --socket=path,-S path 用于連接的Unix套接字文件。 
· --suffix=str 所復(fù)制的數(shù)據(jù)庫名的后綴。 
· --tmpdir=path 臨時目錄(代替/tmp)。 
· --user=user_name,-u user_name 當連接服務(wù)器時使用的MySQL用戶名。 
mysqlhotcopy從選項文件讀取[client]和[mysqlhotcopy]選項組。要想執(zhí)行mysqlhotcopy,你必須可以訪問備份的表文件,具有那些表的SELECT權(quán)限和RELOAD權(quán)限(以便能夠執(zhí)行FLUSH TABLES)。
 
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
mysql的備份與修復(fù)
MySQL 數(shù)據(jù)備份與還原
數(shù)據(jù)庫備份
MySQL數(shù)據(jù)庫常用的備份方法
mysql mysqldump導(dǎo)出與導(dǎo)入sql文件
MySQL數(shù)據(jù)庫的數(shù)據(jù)備份和恢復(fù)詳解 - 日志 - freebone - MySQL基地 ...
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服