程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 詳解MySQL+Apache集群模式的實現

詳解MySQL+Apache集群模式的實現

編輯:MySQL綜合教程

環境:RedHat  AS3 U5

說明:如果不做說明,一般安裝命令均使用ROOT權限,用 # 表示;一般命令用$表示。

特別說明:無 

以下文章介紹Liunx 環境下的MySQL+Apache安全備份模式的實現方法

一、前言

目前,Linux系統+MySQL數據庫已成為眾多中小企業及個人搭建網站環境的首選,因為它是完全免費的,而且性能相當不錯。不過我見過的很多網站都是在單機上搭建此環境,然後購買價格相對較貴的備份產品及設備,其實如果我們熟悉一下apache和MySQL,把購買備份產品及設備的錢省下再買幾台服務器的話,完全可以解決問題。服務器只是個代詞,也可以根據你網站的規模選購性能好一點的PC機,都是沒有問題的)

二、MySQL+Apache安全備份模式圖

apache_mysql_97521120826901.gif

見圖1

從上圖我們可以看出,用戶通過訪問http LVS服務器,獲取Web服務,其實這個LVS服務器是個虛擬機,真正的Web服務是由這個虛擬機底下的兩個http服務器提供的,這樣,如果這兩個http服務器有一個有問題,那麼可以改變Lvs模式,只讓好的那台提供服務,為我們恢復故障節省了很多時間;而MySQL數據庫采用Master及Slave模式,避免由於單點故障而全盤皆輸的窘迫局面,建議訪問量較大的網站采用全服務器配置或至少LVS及MySQL服務器采用全服務器配置,而訪問量屬於中等偏下網站全部采用PC機都是沒有問題的。LVS服務器使用雙網卡eth0和eth1)。eth0為 虛擬服務器的IP地址公網IP),eth1為內網IP地址,其他均為內網地址,這樣可以更安全。

1_20301120826973.gif

 

2_67471120826989.gif
 3_38211120827046.gif

我們假定MySQL及http服務器均已安裝完成,並且在http服務器上跑的站點可以調用MySQL數據庫,MySQL主數據庫Master)為192.168.1.4,從數據庫(slave)為192.168.1.5,站點調用的數據庫名稱為hello。如果你不知道怎麼安裝apache及MySQL,請參閱我寫的《MySQL環境下安裝PHP504及apache2054》

三、實現方法

1)下載RedHat_Cluster_Suite.tgz軟件包,地址如下:

http://www.d-1701.com/tools/RedHat_Cluster_Suite.tgz

這個其實是redhat AS3自帶的拓展服務包,用RPM安裝也可以,但我們一般都只有前四張,後七張很少有人有,那我就把我手頭上這個安裝包給大家共享一下 :)

2)開啟系統vnc 服務並安裝

  1. # vncserver 

連入linux系統,開一個終端

  1. # cd /home/xuchen  
  2. # tar xzvf RedHat_Cluster_Suite.tgz  
  3. # cd RedHat_Cluster_Suite  
  4. # ./autorun 

這將開啟安裝界面,沒什麼好說,直接安裝就是了。

3)配置前的准備

修改集群服務器的IP轉發設置

  1. # /sbin/sysctl -w net.ipv4.ip_forward=1   

修改當前會話的值

  1. # vi /etc/sysctl.conf   
  2. net.ipv4.ip_forward = 1  

這樣下次重啟時設置可以自動生效

系統安裝上Red hat cluster suite 集群軟件後,使用一個名為Piranha的配置工具配置集群服務器,此配置工具使用 apache 作web Server 來提供基於web頁面的配置接口。此配置接口的web頁面站點的配置文件網頁文件及其他相關文件存放在/etc/sysconfig/ha/  目錄中。

  1. # vi /etc/sysconfig/ha/conf/httpd.conf  

配置接口頁面站點的相關參數。缺省的監聽端口是3636,你可以改成其他的端口

Listen 3636

訪問Piranha配置接口頁面需要有帳號和密碼,

帳號默認為piranha,用以下命令配置密碼

  1. # /usr/sbin/piranha-passwd   //設置 piranha 的登錄口令。  
  2. # /sbin/service piranha-gui start   //啟動Piranha配置接口頁面站點 

