發表文章

目前顯示的是有「MySQL」標籤的文章

Mysql備份還原

原文摘自網路.....出處不可考 本文來自   http://forum.slime.com.tw/thread208592.html  SQL - MySQL 資料庫的備份與還原 MySQL Server 的日常維護中最重要的一項大概就是資料庫的定時備份,而 MySQL 資料庫的備份方式有很多但一般來說大致上可概分為二種: Binary Copy (直接複製資料庫檔案) Dump Database (將資料庫輸出成為文字檔) 一、Binary Copy (直接複製資料庫檔案) 開門見山的說,非常不建議你這樣子做。MySQL 支援許多種不同的 Storage Engine,但並不是每一種 Storage Engine 都是 Binary Portable,意思就是說不是每一種 Storage Engine 都可以讓你把資料庫檔案直接複製到另外一台 MySQL Server,然後還可以正常運作的。MySQL 預設的 MyISAM Storage Engine 是 Binary Portable 的,因此若你的資料庫只有使用 MyISAM Storage Engine 的話,那麼你大可以直接複製資料庫檔案來進行備份(當然還必須考慮到資料的一致性,比方說複製之前先關閉 MySQL Server)。但若您有使用到 InnoDB Storage Engine,那麼你就不能這麼做,因為 InnoDB Storage Engine "不是" Binary Portable,只要 CPU 的浮點運算架構不同,複製過去的資料將無法正常運作。除此之外,你複製起來的 InnoDB 資料庫檔案(share table space)若是還原到不同版本的 MySQL Server 上,也會有很大的機率無法正常運作。除非你很肯定備份(複製)起來的資料只會使用在 "同一台 Server" 並使用 "同一個版本" 的 MySQL Server,不然請勿使用此方法進行備份。 註: 對於 MyISAM Storage Engine,每個資料庫(Database)都是一個獨立的目錄,而資料庫中的資料表則會分別以三個檔案儲存在該目錄中,這三個檔案分別是: FRM: 儲存這個資料表的結構 MYD: Row Data,也就是你存在資料表(table)裡...

Mysql 資料庫備份

節錄自 http://www.study-area.org/tips/mysql_backup.htm 作者: Duncan Lo duncan@twn.wox.org > 三.開始備份 phpBB 討論區的資料檔,主要有兩個部份,就是 php 主程式和 DB 內容, php 主程式的備份就比較簡單,只要把全部檔案 tar 起來就行了,就像: tar cvfz phpbb2_20020601.tgz phpbb (上面的 phpbb 是指 phpBB 的 php 網頁程式存放目錄.) 以後有改到 phpBB 網頁程式部份再重新備份一次就行,它的內容資料都寫在 DB 內,所以 php 程式檔部份異動性應該不大. 再來就是 MySQL DB 部份了,預設 MySQL 的 DB 檔案是存在 /var/lib/mysql 內, 以 DB 名稱為目錄,目錄內就是該 DB 的所有資料,像 phpbb2 這個 DB, 就是存在 /var/lib/mysql/phpbb2 內,在備份前,因為怕資料尚未完全寫入磁碟, 而且 MySQL 會 Lock 在使用的 DB 檔案,所以應該是要先把 MySQL 先 Shutdown 一下, 整個備份的程序可以下像下面的指令去完成: /etc/rc.d/init.d/mysqld stop tar cvfz phpbb2_db_20020601.tgz phpbb2 /etc/rc.d/init.d/mysqld start (上面的 phpbb2 是指存放 phpbb2 這個 DB 的目錄.) Ok!這樣就完成了! (什麼?就這樣! 3行就結束了?!) 對!這樣就可以了! 不過要注意的是,怕 DB 內每個 Tables 間的資料有關關聯性, 所以最好是把整個 DB 一次備起來,單獨只備哪個 Tables 的檔案,以後回存時, 怕會有資料關聯不一致的問題! 以酷!學園的口水討論區為例,有21000筆左右的文章加上1200名註冊會員,資料庫 整個 tar 起來大約30幾 MB 左右,每天備份,以一週為週期來計算,備份大約只需要 (35*7=245) 200 多 MB 左右的空間,一星期的備份燒在一張光碟還夠! 四.如何回存 phpBB 討論區的回存,只需把檔案解回原來存放網頁的路徑...

Linux RedHat 4.4 安裝 Mysql 5.0

