عضویت در پرتال

عضویت در پرتال پشتیبانی

پرتال پشتیبانی

ورود به پرتال پشتیبانی

چهارشنبه, 17 آذر 1395 مقایسه ویژگی های موتورهای ذخیره سازی MySQL

مقایسه ویژگی های موتورهای ذخیره سازی MySQL


Feature MyISAM Memory InnoDB Archive NDB
Storage limits ۲۵۶TB RAM ۶۴TB None ۳۸۴EB
Transactions No No Yes No Yes
Locking granularity Table Table Row Table Row
MVCC No No Yes No No
Geospatial data type support Yes No Yes Yes Yes
Geospatial indexing support Yes No No No No
B-tree indexes Yes Yes Yes No No
T-tree indexes No No No No Yes
Hash indexes No Yes No No Yes
Full-text search indexes Yes No Yes No No
Clustered indexes No No Yes No No
Data caches No N/A Yes No Yes
Index caches Yes N/A Yes No Yes
Compressed data Yes No Yes Yes No
Encrypted data Yes Yes Yes Yes Yes
Cluster database support No No No No Yes
Replication support Yes Yes Yes Yes Yes
Foreign key support No No Yes No No
Backup / point-in-time recovery Yes Yes Yes Yes Yes
Query cache support Yes Yes Yes Yes Yes
Update statistics for data dictionary Yes Yes Yes Yes Yes

چهارشنبه, 17 آذر 1395 آشنایی با موتورهای ذخیره سازی در MySQL

آشنایی با موتورهای ذخیره سازی در MySQL

موتور ذخیره‌سازی Memory:
در این نوع همانطور که از اسم آن نیز پیدا است کلیه داده‌ها در Memory (حافظه RAM) ذخیره می‌شود و با خاموش شدن سیستم داده‌های جدولی که با این نوع طراحی شده‌است از بین خواهد رفت.

در مواردی که به سرعت بالا نیاز است و یا داده‌ها بصورت مداوم در حال نوشتن و خواندن هستند (مثل جداول temprory) استفاده از آن بهینه است.

موتور ذخیره‌سازی CSV:
در CSV داده‌ها به‌صورت باینری ذخیره نمی‌شوند و ذخیره داده‌ها در یک فایل csv انجام می‌گیرد. به‌دلیل این محدودیت، برای ذخیره تعداد زیادی داده یا انواع داده‌های بزرگ مناسب نیست.

فایل‌های CSV بدلیل سادگی import و Export شدن به نرم افزارهایی مانند Excel ،OpenOffice ،Access و FileMaker تولید می‌شوند.

موتور ذخیره‌سازی Archive:
در Archive اغلب انواع داده MySQL پشتیبانی می‌شود اما تنها دستورات Select و Insert قابل استفاده است. اطلاعات جدولی از این نوع به‌صورت فشرده ذخیره می‌شود و غیر قابل ویرایش می‌باشد، بنابراین برای ذخیره log فایل‌ها (یا اطلاعاتی مانند صورت حساب‌های گذشته) و اطلاعات امنیتی مناسب می‌باشد.

با توجه به این‌که Select از جدول‌هایی ذخیره شده با این نوع نیاز به خارج‌سازی اطلاعات از حالت فشرده وجود دارد، در جستجوها و روابط پیچیده این موضوع زمانبر خواهد بود.

موتور ذخیره‌سازی Federated:
Federated در نسخه MySQL ۵٫۰۳ اضافه و در آن امکان اتصال به سایر دیتابیس‌ها فراهم شده‌است، به عبارتی چند سرور MySQL که ازنظر فیزیکی جدا هستند، به هم متصل می‌شوند و یک پایگاه داده مجازی را تشکیل دهند. با استفاده از Federated می‌توان به یک دیتابیس دیگر متصل شد و داده‌های جدول‌ها را بدون Export یا Import نمودن به دیتابیس دیگر منتقل نمود.

موتور ذخیره‌سازی BLACKHOLE:
BLACKHOLE داده‌ها را دریافت می‌کند اما ذخیره نمی‌کند و مانند /dev/null در یونیکس است. در طراحی دیتابیس‌های توزیع شده که بطور خودکار داده‌ها تکرار شده اما بصورت لوکال ذخیره نمی شوند بهینه می‌باشد. بدون اینکه داده‌ها بصورت واقعی نوشته شوند امکان اجرای دستورات select و update وجود دارد.

اگرچه بنظر می‌رسد که روش بیهوده‌ای است اما این روش جهت تست ساختار دیتابیس و کار با جدول‌های تعریف شده مفید می‌باشد.