訪問http://Your’s IP:3636/ 登錄 Piranha。利用此頁面直接配置接口配置集群服務。

配置之前要明白的幾個概念:

虛擬服務器:用戶訪問http服務器(LVS服務器IP),感覺上就是訪問一台高效的服務器。此台“高效的服務器”,我們稱之為“虛擬服務器”,實際上就是這裡的集群服務器。

真實服務器:即真實提供服務的服務器,此類服務器可以有多台,而且可以增加。

4)配置LVS

選擇GLOBAL SETTINGS 選項卡。進行全局設置。

Primary server public IP: 211.100.1.1   集群服務器的外網ip

Primary server private IP::為空

本例中采用LVS NAT模式的集群,以下是集群的不同模式區別:

1.        Virtual Server via Network Address TranslationVS/NAT)

通過網絡地址轉換,調度器重寫請求報文的目標地址,根據預設的調度算法,將請求分派給後端的真實服務器;真實服務器的響應報文通過調度器時,報文的源地址被重寫,再返回給客戶,完成整個負載調度過程。

2.        Virtual Server via IP TunnelingVS/TUN)

采用NAT技術時,由於請求和響應報文都必須經過調度器地址重寫,當客戶請求越來越多時,調度器的處理能力將成為瓶頸。為了解決這個問題,調度器把請求報文通過IP隧道轉發至真實服務器,而真實服務器將響應直接返回給客戶,所以調度器只處理請求報文。由於一般網絡服務應答比請求報文大許多,采用VS/TUN技術後,集群系統的最大吞吐量可以提高10倍。

3.        Virtual Server via Direct RoutingVS/DR)

VS/DR通過改寫請求報文的MAC地址,將請求發送到真實服務器,而真實服務器將響應直接返回給客戶。同VS/TUN技術一樣,VS/DR技術可極大地提高集群系統的伸縮性。這種方法沒有IP隧道的開銷,對集群中的真實服務器也沒有必須支持IP隧道協議的要求,但是要求調度器與真實服務器都有一塊網卡連在同一物理網段上。

點擊NAT按鈕,出現NAT網絡設置:

NAT Router IP:192.168.1.2 NAT路徑名稱

NAT Router netmask:255.255.255.0  NAT掩碼

NAT Router device:eth1  NAT 路徑裝置

選擇VIRTUAL SERVERS 選項卡。

點擊ADD按鈕,添加虛擬服務器:

點擊EDIT按鈕,配置該虛擬服務器:

Name:http  此虛擬服務器的名,可以隨意,建議以提供的服務命名。

Application port:80   應用監聽端口。Web服務為80端口

Protocol:tcp   采用tcp協議通信

Virtual IP Address:211.100.1.1  此虛擬服務器的有效外網ip地址,供用戶訪問

Virtual IP Network Mask:255.255.255.0  此虛擬服務器的子網掩碼,請查看網卡設置。

Firewall Mask:空)

Device:eth0    外網通信網卡

Re-entry timeout:15  重入時間S)

Service timeoute:6   服務延時S)

Quiesce server:NO

Load monitoring tool:none  不加載監控工具

Scheduling:Weighted least-connections  調度策略權重最小連接)

Persistence:1440  持續性S)

Persistence Network Mask:255.255.255.0  持續性屏蔽

配置完畢,點擊ACCEPT將配置寫入配置文檔 /etc/sysconfig/ha/lvs.cf

如果想要讓同一個IP在一段時間內只訪問同一個真實服務器,就要設置Persistence 值,在這指定時間內,無論采用何種負載均衡算法,同一個IP都會訪問同一個真實服務器。

虛擬服務器配置完後,為此虛擬服務器添加真實服務器。

點擊子選項卡REAL SERVER:

點擊ADD按鈕添加真實服務器:

點擊EDIT按鈕配置此真實服務器:

Weight 為該真實服務器的權重。虛擬服務器按調度策略根據此設置值進行調度。

配置完點擊ACCEPT按鈕將配置寫入配置文檔 /etc/sysconfig/ha/lvs.cf 。

重新點擊子選項卡REAL SERVER可添加多個真實服務器。

點擊DE)ACTIVATE按鈕可使真實服務器生效UP)。不過建議在完成所有配置後再啟動。

點擊子選項卡MONITORING SCRIPTS :

