മരിയാഡിബി ഡാറ്റാബേസ് സെർവറിന്റെ ഇൻസ്റ്റാളും സുരക്ഷിതവും പെർഫോമൻസ് ട്യൂണിംഗും എങ്ങനെ


ഇന്നത്തെ ആപ്ലിക്കേഷനുകൾക്ക് ആവശ്യമായ നെറ്റ്uവർക്ക് ഇൻഫ്രാസ്ട്രക്ചറിന്റെ നിർണായക ഘടകമാണ് ഡാറ്റാബേസ് സെർവർ. ഡാറ്റ സംഭരിക്കാനും വീണ്ടെടുക്കാനും അപ്uഡേറ്റ് ചെയ്യാനും ഇല്ലാതാക്കാനുമുള്ള കഴിവില്ലെങ്കിൽ (ആവശ്യമുള്ളപ്പോൾ), വെബ്, ഡെസ്uക്uടോപ്പ് ആപ്പുകളുടെ ഉപയോഗവും വ്യാപ്തിയും വളരെ പരിമിതമായിരിക്കും.

കൂടാതെ, ഒരു ഡാറ്റാബേസ് സെർവർ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും മാനേജ് ചെയ്യാമെന്നും കോൺഫിഗർ ചെയ്യാമെന്നും അറിയുന്നത് (അത് പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കും) ഓരോ സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർക്കും ഉണ്ടായിരിക്കേണ്ട ഒരു പ്രധാന വൈദഗ്ധ്യമാണ്.

ഈ ലേഖനത്തിൽ ഒരു മരിയാഡിബി ഡാറ്റാബേസ് സെർവർ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും സുരക്ഷിതമാക്കാമെന്നും ഞങ്ങൾ ഹ്രസ്വമായി അവലോകനം ചെയ്യും, തുടർന്ന് അത് എങ്ങനെ ക്രമീകരിക്കാമെന്ന് ഞങ്ങൾ വിശദീകരിക്കും.

ഒരു MariaDB സെർവർ ഇൻസ്റ്റാൾ ചെയ്യുകയും സുരക്ഷിതമാക്കുകയും ചെയ്യുന്നു

CentOS 7.x-ൽ, MariaDB MySQL-നെ മാറ്റിസ്ഥാപിച്ചു, അത് ഇപ്പോഴും ഉബുണ്ടുവിൽ (MiaDB-യ്uക്കൊപ്പം) കാണാം. OpenSUSE ന്റെ കാര്യത്തിലും ഇതുതന്നെ സത്യമാണ്.

സംക്ഷിപ്തതയ്ക്കായി, ഈ ട്യൂട്ടോറിയലിൽ ഞങ്ങൾ MariaDB മാത്രമേ ഉപയോഗിക്കൂ, എന്നാൽ വ്യത്യസ്ത പേരുകളും വികസന തത്വശാസ്ത്രങ്ങളും കൂടാതെ, റിലേഷണൽ ഡാറ്റാബേസ് മാനേജ്മെന്റ് സിസ്റ്റങ്ങളും (ചുരുക്കത്തിൽ RDBMSs) ഏതാണ്ട് സമാനമാണെന്ന കാര്യം ശ്രദ്ധിക്കുക.

MySQL, MariaDB എന്നിവയിൽ ക്ലയന്റ്-സൈഡ് കമാൻഡുകൾ ഒന്നുതന്നെയാണെന്നും കോൺഫിഗറേഷൻ ഫയലുകൾ ഒരേ സ്ഥലങ്ങളിൽ പേരിടുകയും സ്ഥിതിചെയ്യുകയും ചെയ്യുന്നു എന്നാണ് ഇതിനർത്ഥം.

MariaDB ഇൻസ്റ്റാൾ ചെയ്യാൻ, ചെയ്യുക:

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# yum update && yum install mariadb mariadb-server # CentOS 

--------------- On Debian and Ubuntu --------------- 
$ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server 

--------------- On openSUSE --------------- 
# zypper update && zypper install mariadb mariadb-tools # openSUSE