موتور ذخیره‌سازی Merge:
با استفاده از Merge می‌توان مجموعه‌ای از جداول MyISAM یکسان را بطور منطقی دسته بندی کرده و بعنوان یک شی واحد درنظر بگیرد. با استفاده از این نوع موتور ذخیره سازی مدیریت مجموعه‌ای از جداول لاگ به آسانی انجام می‌شود و جستجوهای کارآمدتری را می‌توانید انجام دهید.

موتور ذخیره‌سازی InnoDB:
از نسخه ۵٫۵٫۵ به بعد، InnoDB موتور ذخیره سازی پیش فرض MySQL شد و این موتور ذخیره سازی نسبت به MyISAM از پیچیدگی بیشتری برخوردار می‌باشد.

یکی از ویژگی‌های آن پشتیبانی از transactionها می‌باشد. همچنین InnoDB از کلید خارجی جهت محدودیت روابط بین جداول پشتیبانی می‌کند که این موضوع حفظ روابط بین جداول یکی از دلایل پیچیده‌تر بودن آن نسبت به MyISAM می‌باشد.

InnoDB از قابلیت crash-recovery پشتیبانی می‌کند و در صورت آسیب دیدن جدول به بازیابی آن کمک می‌کند. به‌همین دلیل در مواردی که اطلاعات مهم و حساس باشند استفاده از این موتور ذخیره سازی بهینه‌تر است.

InnoDB حافظه بیشتری را نسب به MyISAM مصرف می‌کند و از نظر فیزیکی فایل‌های حجیم‌تری دارد، بنابر این اگر محدودیت در منابع وجود داشته باشد استفاده از InnoDB بهینه‌ نیست.

این موتور ذخیره سازی دارای قابلیت lock (قفل کردن) در سطح رکورد و عدم قفل شدن کل جدول در عملیات ثبت و ویرایش ردیف‌ها می‌باشد؛ به‌ همین دلیل در سطح رکورد از سرعت بالایی جهت اجرای queryهای مربوط به insert/update/delete برخوردار می‌باشد.

موتور ذخیره‌سازی MyISAM:
یکی از ویژگی‌های مفید MyISAM پشتیبانی از full-text search می باشد و جدول‌هایی که از این موتور ذخیره سازی استفاده می‌کنند فضای کمتری از دیسک را اشغال می‌کنند.

MyISAM نسبت به سایر موتورهای ذخیره‌سازی از سادگی بشتری برخوردار و برای افراد مبتدی مناسب‌تر است.

MyISAM به‌دلیل locking در سطح جدول سرعت پائینی در queryهای insert/update دارد، اما سرعت آن در select بالا است.

جدول‌ها در MyISAM می‌توانند به‌صورت فقط خواندنی (جهت کاهش فضا) ذخیره شوند. بنابراین درمواردی که سادگی و محدودیت منابع اولویت داشته باشد استفاده از این موتور ذخیره‌سازی بهینه می‌باشد.

سه شنبه, 25 آبان 1395 نسخه های مختلف PhpMyAdmin

نسخه های مختلف PhpMyAdmin

نسخه های مختلف PhpMyAdmin و ویژگی های آنها

در بخش قبل به اختصار با برخی از قابلیت های PhpMyAdmin آشنا شدیم. در این قسمت بصورت دقیق تر به تفاوت نسخه های مختلف و Feature های اضافه شده در هر نسخه می پردازیم.

آخرین نسخه منتشر شده توسط تیم پشتیبانی این نرم افزار ، نسخه ۴٫۶ می باشد. در ادامه تفاوت نسخه های مختلف از نسخه ۳٫۰ تا ۴٫۶ آورده شده است.

PhpMyAdmin 3.0
نسخه ۳٫۰ در سال ۲۰۰۸ معرفی شده و برای نصب آن نیاز به PHP 5.2 و MySQL 5+ می باشد. نصب این نسخه به هیچ عنوان پیشنهاد نمی گردد چرا که دارای ضعف های امنیتی متعددی بوده و توسط تیم برنامه نویسی و توسعه پشتیبانی نمی گردد.

PhpMyAdmin 3.5
با آپگرید به نسخه ۳٫۵ قابلیت های زیادی به PhpMyAdmin اضافه خواهد شد. از برخی از این قابلیت ها می توان به استفاده از تکنولوژی AJAX در انجام Task های مختلف ، معرفی Theme جدید و بهبود مانیتورینگ MySQL Server از طریق بخش Status اشاره نمود. استفاده از Synchronization جهت همسان سازی ۲ دیتابیس هم بصورت لوکال و هم بصورت ریموت از دیگر موارد اضافه شده در این نسخه می باشد.