配置發送和接收字符串,讓lvs確定real server是否存在。因為當前lvs模式有弊端,確定包文在網絡流量大的時候,會丟包,從而造成real server掉線的假象,所以現在采取腳本send.sh發送和確認,保證每次都能返回確認字符串。

/root/send.sh 的內容很簡單:

  1. #!/bin/sh  
  2. echo "http" 

echo 的內容就是期待的內容。

至此,已經為虛擬服務器添加完畢真實服務器。啟動真實服務器的apache服務。進入LVS配置的相關界面,點擊DE)ACTIVATE按鈕使設備UP起來。

  以上所有的配置結果都ACCEPT後,將寫入配置文件/etc/sysconfig/ha/lvs.cf 中。如果你熟悉了LVS 的配置,可以直接修改此配置文件,而不需要使用piranha配置工具。

  1. # /sbin/service piranha-gui stop  //關閉配置界面,增強安全性  
  2. # /sbin/service pulse start  //啟動lvs服務,此時進程列表裡應含用 pulse 和 lvs 的進程名。  
  3. # ipvsadm  //查看當前的路由表  
  4. IP Virtual Server version 1.0.8 (size=65536)  
  5. Prot LocalAddressort Scheduler Flags  
  6.   ->; RemoteAddressort           Forward Weight ActiveConn InActConn  
  7. TCP  211.100.1.1:http wlc persistent 1440 mask 255.255.255.0  
  8.   ->; 192.168.1.2:http           Masq    100    128        24929       
  9.   ->; 192.168.1.3:http           Masq    100    137        21351      

如果上述的192.168.1.2:http真實服務器顯示的是主機名而不是ip地址,為了加快路由轉發,把它們的主機名對應的ip解析加在了負載均衡器的/etc/hosts中。最好把每一個真實服務器的域名解析都放到此文件中。

當然你要把所有機器的apache都起來,如果有一個沒有起來,上面的列表中就會少一行。Lvs每隔一段時間會檢測一下真實服務器即上述的發包監控)。

  

注意!!!

如果修改了/etc/sysconfig/ha/lvs.cf無論是手工編輯還是通過Piranha)只有重新啟動pulse服務才會起作用。

實踐操作中,pulse服務起來之後如果被停止掉,它會把外網和內網的兩個網卡全部down掉,只好通過控制台再啟動兩個網卡和pulse服務。

所以在遠程控制lvs集群負載機的時候,如果要重新啟動pulse,應該直接reboot機器,以防止網卡down掉,無法訪問遠程機器。

改動當前的配置,還可以使用 ipvsadm直接修改內核路由表,相關操作命令請查閱ipvsadm的命令行幫助。

例如:假設當前已經有了websvr1192.168.1.2)和websvr2192.168.1.3)兩個真實服務器,擴容需要新增另外一台websvr3192.168.1.6)真實服務器。直接在/etc/sysconfig/ha/lvs.cf 中加入了websvr3的信息,但是無法立即生效,這時可以用以下命令:

ipvsadm -a -t 211.100.1.1:http -r 192.168.1.3:http -m -w 100

這樣就可以加入到內核路由表並立即生效。

以上就是一個典型的集群服務器的安裝和配置過程,大家可以參考配置自己的集群服務器。

5)配置MySQL數據庫的Master-Slave 模式

MySQL數據庫的Master-Slave機制

MySQL數據庫支持Master-Slave主從數據庫的集群模式。Slave (從)數據庫根據Master主)數據庫的日志文件master_log_file)及日志位置master_log_pos)實時從Master數據庫讀取數據,自動實現數據同步。

MySQL數據庫Master-Slave實現

①Slave數據庫服務器要擁有訪問Master資源的權限,因此首先要在Master上為Slave創建訪問帳號並賦予文檔復制權限。

  1. #MySQL -h192.168.1.4 –uroot –p –D hello  
  2. MySQL>;GRANT REPLICATION SLAVE ON *.* TO 'testbak'@'%' IDENTIFIED BY 'testbak';  