ശ്രദ്ധിക്കുക, ഉബുണ്ടുവിൽ, RDBMS റൂട്ട് ഉപയോക്താവിനായി ഒരു പാസ്uവേഡ് നൽകാൻ നിങ്ങളോട് ആവശ്യപ്പെടും.

മുകളിലുള്ള പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, ഡാറ്റാബേസ് സേവനം പ്രവർത്തിക്കുന്നുണ്ടെന്നും അത് ബൂട്ടിൽ ആരംഭിക്കാൻ സജീവമാക്കിയിട്ടുണ്ടെന്നും ഉറപ്പാക്കുക (CentOS, openSUSE എന്നിവയിൽ നിങ്ങൾ ഈ പ്രവർത്തനം സ്വമേധയാ നടത്തേണ്ടതുണ്ട്, അതേസമയം ഉബുണ്ടുവിൽ ഇൻസ്റ്റാളേഷൻ പ്രക്രിയ ഇതിനകം തന്നെ ശ്രദ്ധിച്ചിരിക്കും. നിനക്കായ്):

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# systemctl start mariadb && systemctl enable mariadb 

--------------- On openSUSE --------------- 
# systemctl start mysql && systemctl enable mysql

തുടർന്ന് mysql_secure_installation സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കുക. ഈ പ്രക്രിയ നിങ്ങളെ അനുവദിക്കും:

  1. RDBMS റൂട്ട് ഉപയോക്താവിനായി പാസ്uവേഡ് സജ്ജമാക്കുക/പുനഃസജ്ജമാക്കുക
  2. അജ്ഞാത ലോഗിനുകൾ നീക്കം ചെയ്യുക (അങ്ങനെ സാധുവായ അക്കൗണ്ടുള്ള ഉപയോക്താക്കളെ മാത്രം RDBMS-ൽ ലോഗിൻ ചെയ്യാൻ പ്രാപ്തരാക്കുന്നു)
  3. ലോക്കൽ ഹോസ്റ്റ് ഒഴികെയുള്ള മെഷീനുകൾക്കുള്ള റൂട്ട് ആക്സസ് അപ്രാപ്തമാക്കുക
  4. ടെസ്റ്റ് ഡാറ്റാബേസ് നീക്കം ചെയ്യുക (ആർക്കും ആക്സസ് ചെയ്യാൻ കഴിയുന്നത്)
  5. 1 മുതൽ 4 വരെയുള്ള മാറ്റങ്ങൾ സജീവമാക്കുക.

ഈ പ്രക്രിയയെക്കുറിച്ചുള്ള കൂടുതൽ വിശദമായ വിവരണത്തിന്, നിങ്ങൾക്ക് RHEL/CentOS/Fedora, Debian/Ubuntu എന്നിവയിലെ Install MariaDB ഡാറ്റാബേസിലെ പോസ്റ്റ് ഇൻസ്റ്റലേഷൻ വിഭാഗം നോക്കാവുന്നതാണ്.

MariaDB സെർവർ കോൺഫിഗർ ചെയ്യുന്നു

തന്നിരിക്കുന്ന ക്രമത്തിൽ ഇനിപ്പറയുന്ന ഫയലുകളിൽ നിന്ന് ഡിഫോൾട്ട് കോൺഫിഗറേഷൻ ഓപ്uഷനുകൾ വായിക്കുന്നു: /etc/mysql/my.cnf, /etc/my.cnf, ~ /.my.cnf.

മിക്കപ്പോഴും, /etc/my.cnf മാത്രമേ നിലവിലുള്ളൂ. ഈ ഫയലിലാണ് ഞങ്ങൾ സെർവർ-വൈഡ് ക്രമീകരണങ്ങൾ സജ്ജമാക്കുന്നത് (ഓരോ ഉപയോക്താവിനും ~/.my.cnf എന്നതിലെ അതേ ക്രമീകരണങ്ങൾ ഉപയോഗിച്ച് ഇത് അസാധുവാക്കാവുന്നതാണ്).