PhpMyAdmin 4.0
حذف Synchronization را می توان یکی از اساسی ترین تغییرات این نسخه به شمار آورد. البته این بدان معنا نیست که امکان همسان سازی ۲ دیتابیس از PhpMyAdmin حذف شده است ، بلکه با عرضه این نسخه می توان ۲ دیتابیس را از طریق Replication با یکدیگر همسان نمود. قابلیتی که در نسخه ۳٫۵ نیز وجود داشت اما بصورت آزمایشی بوده و حالا در نسخه ۴٫۰ تکمیل و به مرحله اجرا رسیده است.

اضافه شده بخش تغییر کلمه عبور در صفحه اصلی و رفع ضعف های امنیتی متعدد از دیگر تغییرات این نسخه می باشد.

از نسخه ۴ به بعد امکان طراحی ساختار دیتابیس بوسیله ابزار گرافیکی Designer فراهم شده است. این Feature بصورت پیش فرض فعال نمی باشد. برای فعال سازی آن می توانید به شکل زیر اقدام کنید :

بسته به تنظیمات سرور خود به این مسیر بروید:
path/to/phpmyadmin/config.inc.php/

حال این تغییرات را اعمال نمایید:
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'yourpass';
فراموش نکنید حتما به کاربر pma کلمه عبور اختصاص دهید تا افراد دیگر قادر به مشاهده دیزاینر مد نباشند.

حال نام دیتابیس ها را تغییر دهید . همچنین به این نکته توجه داشته باشید که اسم جدول ها به بزرگی و کوچکی حروف حساس هستند.
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
در انتها باید یک اسکریپت sql که در مسیر زیر یافت می شود را اجرا نمایید:
path/to/phpmyadmin/scripts/create_tables_mysql_4_1_2+.sql/
به سادگی پس از اجرای این sql توسط ابزار import در phpmyadmin جداول و دیتابیس های بالا ایجاد می گردد.

PhpMyAdmin 4.4
برای نصب این ورژن نیاز به PHP 5.3 و MySQL 5.5+ می باشد. بخش Recent و Favorites که به ترتیب نمایش دهنده آخرین دستورات اجرا شده و Favorite Table می باشند در این نسخه به PhpMyAdmin اضافه شده اند. همچنین در این نسخه Designer بصورت پیش فرض فعال می باشد. قابلیت Ajax در هنگام اضافه نمودن Table جدید نیز حذف شده است.

Feature جدیدی نیز با نام Console در این نسخه اضافه شده است (با آیکن ترمینال و نام Console در پایین صفحه سمت چپ قابل مشاهده می باشد) که بوسیله آن می توان دستورات MySQL را بصورت Interactive اجرا نمود. تنها کافیست کوئری خود را در باکس مشخص شده وارد نموده و برای اجرای آن CTRL+ENTER را فشار دهید.

PhpMyAdmin 4.6
آخرین نسخه Stable و قابل نصب نیاز به PHP 5.5 بر روی سرور دارد. پشتیبانی از نسخه ۶ مرورگر IE به اتمام رسیده و یک Directive جدید به نام ssl_verify جهت رفع مشکل گواهی نامه های self-signed معرفی شده است که برای استفاده از آن می بایست نسخه PHP را به ۵٫۶ ارتقا داد. از دیگر تغییرات می توان به قابلیت بررسی Syntax کوئری های وارد شده در Console ، رفع مشکل تغییر کلمه عبور در دیتابیس های MariaDB و امکان پشتیبانی از JSON اشاره نمود.

تب جدیدی نیز با نام Plugins ایجاد شده که نشان دهنده اطلاعات تکمیلی در خصوص پلاگین های نصب شده بر روی MySQL Server می باشد.

نصب PhpMyAdmin

حال که با تفاوت نسخه های مختلف آشنا شدیم به سراغ نصب PhpMyAdmin می رویم. جهت نصب PhpMyAdmin تنها می بایست فایل مورد نظر را از سایت رسمی آن دانلود و برخی تغییرات را در تنظیمات وب سرور اعمال نماییم.

نصب بر روی آپاچی
ابتدا نسخه مورد نظر را از طریق لینک زیر بر روی سرور دانلود می نماییم:

https://www.phpmyadmin.net/downloads