②根據MySQL數據庫的Master-Slave機制,Slave數據庫實施數據同步操作的依據是Master數據庫的日志文件及該日志文件的日志位置。因此,在為Master新增一台Slave服務器的時候要確保為Slave配置的參數master_log_file及master_log_pos)就是Master當前使用的日志文件及當前的操作節點。如果Master數據庫的數據一直處於運營狀態即有插入、修改、刪除等操作),將不能滿足上述要求。所以目前的維護操作是:系統擴容為Master增加一台Slave的時候,要停止整個業務系統,以停止對Master數據庫數據的讀寫操作,然後查看Master當前的日志文件及日志位置。

  1. #MySQL -h192.168.1.4 –uroot –p –D hello  
  2. MySQL>; show master status; 

有個改進的操作,可以將Master數據庫鎖住為只讀,防止數據的更新。此時不用停止業務系統,但用戶將不能進行信息修改、注冊等操作。待測試驗證)

③將與當前Master數據庫master_log_file、master_log_pos的值匹配的數據從Master拷貝到Slave上。可以采用MySQLdump方法,也可以直接拷貝數據文件。注意,拷貝數據之前要用

  1. # MySQLadmin –u root –p shutdown 

關閉主數據庫。這裡我們直接把數據文件壓縮為MySQL.tar.gz

④修改Master數據庫的配置文件

一般在/etc/my.cnf

以192.168.1.4 Master數據庫的配置文件為例:

修改/etc/my.cnf ,在[MySQLd]區段內加入參數

  1. # vi /etc/my.cnf  
  2. log-bin  
  3. server-id=1 
  4. sql-bin-update-same  
  5. binlog-do-db=hello 
  6. ******************************************************************************  
  7. # Example MySQL config file for very large systems.  
  8. #  
  9. # This is for large system with memory of 1G-2G where the system runs mainly  
  10. # MySQL.  
  11. #  
  12. # You can copy this file to  
  13. # /etc/my.cnf to set global options,  
  14. # MySQL-data-dir/my.cnf to set server-specific options (in this  
  15. # installation this directory is /usr/local/MySQL/var) or  
  16. # ~/.my.cnf to set user-specific options.  
  17. #  
  18. # One can in this file use all long options that the program supports.  
  19. # If you want to know which options a program support, run the program  
  20. # with --help option.  
  21.  
  22. # The following options will be passed to all MySQL clients  
  23. [client]  
  24. #password       = your_password 
  25. port            = 3306 
  26. socket          = /tmp/MySQL.sock  
  27.  
  28. # Here follows entries for some specific programs  
  29.  
  30. # The MySQL server  
  31. [MySQLd]  
  32. port            = 3306 
  33. socket          = /tmp/MySQL.sock  
  34. skip-locking  
  35. set-variable    = key_buffer=384M  
  36. set-variable    = max_allowed_packet=1M  
  37. set-variable    = table_cache=512  
  38. set-variable    = sort_buffer=2M  
  39. set-variable    = record_buffer=2M  
  40. set-variable    = thread_cache=8  
  41. # Try number of CPU's*2 for thread_concurrency  
  42. set-variable    = thread_concurrency=8  
  43. set-variable    = myisam_sort_buffer_size=64M  
  44.  
  45. log-bin  
  46. server-id       = 1 
  47. sql-bin-update-same  
  48. binlog-do-db=hello 
  49.  
  50. # Replication Master Server (default)  
  51. #log-bin             # required for replication  
  52. #server-id      = 1   # required unique id between 1 and 2^32 - 1  
  53.                     # defaults to 1 if master-host is not set  
  54.                     # but will not function as a master if omitted  
  55.  
  56. # Replication Slave Server (comment out master section to use this)  
  57. #master-host     =   # MUST BE SET  
  58. #master-user     =   # MUST BE SET  
  59. #master-password =   # MUST BE SET  
  60. #master-port     =   # optional--defaults to 3306  
  61. #log-bin             # not required for slaves, but recommended  
  62. #server-id       = 2 # required unique id between 2 and 2^32 - 1  
  63.                     # (and different from the master)  
  64.                     # defaults to 2 if master-host is set  
  65.                     # but will not function as a slave if omitted  
  66.  
  67. # Point the following paths to different dedicated disks  
  68. #tmpdir         = /tmp/  
  69. #log-update     = /path-to-dedicated-directory/hostname  
  70.  
  71. # Uncomment the following if you are using BDB tables  
  72. #set-variable   = bdb_cache_size=384M  
  73. #set-variable   = bdb_max_lock=100000  
  74.  
  75. # Uncomment the following if you are using InnoDB tables  
  76. #innodb_data_home_dir = /usr/local/MySQL/var/  
  77. #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend  
  78. #innodb_log_group_home_dir = /usr/local/MySQL/var/  
  79. #innodb_log_arch_dir = /usr/local/MySQL/var/  
  80. # You can set .._buffer_pool_size up to 50 - 80 %  
  81. # of RAM but beware of setting memory usage too high  
  82. #set-variable = innodb_buffer_pool_size=384M  
  83. #set-variable = innodb_additional_mem_pool_size=20M  
  84. # Set .._log_file_size to 25 % of buffer pool size  
  85. #set-variable = innodb_log_file_size=100M  
  86. #set-variable = innodb_log_buffer_size=8M  
  87. #innodb_flush_log_at_trx_commit=1 
  88. #set-variable = innodb_lock_wait_timeout=50  
  89.  
  90. [MySQLdump]  
  91. quick  
  92. set-variable    = max_allowed_packet=16M  
  93.  
  94. [MySQL]  
  95. no-auto-rehash  
  96. # Remove the next comment character if you are not familiar with SQL  
  97. #safe-updates  
  98.  
  99. [isamchk]  
  100. set-variable    = key_buffer=256M  
  101. set-variable    = sort_buffer=256M  
  102. set-variable    = read_buffer=2M  
  103. set-variable    = write_buffer=2M  
  104.  
  105. [myisamchk]  
  106. set-variable    = key_buffer=256M  
  107. set-variable    = sort_buffer=256M  
  108. set-variable    = read_buffer=2M  
  109. set-variable    = write_buffer=2M  
  110.  
  111. [MySQLhotcopy]  
  112. interactive-timeout  
  113.  
  114. ********************************************************************* 