my.cnf നെ കുറിച്ച് നമ്മൾ ആദ്യം ശ്രദ്ധിക്കേണ്ട കാര്യം, ക്രമീകരണങ്ങൾ വിഭാഗങ്ങളായി (അല്ലെങ്കിൽ ഗ്രൂപ്പുകളായി) ക്രമീകരിച്ചിരിക്കുന്നു എന്നതാണ്, അവിടെ ഓരോ വിഭാഗത്തിന്റെ പേരും ചതുര ബ്രാക്കറ്റുകളാൽ ഘടിപ്പിച്ചിരിക്കുന്നു.

സെർവർ സിസ്റ്റം കോൺഫിഗറേഷനുകൾ [mysqld] വിഭാഗത്തിൽ നൽകിയിരിക്കുന്നു, ഇവിടെ സാധാരണയായി താഴെയുള്ള പട്ടികയിൽ ആദ്യത്തെ രണ്ട് ക്രമീകരണങ്ങൾ മാത്രമേ നിങ്ങൾക്ക് കാണാനാകൂ. ബാക്കിയുള്ളവ പതിവായി ഉപയോഗിക്കുന്ന മറ്റ് ഓപ്uഷനുകളാണ് (സൂചിപ്പിച്ചിരിക്കുന്നിടത്ത്, ഞങ്ങൾ തിരഞ്ഞെടുത്ത ഒരു ഇഷ്uടാനുസൃതം ഉപയോഗിച്ച് ഞങ്ങൾ സ്ഥിരസ്ഥിതി മൂല്യം മാറ്റും):

സേവനത്തിന്റെ പ്രധാന വിലാസത്തിൽ മാത്രം കേൾക്കാൻ നിർദ്ദേശിക്കുന്നതിന് ഞങ്ങൾ ഇത് മാറ്റും (192.168.0.13):

bind_address=192.168.0.13 bind_address=0.0.0.0 പോർട്ട് എന്നത് ഡാറ്റാബേസ് സെർവർ കേൾക്കുന്ന പോർട്ടിനെ പ്രതിനിധീകരിക്കുന്നു.

ഞങ്ങൾ സ്ഥിര മൂല്യം (3306) 20500 ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കും (എന്നാൽ മറ്റൊന്നും ആ പോർട്ട് ഉപയോഗിക്കുന്നില്ലെന്ന് ഞങ്ങൾ ഉറപ്പാക്കേണ്ടതുണ്ട്):
പോർട്ട്=20500

അവ്യക്തതയിലൂടെയുള്ള സുരക്ഷ നല്ല രീതിയല്ലെന്ന് ചിലർ വാദിക്കുമ്പോൾ, ഉയർന്നവയ്ക്കായി ഡിഫോൾട്ട് ആപ്ലിക്കേഷൻ പോർട്ടുകൾ മാറ്റുന്നത് പോർട്ട് സ്കാനുകളെ നിരുത്സാഹപ്പെടുത്തുന്നതിനുള്ള അടിസ്ഥാനപരമായ -എന്നിട്ടും ഫലപ്രദമായ- രീതിയാണ്. port=3306 innodb_buffer_pool_size എന്നത് മെമ്മറിയുടെ ബഫർ പൂളാണ് (ബൈറ്റുകളിൽ) Innodb (മരിയാഡിബിയിലെ സ്ഥിരസ്ഥിതിയാണ്) അല്ലെങ്കിൽ എക്uസ്ട്രാഡിബി സ്റ്റോറേജ് എഞ്ചിനായി ഉപയോഗിക്കുമ്പോൾ പതിവായി ആക്uസസ്സുചെയ്യുന്ന ഡാറ്റയ്ക്കും സൂചികകൾക്കുമായി അനുവദിച്ചിരിക്കുന്നു.

ഞങ്ങൾ സ്ഥിര മൂല്യം 256 MB ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കും:

