linux修復數據庫命令 mysql修復數據庫命令
linux 備份的數據庫怎么恢復
一、 使用mysql相關命令進行簡單的本地備份
鼓樓ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為成都創新互聯公司的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
1 mysqlldump命令
mysqldump 是采用SQL級別的備份機制,它將數據表導成 SQL 腳本文件,在不同的 MySQL 版本之間升級時相對比較合適,這也是最常用的備份方法。
使用 mysqldump進行備份非常簡單,如果要備份數據庫” db_backup ”,使用命令:
#mysqldump –u -p phpbb_db_backup /usr/backups/mysql/db_backup2008-1-6.sql
還可以使用gzip命令對備份文件進行壓縮:
#mysqldump db_backup | gzip /usr/backups/mysql/ db_backup2008-1-6.sql.gz (備份后生成的sql不含建庫語句!)
只備份一些頻繁更新的數據庫表:
## mysqldump sample_db articles comments links /usr/backups/mysql/sample_db.art_comm_lin.2008-1-6.sql
上面的命令會備份articles, comments, 和links 三個表。
恢復數據使用命令:
#mysql –u -p db_backup /usr/backups/mysql/ db_backup2008-1-6.sql
注意使用這個命令時必須保證數據庫正在運行。
2 使用 SOURCE 語法
其實這不是標準的 SQL 語法,而是 mysql 客戶端提供的功能,例如:
# SOURCE /tmp/db_name.sql;
這里需要指定文件的絕對路徑,并且必須是 mysqld 運行用戶(例如 nobody)有權限讀取的文件。
3 mysqlhotcopy備份
mysqlhotcopy 只能用于備份 MyISAM,并且只能運行在 linux 和Unix 和 NetWare 系統上。mysqlhotcopy 支持一次性拷貝多個數據庫,同時還支持正則表達。以下是幾個例子:
#mysqlhotcopy -h=localhost -u=goodcjh -p=goodcjh db_name /tmp
(把數據庫目錄 db_name 拷貝到 /tmp 下)
注意,想要使用 mysqlhotcopy,必須要有 SELECT、RELOAD(要執行 FLUSH TABLES) 權限,并且還必須要能夠有讀取 datadir/db_name 目錄的權限。
還原數據庫方法:
mysqlhotcopy 備份出來的是整個數據庫目錄,使用時可以直接拷貝到 mysqld 指定的 目錄 (在這里是 /usr/local/mysql/data/)目錄下即可,同時要注意權限的問題,另外首先應當刪除數據庫舊副本如下例:
# /bin/rm -rf /mysql-backup/**//*old
關閉mysql 服務器、復制文件、查詢啟動mysql服務器的三個步驟:
# /etc/init.d/mysqld stop
Stopping MySQL: [ OK ]
# cp -af /mysql-backup/**//* /var/lib/mysql /
# /etc/init.d/mysqld start
Starting MySQL: [ OK ]
#chown -R nobody:nobody /usr/local/mysql/data/ (將 db_name 目錄的屬主改成 mysqld 運行用戶)
二、使用網絡備份
將MYSQL數據放在一臺計算機上是不安全的,所以應當把數據備份到局域網中其他Linux計算機中。假設Mysql服務器IP地址是:192.168.1.3。局域網使用Linux的遠程計算機IP地址是192.168.1.4;類似于windows的網絡共享,UNIX(Linux)系統也有自己的網絡共享,那就是NFS(網絡文件系統),在linux客戶端掛接(mount)NFS磁盤共享之前,必須先配置好NFS服務端。linux系統NFS服務端配置方法如下:
(1)修改 /etc/exports,增加共享目錄
/export/home/sunky 192.168.1.4(rw)
/export/home/sunky1 *(rw)
/export/home/sunky2 linux-client(rw)
注:/export/home/目錄下的sunky、sunky1、sunky2是準備共享的目錄,10.140.133.23、*、linux-client是被允許掛接此共享linux客戶機的IP地址或主機名。如果要使用主機名linux-client必須在服務端主機/etc/hosts文件里增加linux-client主機ip定義。格式如下:
192.168.1.4 linux-client
若修改/etc/export文件增加新的共享,應先停止NFS服務,再啟動NFS服務方能使新增加的共享起作用。使用命令exportfs -rv也可以達到同樣的效果。linux客戶端掛接(mount)其他linux系統或UNIX系統的NFS共享。這里我們假設192.168.1.4是NFS服務端的主機IP地址,當然這里也可以使用主機名,但必須在本機/etc/hosts文件里增加服務端ip定義。/export/home/sunky為服務端共享的目錄。如此就可以在linux客戶端通過/mnt/nfs來訪問其它linux系統或UNIX系統以NFS方式共享出來的文件了。
把MYSQL數據備份到使用Linux的遠程計算機需要在兩端都安裝NFS協議(Network File System),遠程NFS計算機安裝NFS協議后還要修改配置文件:/etc/exports,加入一行:
/usr/backups/mysql/ 192.168.1.4 (rw, no_root_squash)
表示將/usr/backups/mysql/目錄共享。這個目錄具有遠程root用戶讀寫權限。保存NFS配置文件,然后使用命令:
#exportfs -a –r
然后重新啟動NFS服務:
#service nfsd start
遠程計算機設定后,在MYSQL服務器/mnt 目錄下建立一個backup_share目錄:
#mkdir /mnt/backup_share
將遠程的Linux計算機的/usr/backups/mysql/目錄掛載到MYSQL服務器的/mnt/backup_share目錄下:
# mount -t nfs 192.168.1.4:/usr/backups/mysql /mnt/backup_share
將目錄掛載進來后,只要進入/mnt/backup_share 目錄,就等于到了IP地址:192.168.1.4那部NFS 計算機的/usr/backups/mysql 目錄中。下面使用mysqldump把“phpbb_db_backup”備份到遠程計算機:
# mysqldump db_backup /mnt/backup_share/ db_backup2008-1-6.sql
自動完成網絡備份的方法:
Linux 服務器上的程序每天都在更新 MySQL 數據庫,于是就想起寫一個 shell 腳本,結合 crontab,定時備份數據庫。建立一個shell腳本:sample_db_backup.sh
# At the very end the $(date +%F) 自動添加備份日期
mysqldump -u username -p password -h hostname sample_db /mnt/backup_share/sample_db.$(date +%F)
#un-mount the filesystem
umount /mnt/backup_share
# mount \u2013o soft 192.168.1.4:/archive /mnt/backup_share
說明:mount NFS服務器的一個重要參數:hard (硬) mount或soft(軟)mount。
硬掛載: NFS客戶機會不斷的嘗試與NFS服務器的連接(在后臺,一般不會給出任何提示信息),直到掛載上為止。
軟掛載:會在前臺嘗試與NFS服務器的連接,是默認的連接方式。當收到錯誤信息后終止mount嘗試,并給出相關信息。
對于到底是使用硬掛載還是軟掛載的問題,這主要取決于你訪問什么信息有關。例如你是想察看NFS服務器的視頻文件時,你絕對不會希望由于一些意外的情況(如網絡速度一下子變的很慢)而使系統輸出大量的錯誤信息,如果此時你用的是硬掛載方式的話,系統就會等待,直到能夠重新與NFS 服務器建立連接傳輸信息。另外如果是非關鍵數據的話也可以使用軟掛載方式,如FTP一些數據等,這樣在遠程機器暫時連接不上或關閉時就不會掛起你的會話過程。
下面建立腳本文件權限:chmod +x ./sample_db_backup.sh
然后使用將此腳本加到 /etc/crontab 定時任務中:
01 5 * * 0 mysql /home/mysql/ sample_db_backup.sh
好了,每周日凌晨 5:01 系統就會自動運行 sample_db_backup.sh 文件通過網絡備份 MySQL 數據庫了。
三、實時恢復M y S Q L數據方法
在對MySQL數據和表格結構進行備份時,mysqldump是一個非常有用的工具。然而,通常情況下,一般一天只備份一次,或者在一個特定的間隔備份一次。如果在剛備份完成的一段時間以內數據丟失,那么這些數據很有可能無法恢復。有什么方法可以對數據進行實時性地保護呢?事實上,現在有幾種方法都可以實現MySQL數據庫的實時保護。這里介紹其中一種,即使用二進制日志進行數據恢復。
1 設置二進制日志方法
要想從二進制日志恢復數據,你需要知道當前二進制日志文件的路徑和文件名。一般可以從選項文件(即my.cnf or my.ini,取決于你的系統)中找到路徑。如果未包含在選項文件中,當服務器啟動時,可以在命令行中以選項的形式給出。啟用二進制日志的選項為-- log-bin。要想確定當前的二進制日志文件的文件名,輸入下面的MySQL語句:
# SHOW BINLOG EVENTS \G
2 最簡單的數據恢復
每天備份和運行二進制日志的確是一個在MySQL服務器中恢復數據的不錯方法。比如,可以每天在深夜使用mysqldump對數據進行備份,如果某天在數據備份完成后的一段時間里,由于某種原因數據丟失,可以使用以下方法來對其進行恢復。首先,停止MySQL服務器,然后使用以下命令重新啟動MySQL服務器。該命令將保證是惟一可以訪問該數據庫服務器的人:
# /etc/init.d/mysqld stop
Stopping MySQL: [ OK ]
# mysqld --socket=/tmp/mysql_restore.sock --skip-networking
這里, 一socket選項將為U n i x 系統命名一個不同的Socket文件。一旦服務器處于獨占控制之下,就可以放心地對數據庫進行操作,而不用擔心在進行數據恢復的過程中有用戶嘗試訪問數據庫而導致更多的麻煩。進行恢復的第一個步驟是恢復晚上備份好的dump文件:
#mysql -u root -pmypwd --socket=/tmp/mysql_restore.sock /var/backup/20080120.sql
該命令可以將數據庫的內容恢復至晚上剛剛完成備份的內容。要恢復dump文件創建后的數據庫事務處理, 可以使用mysqlbinlog工具。如果每天晚上進行備份操作時都對日志進行flush操作,則可以使用以下命令行工具將整個二進制日志文件進行恢復:
mysqlbinlog /var/log/mysql/bin.123456 \
| mysql -u root -pmypwd --socket=/tmp/mysql_restore.sock
3 針對某一時問點的恢復
對于MySQL 4.1.4,可以在mysqlbinlog語句中通過--start-date和--stop-date選項指定DATETIME格式的起止時間。假設用戶在2008-1-22上午10點執行的SQL語句刪除了一個大的數據表,則可以使用以下命令進行恢復:要想恢復表和數據,你可以恢復前晚上的備份,并輸入:
#mysqlbinlog --stop-date="2008-1-22 9:59:59"
/var/log/mysql/bin.123456 |
mysql -u root -pmypwd \
--socket=/tmp/mysql_restore.sock
#mysql -u root -pmypwd
該語句將恢復所有給定一stop-date日期之前的數據。如果在執行某SQL語句數小時之后才發現執行了錯誤操作,那么可能還需要恢復之后輸入的一些數據。這時, 也可以通過mysqlbinlog來完成該功能:
#mysqlbinlog --start-date="2008-1-22 10:01:00" \
/var/log/mysql/bin.123456 \
| mysql -u root -pmypwd \
--socket=/tmp/mysql_restore.sock
#mysql -u root -pmypwd
在該行中,從上午10:01登錄的SQL語句將運行。組合執行前夜的轉儲文件和mysqlbinlog的兩行可以將所有數據恢復到上午10:00前一秒鐘。你應檢查日志以確保時間確切。
4 使用Position進行恢復
也可以不指定日期和時間,而使用mysqlbinlog的選項--start-position和--stop-position來指定日志位置。它們的作用與起止日選項相同,不同的是給出了從日志起的位置號。使用日志位置是更準確的恢復方法,特別是當由于破壞性SQL語句同時發生許多事務的時候。要想確定位置號,可以運行mysqlbinlog尋找執行了不期望的事務的時間范圍,但應將結果重新指向文本文件以便進行檢查。操作命令為:
mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00"
/var/log/mysql/bin.123456 /tmp/mysql_restore.sql
該命令將在/tmp目錄創建小的文本文件,將顯示執行了錯誤的SQL語句時的SQL語句。你可以用vi或者gedit文本編輯器打開該文件,尋找你不要想重復的語句。如果二進制日志中的位置號用于停止和繼續恢復操作,應進行注釋。用log_pos加一個數字來標記位置。使用位置號恢復了以前的備份文件后,你應從命令行輸入下面內容:
mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456
| mysql -u root -pmypwd
mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456
| mysql -u root -pmypwd
上面的第1行將恢復到停止位置為止的所有事務。下一行將恢復從給定的起始位置直到二進制日志結束的所有事務。因為mysqlbinlog的輸出包括每個SQL語句記錄之前的SET TIMESTAMP語句,恢復的數據和相關MySQL日志將反應事務執行的原時間。
Linux 如何修復損壞的MySQL數據庫
由于斷電或非正常關機而導致MySQL數據庫出現錯誤是非常常見的問題。MySQL分別針對不同的數據表類型提供了多個數據檢測恢復工具,這些工具是:myisamchkisamchk其中myisamchk適用于MYISAM類型的數據表,而isamchk適用于ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為缺省的數據表類型,這里以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用: myisamchk tablename.MYI 進行檢測,如果需要修復的話,可以使用: myisamchk -of tablename.MYI 關于myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL服務器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL服務器Shutdown掉。 另外可以把下面的命令放在你的rc.local里面啟動MySQL服務器前: [ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI 其中的/tmp/mysql.sock是MySQL監聽的Sock文件位置,對于使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數據庫存放的位置。 需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認在執行這條指令時MySQL服務器必須沒有啟動!
Window下備份的DB2數據庫,在Linux下怎么恢復
將windows下的數據庫備份文件直接復制到LINUX下,在LINUX下創建一個同名空庫,然后執行restore db命令,應該成功的。
另外一種方法是可以用db2look取得windows數據庫的DDL語句,到LINUX系統下執行一遍。數據依靠windows下執行EXPORT命令導出,LINUX下IMPORT。
如何在Linux下實現DB2數據庫備份和恢復?
以下的文章主要向大家講述的是在Linux操作系統的環境下實現DB2數據庫備份和恢復的操作步驟,以下就是對Lin操作系統的環境下實現DB2數據庫備份和恢復的操作步驟的描述,希望在你今后的學習中會有所幫助。 通過如下備份腳本備份的數據庫進行恢復 備份腳本: . /home/db2admin/sqllib/db2profile db2 backup db datedb online to /dbbackup/date include logs cd /dbbackup/datetoday=`date +”%Y%m%d”` file1=”*$today*” ftpfile=`ls $file1` echo $ftpfile lftp -c “open ftp地址;user 用戶名密碼@\$0; put $ftpfile” find /dbbackup/date -ctime +15 -exec rm {} \; 恢復命令:通過root命令登錄到服務器上后切換到數據庫用戶名下用su – db2admin命令。 進入到備份文件存放目錄 執行如下命令 [db2admin@localhost db2back]$ db2 restore db datedb from /hom 以上的相關內容就是對Linux環境下DB2數據庫備份與恢復的介紹,望你能有所收獲。
linux下金倉數據庫重啟命令
linux下金倉數據庫重啟命令
一、啟動方式
1、使用linux命令service 啟動:
service mysqld start
2、使用 mysqld 腳本啟動:
/etc/inint.d/mysqld start
3、使用 safe_mysqld 啟動:
safe_mysqld
一、重啟
1、使用linux命令service 重啟:
service mysqld restart
2、使用 mysqld 腳本重啟:
/etc/inint.d/mysqld restart
二、停止 1、使用 service 啟動: service mysqld stop 2、使用 mysqld 腳本啟動: /etc/inint.d/mysqld stop 3、 mysqladmin shutdown
linux系統mysql怎么還原
你說的還原,指有備份的還原,下面是你做過備份的恢復:
如我們要備份mysql中已經存在的名為linux的數據庫,要用到命令mysqldump
命令格式如下:
[root@linuxsir01 root]# mysqldump -u root -p linux /root/linux.sql
Enter password:在這里輸入數據庫的密碼
通過上面的命令,我們要明白兩件事,首先備份數據庫是要以數據庫管理員的身份備份;其次:備份目的地是/root,備份的文件名是linux.sql。其實備份的位置和文件名,根據自己的情況來定。文件名可以自己來取,路徑也可以自己來安排;
比如我想把linux的數據庫備份到/home/beinan,數據庫的文件名為linuxsir031130.sql,所以應該輸入如下的命令。
[root@linuxsir01 root]#mysqldump -u root -p linux /home/beinan/linuxsir031130.sql
Enter password:在這里輸入數據庫管理員root的數據庫密碼
如果數據量大會占用很大空間,這時可以利用gzip壓縮數據,命令如下:
#mysqldump -u root -p tm | gzip tm_050519.sql.gz
這樣我們到/home/beinan目錄下就能發現mysql中名為linux的數據庫的備份文件linuxsir031130.sql
綜上所述,我們學習時要學會變通。
恢復:
首先我們還是要操作上面幾個過程,比如添加數據庫管理員(如果您沒有添加過mysql數據庫管理員的話),創建數據庫等。
比如我們要把在/home/beinan這個目錄中的linuxsir031130.sql這個備份,導入名為linux的數據庫中,應該如下操作;
[root@linuxsir01 root]#mysql -u root -p linux /home/beinan/linuxsir031130.sql
Enter password:在這里輸入密碼
如果機器好,數據庫比較小,幾分鐘就好了。
如何導出數據庫表的數據?(不同于備份哦)
#mysql
(#mysqluse linux;)#可有可無
#mysqlselect * from linux.table-name into outfile "/home/table-name.txt";
#/home/table-name.txt 可能會報錯,如果這樣去掉/home直接"table-name.txt"
默認保存在/var/lib/mysql/table-name.txt
對mysql數據庫常用命令的一點補充;
幾個常用的mysql相關的管理命令
mysql 命令:基本文本的,顯示和使用的mysql數據庫。前面已經簡單的提過用法;比如登錄等。
mysqladmin 命令,用來創建和維護mysql數據庫的命令,前面已經簡單的提過;
isamchk 是用來修復、檢查和優化.ism后綴的數據庫文件;
mysqldump 是用于備份數據庫,前面已經簡單的說明過;
myisamchk 用來修復.myi后綴的數據庫文件;
比如我們要檢查名為linux的數據庫.myi數據庫表是否存在問題,應該用下面的命令;
要把mysqld服務器停下來
[root@linuxsir01 root]# /opt/mysql/share/mysql.server stop
然后執行
[root@linuxsir01 root]# /opt/mysql/bin/myisamchk /opt/mysql/var/linux/*.MYI
上面的命令的意思就是檢查所有的.myi文件,數據庫的目錄在/opt/mysql/var/linux/目錄中
如果有問題,應該用-r參數來修復
[root@linuxsir01 root]# /opt/mysql/bin/myisamchk -r /opt/mysql/var/linux/*.MYI
7]mysqlshow 命令:顯示用戶選擇的數據庫和表
[root@linuxsir01 root]# /opt/mysql/bin/mysqlshow -uroot -p [數據庫名]
比如我要查看名為linux的數據庫;應該是:
[root@linuxsir01 root]# /opt/mysql/bin/mysqlshow -uroot -p linux
名稱欄目:linux修復數據庫命令 mysql修復數據庫命令
分享網址:http://www.xueling.net.cn/article/hghijo.html