معمولا مدیران سرور PhpMyAdmin را در یکی از مسیرهای زیر نصب می کنند.

usr/share/phpmyadmin/
var/www/html/

مشکلی در خصوص نصب در مسیرهای دیگر وجود ندارد و تنها می بایست پس از Extract نمودن فایل اقدام به اعمال تغییرات در وب سرور نماییم.

tar –xzvf phpMyAdmin-xxx.tar.gz
mv phpMyAdmin-xxx phpmyadmin

مسیر پیش فرض نصب سرویس آپاچی etc/httpd/ می باشد. اما چنانچه فایلی در این مسیر وجود نداشت می توان از طریق دستورات زیر فایل های تنظیمات آپاچی را پیدا نمود.

Redhab-Based Distros
rpm –qc httpd

Debian-Based Distros
dpkg –L httpd

حال با یکی از نرم افزار های ویرایش متن وارد فایل تنظیمات شده و Alias مورد نظر را ایجاد نماییم. این مورد را با یک مثال بر روی سیستم عامل CentOS بررسی می کنیم.

vim /etc/httpd/conf/httpd.conf
Alias /phpmyadmin /var/www/html/phpMyAdmin

همان طور که مشاهده می نمایید در مثال بالا برای پوشه phpMyAdmin قرارگرفته در مسیر var/www/html/ یک Alias تعریف نموده ایم. در آخر نیز سرویس آپاچی را ریستارت می کنیم.

service httpd restart

در نتیجه با وارد نمودن آدرس http://server-ip/phpmyadmin در مرورگر محتویات این پوشه نمایش داده خواهد شد.

نصب در DirectAdmin
تنها تفاوت نصب در دایرکت ادمین با بخش قبلی مسیر فایل تنظیمات وب سرور می باشد. تنظیمات Alias در دایرکت ادمین در فایل دیگری به مسیر زیر ذخیره می گردد.

etc/httpd/conf/extra/httpd-alias.conf/

نسخه پیش فرض PhpMyAdmin نصب شده بوسیله Custombuild 1 برابر با ۴٫۰ می باشد که می توان آن را بصورت Manual ارتقا داد. ضمنا با آپگرید Custombuild به نسخه ۲ و اجرای دستور build update/. آخرین نسخه PhpMyAdmin بر روی سرور نصب خواهد شد.

نصب در cPanel
مسیر قرار گیری phpMyAdmin در سی پنل بصورت زیر می باشد. فایل phpMyAdmin را دانلود و در این مسیر extract می نماییم.

usr/local/cpanel/base/3rdparty/

نسخه پیش فرض نصب شده بر روی cPanel 12 ، نسخه ۴٫۰ به همراه PHP 5.6 می باشد.

نصب بر روی Nginx
نصب بر روی انجینیکس مستلزم انجام بعضی تغییرات بر روی سرور می باشد.بصورت پیش فرض Nginx در مسیر etc/nginx/ نصب می گردد.

ابتدا مسیر اصلی قرار گیری فایل های وبسایت خود را مشخص می نماییم .

vim /etc/nginx/sites-available/default

#To do this we have to define the location for "root" parameter
#Pattern 1
root /var/www/html

#Pattern 2
root /usr/share/nginx/html

همانند تنظیمات آپاچی فایل PhpMyAdmin را دانلود و در یکی از مسیرهای مشخص شده Extract می کنیم.سپس Alias مورد نظر را در فایل default ایجاد می کنیم.

location /phpmyadmin {
alias /usr/share/nginx/html/phpmyadmin;
}

در آخر نیز سرویس nginx را ریست می کنیم.

service nginx restart

چنانچه در هنگام لود فایل های PHP در Nginx با مشکل عدم نمایش این نوع فایل ها مواجه شده و در عوض باکس دانلود فایل نمایش داده شد ، می بایست تغییرات زیر را در فایل default( و یا فایل تنظیمات nginx برای وبسایت مربوطه) اعمال نماییم(تغییرات زیر بر روی Nginx 1.10 و PHP7.0 انجام شده است)

index index.html index.php index.htm index.nginx-debian.html;

location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

تنظیمات کامل Nginx برای اجرای فایل های PHP و اتصال به دیتابیس از طریق PhpMyAdmin به شکل زیر می باشد.

#/etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server;

root /usr/share/nginx/html;

# Add index.php to the list if you are using PHP
index index.html index.php index.htm index.nginx-debian.html;

#Leave it alone
server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

location /phpmyadmin {
alias /usr/share/nginx/html/phpmyadmin;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}