innodb_buffer_pool_size=256M innodb_buffer_pool_size=134217728 skip_name_resolve എന്നത് ഇൻകമിംഗ് കണക്ഷനുകളിൽ ഹോസ്റ്റ്നാമങ്ങൾ പരിഹരിക്കപ്പെടുമോ ഇല്ലയോ എന്ന് സൂചിപ്പിക്കുന്നു. . ഈ ഗൈഡിൽ നമ്മൾ ചെയ്യുന്നത് പോലെ 1 ആയി സജ്ജീകരിക്കുകയാണെങ്കിൽ, IP വിലാസങ്ങൾ മാത്രം.

അനുമതികൾ നിർണ്ണയിക്കാൻ നിങ്ങൾക്ക് ഹോസ്റ്റ്നാമങ്ങൾ ആവശ്യമില്ലെങ്കിൽ, ഈ വേരിയബിളിന്റെ മൂല്യം 1 ആയി സജ്ജീകരിച്ച് (കണക്ഷനുകളും അന്വേഷണങ്ങളും വേഗത്തിലാക്കാൻ) പ്രവർത്തനരഹിതമാക്കുന്നത് ഉചിതമാണ്:

skip_name_resolve=1 skip_name_resolve=0 query_cache_size എന്നത് അന്വേഷണത്തിന് ലഭ്യമായ വലുപ്പത്തെ (ബൈറ്റുകളിൽ) പ്രതിനിധീകരിക്കുന്നു ഡിസ്കിലെ കാഷെ, SELECT ചോദ്യങ്ങളുടെ ഫലങ്ങൾ ഭാവിയിലെ ഉപയോഗത്തിനായി സംഭരിക്കപ്പെടുമ്പോൾ, സമാനമായ ഒരു ചോദ്യം (ഒരേ ഡാറ്റാബേസിലേക്കും ഒരേ പ്രോട്ടോക്കോളും ഒരേ പ്രതീക സെറ്റും ഉപയോഗിച്ച്) നടത്തുമ്പോൾ.

1) ആവർത്തിച്ചുള്ള അന്വേഷണങ്ങളുടെ എണ്ണം, 2) ആവർത്തിച്ചുള്ള അന്വേഷണങ്ങൾ തിരികെ ലഭിക്കുമെന്ന് പ്രതീക്ഷിക്കുന്ന റെക്കോർഡുകളുടെ ഏകദേശ എണ്ണം എന്നിവ അടിസ്ഥാനമാക്കി നിങ്ങളുടെ ആവശ്യങ്ങളുമായി പൊരുത്തപ്പെടുന്ന ഒരു അന്വേഷണ കാഷെ വലുപ്പം നിങ്ങൾ തിരഞ്ഞെടുക്കണം. ഞങ്ങൾ ഈ മൂല്യം തൽക്കാലം 100 MB ആയി സജ്ജീകരിക്കും:

query_cache_size=100M query_cache_size=0 (അതായത് ഇത് സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു) max_connections എന്നത് സെർവറിലേക്കുള്ള ഒരേസമയം ക്ലയന്റ് കണക്ഷനുകളുടെ പരമാവധി എണ്ണമാണ് . ഞങ്ങൾ ഈ മൂല്യം 30:
ആയി സജ്ജീകരിക്കും max_connections=30ഓരോ കണക്ഷനും ഒരു ത്രെഡ് ഉപയോഗിക്കും, അങ്ങനെ മെമ്മറി ഉപയോഗിക്കും. max_connections സജ്ജീകരിക്കുമ്പോൾ ഈ വസ്തുത കണക്കിലെടുക്കുക. max_connections=151 thread_cache_size എന്നത് സെർവർ പുനരുപയോഗത്തിനായി അനുവദിക്കുന്ന ത്രെഡുകളുടെ എണ്ണത്തെ സൂചിപ്പിക്കുന്നു ഒരു ക്ലയന്റ് വിച്ഛേദിക്കുകയും മുമ്പ് ഉപയോഗത്തിലിരുന്ന ത്രെഡ്(കൾ) സ്വതന്ത്രമാക്കുകയും ചെയ്ത ശേഷം. ഈ സാഹചര്യത്തിൽ, ഒരു ത്രെഡ് പുനരുപയോഗിക്കുന്നത് പുതിയത് തൽക്ഷണം ചെയ്യുന്നതിനേക്കാൾ വിലകുറഞ്ഞതാണ് (പ്രകടനം അനുസരിച്ച്).