首先到 http://www.mysql.com 下載rpm包 這次下載的是 MySQL-server-community-5.0.51a-0.rhel4.i386.rpm 然後 rpm -ivh MySQL-server-community-5.0.51a-0.rhel4.i386.rpm 如果發現有下述錯誤發生: MySQL conflicts with mysql-4.1.20-1.RHEL4.1.i386 MySQL-server conflicts with mysql-server-4.1.20-1.RHEL4.1.i386 則可能是以前有安裝過MySQL。 要解除之前的安裝,首先.... #rpm -qa | mysql 查看安裝了多少東西關於mysql的東西 然後使用 #rpm -e mysql-server-4.1.20-1.RHEL4.1.i386 (例子) 來解除安裝 解決了舊版本的東西後,再回到 rpm -ivh的步驟重新安裝過...

MYSQL:Can't open file: 'user.MYD'的解决方法

問題特徵: mysql數據庫錯誤: Can't open file: 'user.MYD'. (errno: 145) mysql數據庫錯誤號: 1016 解決方法: 1.運行myisamchk *.MYI或(myisamchk -e *.MYI,如果你有更多的時間)。使用-s(沉默)選項禁止不必要的信息。 你必須只修復那些myisamchk找出來的第一個錯誤的表。對這樣的表,繼續到階段2。 如果在檢查時,你得到奇怪的錯誤(例如out of memory錯誤),或如果myisamchk崩潰,到階段3。 2 :簡單安全的修復 首先,試試myisamchk -r -q tbl_name(-r -q意味著“快速恢復模式”)。這將試圖不接觸數據文件來修復索引文件。如果數據文件包含它應有的一切和在數據文件指向正確地點的刪除連接,這應該管用並且表可被修復。開始修理下一張表。否則,使用下列過程: 在繼續前做數據文件的一個備份。 使用myisamchk -r tbl_name(-r意味著“恢復模式”)。這將從數據文件中刪除不正確的記錄和已被刪除的記錄並重建索引文件。 如果前面的步驟失敗,使用myisamchk --safe-recover tbl_name。安全恢復模式使用一個老的恢復方法,處理常規恢復模式不行的少數情況(但是更慢)。 如果在修復時,你得到奇怪的錯誤(例如out of memory錯誤),或如果myisamchk崩潰,到階段3。 3 :困難的修理 如果在索引文件的第一個16K塊被破壞,或包含不正確的信息,或如果索引文件丟失,你只應該到這個階段 。在這種情況下,創建一個新的索引文件是必要的。按如下這樣做: 把數據文件移更安全的地方。 使用表描述文件創建新的(空)數據和索引文件: shell> mysql db_name mysql> DELETE FROM tbl_name; mysql> quit 將老的數據文件拷貝到新創建的數據文件之中。(不要只是將老文件移回新文件之中;你要保留一個副本以防某些東西出錯。) 回到階段2。現在myisamchk -r -q應該工作了。(這不應該是一個無限循環)。...

[轉] 定期清除mysql bin log

作者: luwentao 2007-05-03 來自:http://xxo.blog.163.com/ 轉自:http://www.mske.com/index.php?option=com_content&task=view&id=60&Itemid=28 udb服務器down了,因為var目錄滿了.因為/var/log/mysql目錄占用了40G的空間. 查看/etc/mysql/my.cnf ,發現 expire-logs-days = 20 把expire-logs-days 設成3,然後在mysql命令行執行 PURGE MASTER LOGS TO 'mysql-bin.000930'; 即可刪除930之前的binlog 用這個語句可以清除3天前的binlog, PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); 所以另外還有個方法定期刪除binlog: 在contab設置: 0 1 * * * `mysql -uroot -e 'PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);'` --------------------------------------------------- Ivan 補充 -bin log 檔案的樣子會長的像 name-bin.index ,例如mysql-bin.123。 -這些bin log檔會存在於你mysql的資料庫所在地的資料夾中,且必定存在my.cnf,所以你可以搜尋my.cnf的所在地,會找到mysql的bin log. -如果你的服務器因為這些bin log塞滿了硬盤使得web service(如apache)停掉的話,在Purge掉bin log檔後,可以重開機或直接重啟web service將會達到相同的效果。 -參考指令: ls -lshR , du -ha, df 可以查看檔案和硬盤的大小和剩餘..