MySQL源碼包在Linux上安裝和配置

上傳人:1666****666 文檔編號:38981017 上傳時間:2021-11-09 格式:DOC 頁數(shù):30 大?。?7.50KB
收藏 版權申訴 舉報 下載
MySQL源碼包在Linux上安裝和配置_第1頁
第1頁 / 共30頁
MySQL源碼包在Linux上安裝和配置_第2頁
第2頁 / 共30頁
MySQL源碼包在Linux上安裝和配置_第3頁
第3頁 / 共30頁

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《MySQL源碼包在Linux上安裝和配置》由會員分享,可在線閱讀,更多相關《MySQL源碼包在Linux上安裝和配置(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、1.1 MySQL簡介 1$"Zs{XVAU   MySQL服務概述 E`=GM_w    MySQL是當前開源數(shù)據(jù)庫中最受歡迎SQL數(shù)據(jù)庫管理系統(tǒng),它由MySQL AB開發(fā)、發(fā)布和支持。MySQL AB是一家基于MySQL開發(fā)人員的商業(yè)公司,它是一家使用了一種成功的商業(yè)模式來結合開源價值和方法論的第二代開源公司。MySQL是MySQL AB的注冊商標。 :PK (X   MySQL是一個快速的、多線程、多用戶和健壯的SQL數(shù)據(jù)庫服務器。MySQL服務器支持關鍵任務、重負載生產(chǎn)系統(tǒng)的使用,也可以將它嵌入到一個大配置(mass-deplo

2、yed)的軟件中去。 8m j gs   許可費用方面,MySQL的普及很大程度上源于它的寬松,除了略顯不尋常的許可費用。MySQL的價格隨平臺和安裝方式變化。MySQL的Windows版本(NT和9X)在任何情況下都不免費,而任何Unix變種(包括Linux)的MySQL如果由用戶自己或系統(tǒng)管理員而不是第三方安裝則是免費的,第三方安裝則必須付許可費。 d vrP@v   c!u7xSf)}   1.2 MySQL服務安裝與配置 Y%^%++m&   這里將以MySQL源碼包在RedHat AS4上安裝配置來進行講解,在其

3、他操作系統(tǒng)上的源碼包安裝都與此類似。 m1n5> UE   1.2.1 獲取MySQL R5w l@<C1L   目前MySQL的最新穩(wěn)定發(fā)行版本是5.0.33,可以在其官方下載地址 `8m='~/6   注意:要找到頁面最下方的源碼包(Source downloads)Tarball (tar.gz) aN4h*aX   在這個頁面我們還可以看到許多其他為特定操作系統(tǒng)版本編譯好的MySQL安裝包,可以針對特定操作系統(tǒng)無需安裝直接運行。 IxDX2g<   ?!J_n;*"

4、   1.2.2 安裝準備工作 0EPXg.gK   首先要檢查操作系統(tǒng)是否安裝了所需要的軟件包,因為這里安裝的的是源碼包因此要確認是否操作系統(tǒng)是否安裝了C語言編譯環(huán)境(gcc, libgcc等) MwpaM W7~   在命令行下以root身份查看是否正確安裝gcc ERe- b3t   [root@as4 /]# rpm -aq|grep gcc 5qZmv3B   gcc-objc-3.4.3-9.EL4 0h{HM   compat-libgcc-296-2.96-132.7.2 M5j{&g

5、t;A1x    compat-gcc-32-c++-3.2.3-47.3 F^4$m/   libgcc-3.4.3-9.EL4 `Xdd   gcc-3.4.3-9.EL4 53W b6   \|-G3{Ik   此外,還要防止操作系統(tǒng)原有的MySQL包對新安裝的MySQL造成影響,因此不要讓系統(tǒng)自帶的MySQL影響到新安裝的MySQL,首先要卸載系統(tǒng)自帶的MySQL(注意:一般來說RedHat的發(fā)行版中帶的MySQL都不是最新版本)。我們可以通過以下步驟卸載系統(tǒng)自帶的MySQL。 b+Q{.u

6、LK   1)[root@as4 /]# rpm -aq|grep mysql &pR$ >z<     mysql-4.1.12-3.RHEL4.1 /@x.l   mysqlclient10-3.23.58-4.RHEL4.1… 8p8_R}Ti   2) [root@as4 ]# rpm -e mysql-4.1.12-3.RHEL4.1… ]+w5ZiG^O   NJdKI;S   1.2.3 開始安裝 ?ZD&I`   把獲得的M

7、ySQL源碼包mysql-5.0.33.tar.gz復制到/opt目錄下開始解壓 L6C|C*c   [root@as4 /]# cd /opt/ .!Xps+s3   [root@as4 opt]# tar zxvf ./mysql-5.0.33.tar.gz y '"7n8Q   為MySQL創(chuàng)建獨立用戶,一般來說這種獨立運行的數(shù)據(jù)庫都要創(chuàng)建一個獨立的系統(tǒng)用戶,有些數(shù)據(jù)庫是必須要獨立系統(tǒng)用戶的。 bB>0yiTF`   [root@as4 /]# useradd mysql -d /opt/mysql-

8、5.0. 33 N)fN.yz+   [root@as4 /]# chown -R mysql.mysql /opt/mysql-5.0. 33 /F<P-;z   創(chuàng)建2個重要目錄(數(shù)據(jù)和連接) ~?>j4ftv=   數(shù)據(jù)目錄用于存放MySQL的所有數(shù)據(jù),而連接目錄是存放MySQL運行時的socket文件 C!@'`{gv   [root@as4 /]# su – mysql 先切換到mysql用戶 @8mWwQ1_   [mysql@as4 ~]$ mkdir ./data kdKA N]