വീണ്ടും, ഇത് നിങ്ങൾ പ്രതീക്ഷിക്കുന്ന കണക്ഷനുകളുടെ എണ്ണത്തെ ആശ്രയിച്ചിരിക്കുന്നു. ഞങ്ങൾക്ക് ഈ മൂല്യം max_connection കളുടെ പകുതിയായി സുരക്ഷിതമായി സജ്ജമാക്കാൻ കഴിയും:

thread_cache_size=15 thread_cache_size=0 (സ്ഥിരമായി പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു) CentOS-ൽ, സേവനം പുനരാരംഭിക്കുന്നതിന് മുമ്പ്, നിലവാരമില്ലാത്ത ഒരു പോർട്ടിൽ (20500) കേൾക്കാൻ MariaDB-നെ അനുവദിക്കാൻ ഞങ്ങൾ SELinux-നോട് പറയേണ്ടതുണ്ട്:

# yum install policycoreutils-python
# semanage port -a -t mysqld_port_t -p tcp 20500

തുടർന്ന് MariaDB സേവനം പുനരാരംഭിക്കുക.

മരിയാഡിബി പ്രകടനം ട്യൂണിംഗ്

ഞങ്ങളുടെ നിർദ്ദിഷ്ട ആവശ്യങ്ങൾക്കനുസരിച്ച് കോൺഫിഗറേഷൻ പരിശോധിക്കുന്നതിനും ട്യൂൺ ചെയ്യുന്നതിനും ഞങ്ങളെ സഹായിക്കുന്നതിന്, ഞങ്ങൾക്ക് mysqltuner (ഞങ്ങളുടെ ഡാറ്റാബേസ് സെർവറിന്റെ പ്രകടനം മെച്ചപ്പെടുത്തുന്നതിനും അതിന്റെ സ്ഥിരത വർദ്ധിപ്പിക്കുന്നതിനുമുള്ള നിർദ്ദേശങ്ങൾ നൽകുന്ന ഒരു സ്uക്രിപ്റ്റ്) ഇൻസ്റ്റാൾ ചെയ്യാം:

# wget https://github.com/major/MySQLTuner-perl/tarball/master
# tar xzf master

ടാർബോളിൽ നിന്ന് വേർതിരിച്ചെടുത്ത ഫോൾഡറിലേക്ക് ഡയറക്ടറി മാറ്റുക (നിങ്ങളുടെ കാര്യത്തിൽ കൃത്യമായ പതിപ്പ് വ്യത്യാസപ്പെടാം):

# cd major-MySQLTuner-perl-7dabf27

അത് പ്രവർത്തിപ്പിക്കുക (നിങ്ങളുടെ അഡ്മിനിസ്ട്രേറ്റീവ് MariaDB അക്കൗണ്ടിന്റെ ക്രെഡൻഷ്യലുകൾ നൽകാൻ നിങ്ങളോട് ആവശ്യപ്പെടും)

# ./mysqltuner.pl

സ്uക്രിപ്റ്റിന്റെ ഔട്ട്uപുട്ട് വളരെ രസകരമാണ്, എന്നാൽ ക്രമീകരിക്കേണ്ട വേരിയബിളുകൾ ശുപാർശ ചെയ്uത മൂല്യത്തിനൊപ്പം ലിസ്uറ്റ് ചെയ്uതിരിക്കുന്ന അടിയിലേക്ക് പോകാം:

query_cache_type ക്രമീകരണം അന്വേഷണ കാഷെ പ്രവർത്തനരഹിതമാക്കിയിട്ടുണ്ടോ (0) അല്ലെങ്കിൽ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടോ എന്ന് സൂചിപ്പിക്കുന്നു (1). ഈ സാഹചര്യത്തിൽ, ഇത് പ്രവർത്തനരഹിതമാക്കാൻ mysqltuner ഞങ്ങളെ ഉപദേശിക്കുന്നു.

