mysql數據庫的簡單操作(轉載)

邏輯備份:
1.mysqldump(數據導出工具)
  mysqldump options db_name[table_name]//備份單個數據庫
  mysqldump 選項 --database database-name1 [databases-name2]....//備份指定的數據庫一個或者多個
  mysqldump 選項 --all-database //備份所有的數據庫
鏈接選項:
  -u :指定用戶名
   -p:指定密碼
   -h:指定服務器ip或者域名
   -P(大寫):指定端口
eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user>/home/wuxiaoxiao/user.txt
輸出內容選項:
--add-drop-database:每個數據庫創建語句之前加上drop database語句
--add-drop-table:每個表創建語句之前加上drop table語句
-n:不包含數據庫的創建語句
-t:不包含數據表的創建語句
-d:不包含數據
輸出格式選項:
--compact:使輸出結果簡潔
-c --compact-insert:使輸出文件中的insert語句包含字段名
-T:將數據庫表中的數據備份爲單純的數據文本和建表sql倆個文件
   --fields-terminated-by=name(域分割符)
   --fields-enclosed-by=name(域引用符)
   --fields-optionally-enclosed-by=name(域可選引用符)
   --fields-escaped-by=name(轉移字符)
eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user -T ./bak
字符集選項:
--default-character-set=name:設置導出的客戶端字符集
eg:mysql -u root -p --compact --default-character-set=utf8 BBS user > test.txt
其他選項:
-F:備份前刷新日誌
-l:給所有表加讀鎖(備份期間使用,使備份的數據保持一致性)
備份:
備份所有數據庫:
mysqldump -u root -p  --all-database  >  test.sql
備份數據庫test
mysqldump -u root -p  test  >  test.sql
備份數據庫test下的temp表:
mysqldump -u root -p  test demp >  test.sql
備份數據庫下的所有表爲逗號分割的文本,備份到/temp
mysqldump -u root -p test -T /temp --fields-terminated-by ','
完全恢復:
msyql -u root -p < bakfile
注意:將備份恢復後數據並不完整,還需要將備份後執行的日誌進行重做
mysqlbinlog binlog-file | mysql -u root -p***
舉個完整的mysqldump備份和恢復的例子:
上午9點備份數據庫
mysqldump -u root -p -l -F test > test.dmp
9點半備份完畢,然後想數據庫中插入數據
10點數據庫突然故障,數據無法訪問,需要恢復備份
mysql -u root -p test < test.dmp
恢復後的數據並不完整,9點半插入的數據並沒有恢復
使用mysqlbinlog恢復自mysqldump備份以來的binlog
mysqlbinlog binlogfilename | mysql -u root -p test
基於時間點恢復:
如果上午10點發生了誤操作.可以用下面語句進行備份和binlog將數據庫恢復到故障前:
mysqlbinlog --stop-date="2005-04-20 9:59:59" binlogfile | mysql -u root -p test
跳過故障的時間點,繼續執行後面的binlog,完成恢復
mysqlbinlog --start-date="2005-04-20 9:59:59" binlogfile | mysql -u root -p test
基於位置恢復:
mysqlbinlog --start-date="2005-04-20 9:55:59" --stop-date="2005-04-20 10:05:00" binlogfile > test.sql
查看此文件,找出出錯語句前後的位置號,例如是368312,368315
mysqlbinlog --stop-position="368312" binlogfile | mysql -u root -p test
mysqlbinlog --start-position="368315" binlogfile | mysql -u root -p test
表的導入和導出:
導出:
    mysqldump -u username -p -T target_dir dbname tablename [options]
options:
   --fields-terminated-by=name(域分割符)
   --fields-enclosed-by=name(域引用符)
   --fields-optionally-enclosed-by=name(域可選引用符)
   --fields-escaped-by=name(轉移字符)
備份數據庫下的所有表爲逗號分割的文本,備份到/temp
mysqldump -u root -p -T /temp test --fields-terminated-by ',' --fields-optionally-enclosed-by '"'
導入:
   msyqlimport -u root -p [LOCAL] dbname order_tab.txt [options]
OPTIONS:
   --fields-terminated-by=name(域分割符)
   --fields-enclosed-by=name(域引用符)
   --fields-optionally-enclosed-by=name(域可選引用符)
   --fields-escaped-by=name(轉移字符)
eg:mysqlimport -u root -p test order.txt --fields-terminated-by=',' --fields-enclosed-by='"'

原作地址:http://blog.csdn.net/feng_sundy/archive/2008/12/11/3496744.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章