9、3   [mysql@as4 ~]$ mkdir ./tmp A 8V]==   l_W|Mx   開始預編譯 d[6>0Rc_/   [mysql@as4 ~]$ ./configure --prefix=/opt/mysql-5.0.33 --localstatedir=/opt/mysql-5.0.33/data --with-unix-socket-path=/opt/mysql-5.0.33/tmp/mysql.sock --with-mysqld-user=mysql --enable-large-files

10、--with-big-tables --with-charset=utf8 --with-extra-charsets=latin1,latin2,latin5,latin7,gb2312,gbk #eV|P &?   --prefix參數(shù)是指定mysql的安裝目錄 Bl[pU }<   --localstatedir是指定mysql數(shù)據(jù)的存放目錄 MfVh %rh;R   --with-unix-socket-path是指定socket文件的存放路徑  P2p P|-   --with-mysqld-user是指定使用

11、用戶 o;82"um0x   可以用configure –help查看可以使用的所有參數(shù) d nY'!<5[   h^'?9>=Y   開始編譯 UidPZz   [mysql@as4 ~]$ make s-jI:I   此過程相對來說會比較長,當然也跟機器的硬件配置有關 1 {^G^   uQ-c{Asv   開始安裝 :G} Eir   [mysql@as4 ~]$ make install djqN,6 

12、60; 此步驟完成后MySQL軟件就安裝到系統(tǒng)了,安裝過程與Windows下的安裝有些不同,由于是源碼包安裝,因此很多參數(shù)都是要手工設置的 &)|: '$a   hiLk3-hH   安裝完的重要設置 MEd<dsJ2y   進行初始化數(shù)據(jù)操作 dGc_ssf   [mysql@as4~]$ ./scripts/mysql_install_db --datadir=/opt/mysql-5.0.33/data xCL!S+%   6;i%[.-   此步驟創(chuàng)建2個系統(tǒng)初始數(shù)

13、據(jù)庫:mysql和test "^7Q;jD%   YN<_J! !_   1.3 管理MySQL 0 )jt1"n0^   在運行數(shù)據(jù)庫系統(tǒng)時, MySQL的使用相當簡單,且進行MySQL安裝和使用所需的工作也很少。MySQL的簡單性可能就是它極為普及的原因,尤其是在非程序員人群中的普及。當然,它對于訓練有素的計算機專業(yè)人員也是有幫助的,但肯定不是對運行一個成功的MySQL安裝程序的需求。 h)es=@ryn7   如果有管理其他數(shù)據(jù)庫系統(tǒng)的經(jīng)驗,將會發(fā)現(xiàn):運行MySQL的安裝程序在某些方面是類似的,您的經(jīng)驗也是用