അപ്പോൾ എന്തിനാണ് ഇപ്പോൾ ഇത് നിർജ്ജീവമാക്കാൻ ഞങ്ങൾ നിർദ്ദേശിക്കുന്നത്? കാരണം, അന്വേഷണ കാഷെ കൂടുതലും ഉയർന്ന വായന/കുറഞ്ഞ എഴുത്ത് സാഹചര്യങ്ങളിൽ ഉപയോഗപ്രദമാണ് (അത് ഞങ്ങളുടെ കാര്യമല്ല, കാരണം ഞങ്ങൾ ഡാറ്റാബേസ് സെർവർ ഇൻസ്റ്റാൾ ചെയ്തതിനാൽ).

മുന്നറിയിപ്പ്: ഒരു പ്രൊഡക്ഷൻ സെർവറിന്റെ കോൺഫിഗറേഷനിൽ മാറ്റങ്ങൾ വരുത്തുന്നതിന് മുമ്പ്, mysqltuner നൽകുന്ന ശുപാർശ നിലവിലുള്ള ഒരു ക്രമീകരണത്തെ പ്രതികൂലമായി ബാധിക്കില്ലെന്ന് ഉറപ്പാക്കാൻ ഒരു വിദഗ്ദ്ധ ഡാറ്റാബേസ് അഡ്മിനിസ്ട്രേറ്ററെ സമീപിക്കാൻ നിങ്ങളെ വളരെയധികം പ്രോത്സാഹിപ്പിക്കുന്നു.

സംഗ്രഹം

മരിയാഡിബി ഡാറ്റാബേസ് സെർവർ ഇൻസ്റ്റാൾ ചെയ്ത് സുരക്ഷിതമാക്കിയ ശേഷം എങ്ങനെ കോൺഫിഗർ ചെയ്യാമെന്ന് ഈ ലേഖനത്തിൽ ഞങ്ങൾ വിശദീകരിച്ചിട്ടുണ്ട്. മുകളിലെ പട്ടികയിൽ ലിസ്റ്റുചെയ്തിരിക്കുന്ന കോൺഫിഗറേഷൻ വേരിയബിളുകൾ, സെർവർ ഉപയോഗത്തിനായി തയ്യാറാക്കുമ്പോഴോ പിന്നീട് ട്യൂൺ ചെയ്യുമ്പോഴോ നിങ്ങൾ പരിഗണിക്കേണ്ട ചില ക്രമീകരണങ്ങൾ മാത്രമാണ്. മാറ്റങ്ങൾ വരുത്തുന്നതിന് മുമ്പ് എല്ലായ്പ്പോഴും ഔദ്യോഗിക MariaDB ഡോക്യുമെന്റേഷൻ പരിശോധിക്കുക അല്ലെങ്കിൽ ഞങ്ങളുടെ MariaDB പ്രകടന ട്യൂണിംഗ് നുറുങ്ങുകൾ പരിശോധിക്കുക:

എല്ലായ്പ്പോഴും എന്നപോലെ, ഈ ലേഖനത്തെക്കുറിച്ച് നിങ്ങൾക്ക് എന്തെങ്കിലും ചോദ്യങ്ങളോ അഭിപ്രായങ്ങളോ ഉണ്ടെങ്കിൽ ഞങ്ങളെ അറിയിക്കാൻ മടിക്കരുത്. നിങ്ങൾ ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുന്ന മറ്റേതെങ്കിലും സെർവർ ക്രമീകരണങ്ങൾ ഉണ്ടോ? ചുവടെയുള്ള അഭിപ്രായ ഫോം ഉപയോഗിച്ച് മറ്റ് കമ്മ്യൂണിറ്റികളുമായി പങ്കിടാൻ മടിക്കേണ്ടതില്ല.