⑤修改Slave數據庫的配置文件

以192.168.1.5 Slave數據庫的配置文件為例

修改/etc/my.cnf ,在[MySQLd]區段內加入參數

  1. # vi /etc/my.cnf  
  2. master-host=192.168.1.3  
  3. master-user=testbak 
  4. master-password=**** //自己指定  
  5. master-port=3306 
  6. server-id=2 
  7. master-connect-retry=60 預設重試間隔60秒   
  8. replicate-do-db=hello 告訴slave只做ephd數據庫的更新   
  9. log-slave-updates  
  10.  
  11. *******************************************************************************  
  12. # Example MySQL config file for very large systems.  
  13. #  
  14. # This is for large system with memory of 1G-2G where the system runs mainly  
  15. # MySQL.  
  16. #  
  17. # You can copy this file to  
  18. # /etc/my.cnf to set global options,  
  19. # MySQL-data-dir/my.cnf to set server-specific options (in this  
  20. # installation this directory is /usr/local/MySQL/var) or  
  21. # ~/.my.cnf to set user-specific options.  
  22. #  
  23. # One can in this file use all long options that the program supports.  
  24. # If you want to know which options a program support, run the program  
  25. # with --help option.  
  26.  
  27. # The following options will be passed to all MySQL clients  
  28. [client]  
  29. #password       = your_password 
  30. port            = 3306 
  31. socket          = /tmp/MySQL.sock  
  32.  
  33. # Here follows entries for some specific programs  
  34.  
  35. # The MySQL server  
  36. [MySQLd]  
  37. port            = 3306 
  38. socket          = /tmp/MySQL.sock  
  39. skip-locking  
  40. set-variable    = key_buffer=384M  
  41. set-variable    = max_allowed_packet=1M  
  42. set-variable    = table_cache=512  
  43. set-variable    = sort_buffer=2M  
  44. set-variable    = record_buffer=2M  
  45. set-variable    = thread_cache=8  
  46. # Try number of CPU's*2 for thread_concurrency  
  47. set-variable    = thread_concurrency=8  
  48. set-variable    = myisam_sort_buffer_size=64M  
  49. master-host=192.168.1.3  
  50. master-user=testbak 
  51. master-password=testbak 
  52. master-port=3306 
  53. server-id=2 
  54. master-connect-retry=60   
  55. replicate-do-db=hello 
  56. log-slave-updates  
  57.  
  58. # Point the following paths to different dedicated disks  
  59. #tmpdir         = /tmp/  
  60. #log-update     = /path-to-dedicated-directory/hostname  
  61.  
  62. # Uncomment the following if you are using BDB tables  
  63. #set-variable   = bdb_cache_size=384M  
  64. #set-variable   = bdb_max_lock=100000  
  65.  
  66. # Uncomment the following if you are using InnoDB tables  
  67. #innodb_data_home_dir = /usr/local/MySQL/var/  
  68. #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend  
  69. #innodb_log_group_home_dir = /usr/local/MySQL/var/  
  70. #innodb_log_arch_dir = /usr/local/MySQL/var/  
  71. # You can set .._buffer_pool_size up to 50 - 80 %  
  72. # of RAM but beware of setting memory usage too high  
  73. #set-variable = innodb_buffer_pool_size=384M  
  74. #set-variable = innodb_additional_mem_pool_size=20M  
  75. # Set .._log_file_size to 25 % of buffer pool size  
  76. #set-variable = innodb_log_file_size=100M  
  77. #set-variable = innodb_log_buffer_size=8M  
  78. #innodb_flush_log_at_trx_commit=1 
  79. #set-variable = innodb_lock_wait_timeout=50  
  80.  
  81. [MySQLdump]  
  82. quick  
  83. set-variable    = max_allowed_packet=16M  
  84.  
  85. [MySQL]  
  86. no-auto-rehash  
  87. # Remove the next comment character if you are not familiar with SQL  
  88. #safe-updates  
  89.  
  90. [isamchk]  
  91. set-variable    = key_buffer=256M  
  92. set-variable    = sort_buffer=256M  
  93. set-variable    = read_buffer=2M  
  94. set-variable    = write_buffer=2M  
  95.  
  96. [myisamchk]  
  97. set-variable    = key_buffer=256M  
  98. set-variable    = sort_buffer=256M  
  99. set-variable    = read_buffer=2M  
  100. set-variable    = write_buffer=2M  
  101.  
  102. [MySQLhotcopy]  
  103. interactive-timeout  
  104.  
  105. ******************************************************************** 