14、得著的。但是MySQL的管理有自己獨特的需求,本書的這個部分將幫助您熟悉這些內(nèi)容。 t/*G$,t;   wFZ)1(O'   管理職責概述 lb9J"4b6<   };XKYR~ J   MySQL數(shù)據(jù)庫系統(tǒng)由幾部分組成。您應該熟悉這些組成部分的內(nèi)容和每個部分的目的。這需要您了解所管理系統(tǒng)的特征以及幫助您進行管理的可用工具。如果您花時間去了解了要監(jiān)督的內(nèi)容,工作將會變得非常容易。為此,您應當使自己熟悉MySQL的以下幾個方面: 5$[n!pz   MySQL服務器。服務器mysql執(zhí)行數(shù)據(jù)庫

15、和表的所有操作。safe_mysqld 是一個相關的程序,它用于啟動服務器、監(jiān)控服務器和重新啟動服務器。 c,4*e*s|X   MySQL客戶機和實用程序。有幾個MySQL程序,可用來幫助您與服務器進行通信和執(zhí)行管理的任務。其中最重要的幾個是: 9mo+5c==   mysql,一個交互式程序,允許將SQL 語句發(fā)布到服務器上并瀏覽其結果。 x\ARJIK0>   mysqladmin,一個管理程序,允許執(zhí)行諸如關閉服務器以及創(chuàng)建或刪除數(shù)據(jù)庫的工作。如果服務器運行不正常,還可以用mysqladmin 來檢查服務器的狀態(tài)。 C\DcVu|M

16、   isamchk 和my i s a m c h k,這些實用程序幫助您完成表的分析和優(yōu)化,以及在表損壞時進行崩潰恢復。 ZI$2$+   mysqldump,一個工具,用于備份數(shù)據(jù)庫或?qū)?shù)據(jù)庫拷貝到另一個服務器中。 k^ "+_9FS   服務器的語言,SQL。有些管理職責只能用mysqladmin 的命令行實用程序來完成,但是,如果還能用服務器自己的語言來同服務器進行對話,那就更好了。沒有任何替代品能夠參與并與服務器直接通信??赏ㄟ^使用mysql客戶機程序發(fā)布能夠檢驗授權表的SQL 查詢來做到這一點。如果MySQL版本還未引入GR

17、ANT 語句,則需要使用mysql首先設置每個用戶的權限。 ~<tj]h48   如果不知道SQL 的任何內(nèi)容,至少必須對SQL要有基本的了解。缺乏對SQL 的熟悉只會帶來困惑,而在學習SQL 上所花費的時間將會得到成倍的回報。真正掌握SQL 要花費一些時間,但掌握基本技能則很快。 wFRz^g9{   MySQL數(shù)據(jù)目錄。數(shù)據(jù)目錄是服務器存儲其數(shù)據(jù)庫和狀態(tài)文件的所在。了解數(shù)據(jù)目錄的結構及內(nèi)容是很重要的,您可以知道服務器是怎樣使用文件系統(tǒng)來表現(xiàn)數(shù)據(jù)庫和表的,以及像日志這樣的文件的存放位置和其內(nèi)容。還應該了解在文件系統(tǒng)中管理磁盤空間分配的選項,當發(fā)現(xiàn)放置數(shù)據(jù)

18、目錄的文件系統(tǒng)過滿時可以進行調(diào)整。 ,_KyJI{   G]\jdGx   常規(guī)管理 bU]nx5{   ;U/kT<   常規(guī)管理主要指處理mysqld、MySQL服務器和提供給用戶的訪問服務器的操作。在履行該職責時,下列的任務是最重要的: O1x~$A>93   服務器的啟動和關閉。應該能夠從命令行中手工啟動和終止服務器,并且在系統(tǒng)啟動和關閉時知道怎樣進行自動啟動和關閉。如果服務器崩潰了或啟動不正常的話,了解怎樣使服務器再次運行也是重要的。 ubFg&<6 }-  

19、用戶賬號維護。應該了解MySQL用戶和UNIX 或Windows 用戶之間的區(qū)別。應該知道怎樣通過指定哪些用戶可以連接到服務器和從哪里進行連接來建立MySQL用戶賬號。還應該給新的用戶建議合適的連接參數(shù),以使他們成功地連接到服務器。弄清應怎樣建立賬號不是用戶們的工作。 +w.Ls   日志文件維護。應該了解可以維護的日志文件的類型,以及在何時和怎樣完成日志文件的維護。日志的循環(huán)和終止對于防止日志填滿文件系統(tǒng)是必要的。 sMUz8~UR   數(shù)據(jù)庫備份和拷貝。數(shù)據(jù)庫備份對服務器系統(tǒng)的崩潰是至關重要的。應該能夠?qū)?shù)據(jù)庫恢復到崩潰時的狀態(tài),以便盡可能地減少數(shù)據(jù)的

20、丟失。請注意,數(shù)據(jù)庫備份與常規(guī)的系統(tǒng)備份不同,例如,可通過使用UNIX 的dump 程序來進行。與數(shù)據(jù)庫表相對應的文件在系統(tǒng)備份發(fā)生時隨服務器活動而變化,因此恢復那些文件將使您的表內(nèi)部不一致。mysqldump 程序?qū)a(chǎn)生對恢復數(shù)據(jù)庫更有用的備份文件,并允許在不關閉服務器的狀態(tài)下創(chuàng)建備份。 , +[47   如果決定在更快的主機上運行數(shù)據(jù)庫,或者想復制數(shù)據(jù)庫,則需要拷貝其內(nèi)容到另一臺機器上。如果需要的話,應該了解進行這項操作的過程。數(shù)據(jù)庫文件是依賴于系統(tǒng)的,因此您不能只拷貝這些文件。 \MJ-{!   服務器優(yōu)化。用戶想要服務器以最佳狀態(tài)運行。提高服務器運

21、行性能的最簡單方法是購買更多的內(nèi)存或使磁盤速度更快。但是,這種直截了當?shù)募夹g并不能代替對服務器工作的了解。應該了解優(yōu)化服務器操作所用的參數(shù)以及如何將這些參數(shù)應用在您的環(huán)境中。在某些站點中,大多數(shù)查詢都是檢索。而在另一些站點,插入和更新操作占據(jù)著優(yōu)勢。選擇對哪些參數(shù)進行修改將受到站點查詢的影響。 8 ywbr1   多服務器。在某些環(huán)境中運行多服務器是有用的。如果保留當前的成品安裝程序在適當?shù)奈恢?,或者為不同的用戶組提供較好的保密性(后者與ISP 尤其相關),則可以測試新的MySQL版本。對于這些情形,您應該了解怎樣建立多個同時發(fā)生的安裝。 :(<  :8$ 

22、0; MySQL更新。由于新的MySQL版本頻繁出現(xiàn),應該知道怎樣始終跟上這些版本以便利用故障修復和新的特性。需要了解不進行版本升級的理由,并且掌握怎樣在穩(wěn)定版本和開發(fā)者版本之間進行選擇。 9f"p<}%   1.3.1 啟動MySQL uW*],^1 :   [mysql@as4 /]$ ./bin/mysqld_safe --no-defaults & e@yMO#%N   1) --no-defaults 參數(shù)是不使用默認值,默認設置的數(shù)據(jù)庫文件是存放在/var目錄下 ^*B ?0B6   2)&a

23、mp;是后臺運行 ^FFi9 o\   R2B^ mJ   kYj$~\B   1.3.2 停止MySQL *>Kr#hP   [mysql@as4 ~]$ mysqladmin shutdown -u root –p lSI^X|2@   -u 是指定用戶 IcBEfMf   -p 是指定密碼 !Sh|=.%X   }FD{KRx   在本機命令行下進入MySQL 6DxhO/+d   mysql@as4 ~]$ mysql b/1,&

24、amp; xY   Welcome to the MySQL monitor. Commands end with ; or \g. LTn0t4f   Your MySQL connection id is 2 to server version: 5.0.33 ZS$^rS:"   Type 'help;' or '\h' for help. Type '\c' to clear the buffer. ${(/Q=fzv   mysql> AoVs u- &

25、#160; 1.3.3 MySQL用戶管理 _ZbR5b   MySQL安裝好后默認的管理員帳號也是root(與OS的帳號名一樣),而密碼是空,但是只能從本機訪問,該默認帳號可以被刪除和修改。 A[&23   *8|e@j4[   一、新增MySQL用戶 {9p|`~`W   格式:grant select on 數(shù)據(jù)庫.* to 用戶名@登錄主機 identified by "密碼" = '0W}o   例1、增加一個用戶test1密碼為abc,讓他可以在任何主機上登錄

26、,并對所有數(shù)據(jù)庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入MYSQL,然后鍵入以下命令: w, V;6lX   grant select,insert,update,delete on *.* to test1@"%" Identified by "abc"; @UbJ/ou   但例1增加的用戶是十分危險的,如果某人知道test1的密碼,那么他就可以在internet上的任何一臺電腦上登錄這臺mysql數(shù)據(jù)庫并對數(shù)據(jù)可以為所欲為了,解決辦法見例1。 <Uy}qT ^O   例1、增加一

27、個用戶test2密碼為abc,使其只可以在localhost上登錄,并可以對數(shù)據(jù)庫mydb進行查詢、插入、修改、刪除的操作(localhost指本地主機,即MYSQL數(shù)據(jù)庫所在的那臺主機),這樣用戶即使用知道test2的密碼,也無法從internet上直接訪問數(shù)據(jù)庫,只能通過MySQL主機上的web頁來訪問了。 4r5O! 4y   grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc"; KbE=* r(   如果你不想test2有

28、密碼,可以再打一個命令將密碼消掉。 o(V4f,TYjB   grant select,insert,update,delete on mydb.* to test2@localhost identified by ""; DmM/t)4   二、修改MySQL用戶的方法,這里講兩種方法 pz?7QmW   1) 以root登陸后直接用SQL語句修改系統(tǒng)庫mysql中的user表 ~0A"<@5A   [mysql@as4 mysql]$ mysql -u root –p(在命令行下用root身

29、份進入MySQL) :F.,5 n>=   mysql> use mysql; (選擇系統(tǒng)數(shù)據(jù)庫) A'$]uq S   mysql> update user set password=password('654321') where user='root' (將root用戶的密碼改成654321,注意要加函數(shù)password(),因為mysql中密碼是采用MD5算法進行加密的,如果不用該函數(shù)密碼將以明文存儲,這樣在登陸的時候系統(tǒng)把654321用MD5算法一計算后就跟表user中存出的654321密碼不一致了

30、,這樣你就登陸不了了) {+GLt!.60   mysql> flush privileges; (提交你的修改請求) T/w;4sSi/Z   KI,f,9xuX   2) 直接在bash shell命令行下用mysqladmin這個命令修改 aJ6"II   [mysql@as4 mysql]$ mysqladmin -u root -p654321 password 123456 OG$fmZ%|D&   (將來root用戶的密碼從654321修改為123456) =^*p#FM 

31、0; ZQVw&+2   J|Qxva   添加一個遠程管理MySQL的用戶 Um ?_wT#   [mysql@as4 ~]$ mysql { c$<O   mysql> grant all privileges on *.* to mysql@'192.168.0.0/255.255.0.0' identified by 'mysql'; bzshT);Ns   mysql> \q Q9FU]Q64   以上命令可以添加一個可以從

32、192.168.0.0/16IP段訪問MySQL服務器上所有數(shù)據(jù)庫的用戶,其中帳號是mysql,口令是mysql KQs:Y.S   rakT ~Dg   三、常用命令行操作 d( $R@uy   1 顯示命令 Q=Y{k!R%Li   1)顯示數(shù)據(jù)庫列表。 0me6:YiK   show databases; G;&6jUH:   剛開始時才兩個數(shù)據(jù)庫:mysql和test。mysql庫很重要它里面有MYSQL的系統(tǒng)信息,我們改密碼和新增用戶,實際上就是用這個庫進行操作。 /QgJWcnOm

33、   2)顯示庫中的數(shù)據(jù)表: *l1 _v!P     use mysql;   //打開庫,學過FOXBASE的一定不會陌生吧  ^|nv)     show tables; uv? -}O(   3)顯示數(shù)據(jù)表的結構: &o&LbC)m     describe 表名; L j7MrOa   4)顯示表中的記錄: Bq1B.L2?7@   select * from 表名; I7YfxK\ch   2 創(chuàng)建/刪除命

34、令 `s9Nm1[6>   1) 建庫: {$0H\,3,k   create database 庫名; \IM?=g\   2) 建表: q$~&j#g     use 庫名; \IG6P.@m^6     create table 表名 (字段設定列表); `+Z!0oi   3) 刪庫和刪表: ?INZ)PF6[&   drop database 庫名; 4B}qkv]   drop table 表名; W 9bUu0

35、  4) 將表中記錄清空: n$,$Xg1jq   delete from 表名; <%60c7u k   KM.sW@Oc   3 一個建庫和建表以及插入數(shù)據(jù)的實例 : M5\}   drop database if exists book; //如果存在book庫則刪除 lh$lR@ G=g   create database book;   //建立庫book cAX0kqRVI   use book;     //打開庫book kfMKsp=&#

36、39;m   create table storybook   //建立表storybook |DZh6]   ( -H:O{ #   id int(3) auto_increment not null primary key, zOl$UF0T5   name char(10) not null, ?!C9SOk   author varchar(50) default '張三', 7+Ko{KWv2   public_date date )7,"bVL &

37、#160; );         //建表結束 AD49 Q   //以下為插入字段   >>dtn">   insert into storybook values('','MySQL數(shù)據(jù)庫優(yōu)化','李四','2006-12-15'); x(jrWRZ   insert into storybook values('','精通PostgreSQL數(shù)據(jù)庫','

38、;王五','2006-09-11'); dEDn>5Sc   TJ@|+<R   注:在建表中 E Q|J'1K   (1)將id設為長度為3的數(shù)字字段:int(3)并讓它每個記錄自動加一:auto_increment并不能為空:not null而且讓他成為主字段primary key EfI= kY[E   (2)將name設為長度為10的字符字段 7h00{Beg   (3)將author設為長度50的字符字段,而且缺省值為張三。varchar和char有什么區(qū)別呢,簡

39、單說,varchar是不固定長度的字符串,char是固定長度的字符串。 { \]0SU   (4)將public_date設為日期字段。 3}?jpd*   如果在mysql提示符鍵入上面的命令也可以,但不方便調(diào)試??梢詫⒁陨厦钤瓨訉懭胍粋€文本文件中假設為book.sql,然后復制到/tmp下,并在命令行狀態(tài)進入目錄mysql/bin,然后鍵入以下命令: [+'g?BJB     mysql –u root -p密碼 < /tmp/book.sql Z<6W   如果成功,空出一行無任何顯示

40、;如有錯誤,會有提示。 Z/DF*f   T< FCy},w   4 將文本數(shù)據(jù)轉(zhuǎn)到數(shù)據(jù)庫中 ED`bj$L   1) 文本數(shù)據(jù)應符合的格式:字段數(shù)據(jù)之間用tab鍵隔開,null值用n來代替.  M*4|i   例: (G3{1j(mA5   5 Linux基礎教程 王五 2006-12-21 3 .Z=AD   6 Linux中級教材 張三 2006-12-11 k6ugN$W-z   2) 數(shù)據(jù)傳入命令 |WXB}'G/   use book; &#

41、160; 9 (!JJ;y   SELECT   *   FROM storybook   INTO   OUTFILE   '/tmp/myfile_name';   $2%4 Qu#   恢復的方法:   790|73Z   USE   book;    uZ+qAw&   LOAD   DATA   INFILE   '/tmp/myfile_name '  

42、; INTO   TABLE   book; .eG8LD1 K     注:該導出/導入方法僅僅是操作表中的數(shù)據(jù),并且導出表的導入表的字段個數(shù)和類型必須完全一樣。 JmN,N/   5T+< D<n',   四、導出/導入數(shù)據(jù) |!y`771   除了用mysqldump來導出MySQL數(shù)據(jù),還可以用 SQL 語法進行備份:BACKUP TABLE 或者 SELECT INTO OUTFILE,又或者備份二進制日志(binlog),還可以是直接拷貝數(shù)據(jù)文件和相關的配置文件。MyI

43、SAM 表是保存成文件的形式,因此相對比較容易備份,上面提到的幾種方法都可以使用。Innodb 所有的表都保存在同一個數(shù)據(jù)文件 ibdata1 中(也可能是多個文件,或者是獨立的表空間文件),相對來說比較不好備份,開源的方案可以是拷貝數(shù)據(jù)文件、備份 binlog,或者用 mysqldump。 q'x#GV4B   1) 導出 VFX ;tU   mysqldump 是采用SQL級別的備份機制,它將數(shù)據(jù)表導成 SQL 腳本文件,在不同的 MySQL 版本之間升級時相對比較合適,這也是最常用的備份方法。 gVznFL2y   現(xiàn)在來講一下

44、mysqldump 的一些主要參數(shù): ;t|K}w-n   --compatible=name ;:f)o=u`   它告訴 mysqldump,導出的數(shù)據(jù)將和哪種數(shù)據(jù)庫或哪個舊版本的 MySQL 服務器相兼容。值可以為 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要使用幾個值,用逗號將它們隔開。當然了,它并不保證能完全兼容,而是盡量兼容。 P[e vt%   p ^ g

45、   --complete-insert,-c kl\ |   導出的數(shù)據(jù)采用包含字段名的完整 INSERT 方式,也就是把所有的值都寫在一行。這么做能提高插入效率,但是可能會受到 max_allowed_packet 參數(shù)的影響而導致插入失敗。因此,需要謹慎使用該參數(shù),至少我不推薦。 3[<`iB"   I;Ne]w   --default-character-set=charset ]/?.6/y6   指定導出數(shù)據(jù)時采用何種字符集,如果數(shù)據(jù)表不是采用默認的 latin1 字符集的話

46、,那么導出時必須指定該選項,否則再次導入數(shù)據(jù)后將產(chǎn)生亂碼問題。 c^=Q0?p   x'u0uCc   --disable-keys ErM4HR>   告訴 mysqldump 在 INSERT 語句的開頭和結尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 語句,這能大大提高插入語句的速度,因為它是在插入完所有數(shù)據(jù)后才重建索引的。該選項只適合 MyISAM 表。 '@8KZ ]c

47、   _HU1R2+kb   --extended-insert = true|false !tU$Ly7   默認情況下,mysqldump 開啟 --complete-insert 模式,因此不想用它的的話,就使用本選項,設定它的值為 false 即可。 B\i Z*l   bt2Z^( ,   --hex-blob ?D`Me   使用十六進制格式導出二進制字符串字段。如果有二進制數(shù)據(jù)就必須使用本選項。影響到的字段類型有 BINARY、VARBINARY、BLOB。 !0 x5$l]p@ &#

48、160; @e;j Id   --lock-all-tables,-x GZsO!OoT#   在開始導出之前,提交請求鎖定所有數(shù)據(jù)庫中的所有表,以保證數(shù)據(jù)的一致性。這是一個全局讀鎖,并且自動關閉 --single-transaction 和 --lock-tables 選項。 *sSFvHT   (v7c|   --lock-tables 22q[dkd}3   它和 --lock-all-tables 類似,不過是鎖定當前導出的數(shù)據(jù)表,而不是一下子鎖定全部庫下的表。本選項只適用于 MyISAM 表,如果是

49、 Innodb 表可以用 --single-transaction 選項。  Vk*q&   *?# y.   --no-create-info,-t T^!<`;+0   只導出數(shù)據(jù),而不添加 CREATE TABLE 語句。 hY@i+GwC   T#:aK4\X%   --no-data,-d e@)gAptL   不導出任何數(shù)據(jù),只導出數(shù)據(jù)庫表結構。 Xz0JVeaQ   =) n;nm   --opt Fk.I  

50、這只是一個快捷選項,等同于同時添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 選項。本選項能讓 mysqldump 很快的導出數(shù)據(jù),并且導出的數(shù)據(jù)能很快導回。該選項默認開啟,但可以用 --skip-opt 禁用。注意,如果運行 mysqldump 沒有指定 --quick 或 --opt 選項,則會將整個結果集放在內(nèi)存中。如果導出大數(shù)據(jù)庫的話可能會出現(xiàn)問題。 4SNI((g   R

51、v N^^   --quick,-q SDW!].   該選項在導出大表時很有用,它強制 mysqldump 從服務器查詢?nèi)〉糜涗浿苯虞敵龆皇侨〉盟杏涗浐髮⑺鼈兙彺娴絻?nèi)存中。 }aNb[?@d   lGl#7   --routines,-R isU c5    導出存儲過程以及自定義函數(shù)。 Vc2Vyab   Sw %~CT!   --single-transaction WT<xuJDh =   該選項在導出數(shù)據(jù)之前提交一個 BEGIN SQL語句,B

52、EGIN 不會阻塞任何應用程序且能保證導出時數(shù)據(jù)庫的一致性狀態(tài)。它只適用于事務表,例如 InnoDB 和 BDB。 SrTAT+U*ec   本選項和 --lock-tables 選項是互斥的,因為 LOCK TABLES 會使任何掛起的事務隱含提交。 ^}GR?jd:   要想導出大表的話,應結合使用 --quick 選項。 sHQ_I79HW   !_fAx8<w   --triggers Ok[8k,   同時導出觸發(fā)器。該選項默認啟用,用 --skip-triggers 禁用它。 Px ifgXbA

53、  v]~yX/"   其他參數(shù)詳情請參考手冊,通常使用以下 SQL 來備份 MyISAM 表: r~{z.V C`   ,l! -dg/`x   /usr/local/mysql/bin/mysqldump -uyejr -pyejr \ T(p '|^   --default-character-set=utf8 --opt --extended-insert=false \ QbUjB>l   --triggers -R --hex-blob -x db_name >

54、db_name.sql +/F;d   使用以下 SQL 來備份 Innodb 表: V:oe?/X8   #gI,bNMt   /usr/local/mysql/bin/mysqldump -uyejr -pyejr \ 'W&ANd^_   --default-character-set=utf8 --opt --extended-insert=false \ #gs|k,yJ   --triggers -R --hex-blob --single-transaction db_name &

55、gt; db_name.sql M> w}P   另外,如果想要實現(xiàn)在線備份,還可以使用 --master-data 參數(shù)來實現(xiàn),如下: ;3-)Kn:y   HkWP%~^a   /usr/local/mysql/bin/mysqldump -umyuser -pmypasswd \ ~3bE#|w,   --default-character-set=utf8 --opt --master-data=1 \ gj*   --single-transaction --flush-logs db

56、_name > db_name.sql @]ih&   它只是在一開始的瞬間請求鎖表,然后就刷新binlog了,而后在導出的文件中加入CHANGE MASTER 語句來指定當前備份的binlog位置,如果要把這個文件恢復到slave里去,就可以采用這種方法來做。 +/{Wh{P Z   *x=PD%   2)導入 | ,],.5%D   用mysqldump 備份出來的文件是一個可以直接倒入的 SQL 腳本,有兩種方法可以將數(shù)據(jù)導入。  tGi4Gl   直接用 mysql 客戶端 ?sAj`

57、F3)   例如: ==Lb/w m   /usr/local/mysql/bin/mysql -umyuser -pmypasswd db_name < db_name.sql ;]p )Si4   @L`I~n3   用 SOURCE 語法 k I,w*   其實這不是標準的 SQL 語法,而是 mysql 客戶端提供的功能,例如: gt[<SNA   Xfdw"M0Y7~   SOURCE /tmp/db_name.sql; BdV ajM5  

58、 這里需要指定文件的絕對路徑,并且必須是 mysqld 運行用戶(例如 nobody)有權限讀取的文件。 [\r7/AL   + DV >F   3)SQL 語法備份 c;oNT[vM_   (1)備份 Hifgg,EGW   BACKUP TABLE 語法其實和 mysqlhotcopy 的工作原理差不多,都是鎖表,然后拷貝數(shù)據(jù)文件。它能實現(xiàn)在線備份,但是效果不理想,因此不推薦使用。它只拷貝表結構文件和數(shù)據(jù)文件,不同時拷貝索引文件,因此恢復時比較慢。 4s1lnU   例子: B2'3zd(

59、6   ~j;6X]3uz[   BACK TABLE tbl_name TO '/tmp/db_name/'; fctd^Z_Jw   注意,必須要有 FILE 權限才能執(zhí)行本SQL,并且目錄 /tmp/db_name/ 必須能被 mysqld 用戶可寫,導出的文件不能覆蓋已經(jīng)存在的文件,以避免安全問題。 d .& Kh K   I6TNO#S[zS   SELECT INTO OUTFILE 則是把數(shù)據(jù)導出來成為普通的文本文件,可以自定義字段間隔的方式,方便處理這些數(shù)據(jù)。 y?H=P|y{p 

60、0; 例子: L?d{_}xY   88T|HS2   SELECT * INTO OUTFILE '/tmp/db_name/tbl_name.txt' FROM tbl_name; D}E * 3\.)   注意,必須要有 FILE 權限才能執(zhí)行本SQL,并且文件 /tmp/db_name/tbl_name.txt 必須能被 mysqld 用戶可寫,導出的文件不能覆蓋已經(jīng)存在的文件,以避免安全問題。 #R tR.x+P   [fwyo32   (2)恢復 ~m-H6&|  

61、 用 BACKUP TABLE 方法備份出來的文件,可以運行 RESTORE TABLE 語句來恢復數(shù)據(jù)表。 S*8A!|`   例子: TCS82   Fzw?WrO   RESTORE TABLE FROM '/tmp/db_name/'; z"Z|~Wr7   權限要求類似上面所述。 zF*>!;!   I}PJ d@A   用 SELECT INTO OUTFILE 方法備份出來的文件,可以運行 LOAD DATA INFILE 語句來恢復數(shù)據(jù)表

62、。 NaL~Jl7d   例子: S |-( D   >FEn7a>   LOAD DATA INFILE '/tmp/db_name/tbl_name.txt' INTO TABLE tbl_name; Ne4\=A   權限要求類似上面所述。倒入數(shù)據(jù)之前,數(shù)據(jù)表要已經(jīng)存在才行。如果擔心數(shù)據(jù)會發(fā)生重復,可以增加 REPLACE 關鍵字來替換已有記錄或者用 IGNORE 關鍵字來忽略他們。 ;(]Ej8)mM   LfbIQ B   [MO(m~3o  

63、 4)簡易導入導出方法 7%)hg~   (1)導出數(shù)據(jù)庫:(命令在mysql/bin目錄下) }^vL f   mysqldump --opt book>book.bak //沒有設置密碼的時候  U3Nmy):1   mysqldump -u root –p123456 --opt book > book.bak //密碼被設置為123456的時候 &>DW3Y77   mysqldump --opt book storybook magazine > /tmp/book.storyboo

64、k.magazine.sql -:V {+   注釋:將數(shù)據(jù)庫book中的storybook表和magazine表備份到/tmp/book.storybook.magazine.sql文件,book.storybook.magazine.sql是一個文本文件,文件名任取,打開看看會有新發(fā)現(xiàn)。 UD[f;`pi"   備份的另外一種方法:(要有操作相應文件的權限。)   T% &+%   +O*   (2)從導出文件導入數(shù)據(jù): ^&lZfa%     導入

65、數(shù)據(jù)表 | fL?ed   mysql>source book.storybook.magazine.sql; ,E7mnP-MJ}     導入數(shù)據(jù)庫 *F0U.j"6   shell> mysqladmin -h localhost -u root -p123 create target_db_name tc( %|l`   shell> mysql -h localhost -u root -p123 target_db_name < 文件名 FPiH oFND@   (

66、xS+WXKv   注釋:將數(shù)據(jù)庫book備份到book.bak文件,book.bak是一個文本文件,文件名任取,打開看看會有新發(fā)現(xiàn)。 6o04N1<_,   qHKj*u   5)備份/恢復數(shù)據(jù)表 5rWy^"8fW8   (1)備份 G8/s^2    [mysql@as4 ~]$ mysqldump -u root -p --opt test storybook > /tmp/my1.bak pUG@-D?p+{   :%jf;@f   此命令是以root身份

67、把test數(shù)據(jù)庫中的storybook表結構和記錄備份到/tmp/my1.bak V24{g|w   ?!P,:\/ )   (2)恢復 J'}3hm2|+   [mysql@as4 ~]$ mysql -u root -p test < /tmp/my1.bak _ n8um4   F.g2/0.}   把剛才備份的storybook表結構和記錄文件my1.bak恢復到test數(shù)據(jù)庫中,表名還是storybook It\]1Fd'   j\dP@+   注

68、:如果恢復的時候是先將庫中的表刪除,然后在把表文件復制成表,存入數(shù)據(jù)庫 i%r\6jZ}%t   1.3.4 開機自動啟動MySQL方法 \S i@u   一、加到開機自動執(zhí)行文件中 +BzR7[Z   [root@as4 /]# vi /etc/rc.d/rc.local _=[\&   添加一行 _)I,hP   su - mysql -c "/opt/mysql-5.0.33/bin/mysqld_safe --no-defaults &" ;]u0f*JqC

69、  先切換成mysql用戶身份,然后在啟動MySQL服務。 ,89^XD]   TS_ An> yN   二、把MySQL作為系統(tǒng)的一個服務 u2tjo@>   先編輯一個mysql服務文件mysql5 K.:?k   把mysql5文件復制到/etc/rc.d/init.d/,并增加可執(zhí)行權限。 ~YJ' _d%   [root@as4 /]# chmod 755 /etc/init.d/mysql5 -ZG34wXOn   把mysql5添加到服務列表 A10o?

70、#ad   [root@as4 /]# chkconfig --add mysql5 TJ)9kOwx   然后選擇讓mysql5在開機的時候自動啟動 5*YWsFxEr   [root@as4 /]# chkconfig --level 3 mysql5 on UyAY]X\   AO mq?{&   MySQL作為系統(tǒng)服務的啟動腳本 {G}:8R~NP   [root@as4 ~]# vi /etc/init.d/mysql5 eom <>jn4   #!/bin/ba

71、sh SXi(B;aX   # + Zu   # Startup script for the MySQL 5.0.33 Server d qeW( (   # Ulm#<g0`l   # chkconfig: - 92 27 *3bgo5H~.   # description: MySQL server. Za\P]XD*&   F/u0`jBL   # processname: mysql5 1z/2Y>:   export MYSQL_B

72、ASE=/opt/mysql-5.0.33 )! 'OP,(   PROFILEDIR=/var/run/mysql +X&?/_+p<s   t"Amj=   start(){ /#zRf}`,}~     if [ -f $PROFILEDIR/MYSQL_PID ]; then 3mEg C     echo "MySQL Server has been Running!!" 8K&s6o@w   else }4q;A

73、|EJa     if [ -f $MYSQL_BASE/bin/mysqld_safe ]; then F aAuNign+       su - mysql -c "$MYSQL_BASE/bin/mysqld_safe --defaults-file=$MYSQL_BASE/f >/dev/null 2>&1 &" l7H;\}_vLO       sleep 3 s6^Gsx?DWV       head -n 1 $M

74、YSQL_BASE/data/as4.pid >$PROFILEDIR/MYSQL_PID \tX]0       echo "Startting MySQL" bG0zdh kK     else %1GjR';{g       echo "MySQL File Not Founds" 8s;Vu"7     fi r{Sfa'F}l   fi <+4@|u 

75、0; } 1d9.[;41P   stop() { TxCNiUU   if [ -f $PROFILEDIR/MYSQL_PID ]; then }GPyE.{)     # Stop the MySQL Server 5.0.33 pd t@iP     su - mysql -c "rm -f $PROFILEDIR/MYSQL_PID;$MYSQL_BASE/bin/mysqladmin shutdown -u root -S $MYSQL_BASE/tmp/mysql.sock;&quo

76、t; 9=e^ev: `     echo "Stopping MySQL" fF7rE'nO   else S/H@$Zq[     echo "Not Running MySQL" =`8idy)3[   fi <"F"p=*/}U   } ?[ka,r r   ,3&8qf;<v   restart() { 2d1*2>X>]   if [ -f $PROFIL

77、EDIR/MYSQL_PID ]; then +5S Gu\$X6     # Restart the MySQL Server ZT_1 OW     stop j8Nn&-}9     start -u\</ 6J   else sRMY[jEs     echo "Not Running MySQL" { F-i$p   fi LrApz0;m   } :XS"J1"   case "$1" in 8K89`8$OS     'start') hf4OOW9A"       # Start the MySQL Server 5.0.33 .o{buk       start MTT

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!