配置完畢,重啟主數據庫,由於配置文件中加入了log-bin參數,因此開始有index產生,在/var/lib/MySQL目錄下有.index檔案紀錄數據庫的異常log。

配置Slave數據庫

將192.168.1.4 master 的備份MySQL.tar.gz復制到192.168.1.5 slave上

  1. #cd /var/lib/   
  2. #tar xzvf  MySQL.tar.gz   
  3. #chown –R MySQL:MySQL MySQL 

配置一般在MySQL命令行下進行。

  1. #MySQL -h192.168.1.5 –uroot –p   
  2. MySQL>; change master to master_log_file='ephdb05-bin.003',master_log_pos=169; 

啟動Slave數據庫:

  1. MySQL>; start slave;  
  2. MySQL>; show slave status; 

查看Slave數據同步操作的依據Master_Log_File,Read_Master_Log_Pos是否與當前Master的一致。這時在/var/lib/MySQL目錄會出現master.info,此檔案紀錄了Master MySQL server的信息。 

數據庫優化

采用了blob的數據類型,長時間運行會造成數據碎片,需要進行整理。

在處理數據優化前,需要關閉MySQL服務。

/usr/local/MySQL/bin/MySQLadmin shutdown

修復和整理數據庫

/usr/local/MySQL/bin/myisamchk -r /usr/local/MySQL/var/hello/1_tbl

對第一個索引進行重索引

/usr/local/MySQL/bin/myisamchk -R 1 /usr/local/MySQL/var/hello/1_tbl

將索引按照倒序排序,加快檢索速度

/usr/local/MySQL/bin/myisamchk -S /usr/local/MySQL/var/hello/1_tbl

對數據庫關聯優化

/usr/local/MySQL/bin/myisamchk -a /usr/local/MySQL/var/hello/1_tbl

其他數據庫、表的操作類似)

四、總結

Ppache+PHP+MySQL越來越多被應用於網站建設,如何才能更安全,更有效的保護好數據是系統管理員的頭等大事,希望能有越來越多的好工具,好方法,好思路來協助我們做好這個工作,而且我堅信,以後的路是越走越寬的,套用老話結束這個文章------技術無極限!!  

編輯推薦】 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved