مایاسکیوال (MySQL) یک سیستم مدیریت پایگاه داده رابطهای (RDBMS) متنباز (open source) است که کاربرد گستردهای دارد و به خاطر سهولت تعامل و سازگاری بالا برای اهداف گوناگون و پروژههای توسعه وب، شهرت یافته است. در برخی موارد، ممکن است به جای استفاده از رابط کاربری گرافیکی (GUI)، نیاز پیدا کنید که پایگاههای داده مایاسکیوال را از طریق خط فرمان (command line) برونبری (export) یا درونریزی (import) کنید؛ برای مثال، هنگامی که روی یک سرور راه دور (remote server) کار میکنید که SSH (پوسته امن / Secure Shell) تنها نقطه دسترسی به آن است.
این آموزش جامع، شما را در طی کردن فرآیند درونریزی و برونبری پایگاههای داده از طریق خط فرمان (CLI) مایاسکیوال بر بستر SSH، یاری خواهد کرد.
پیشنیازها
پیش از اقدام به فرآیندهای Import و Export ، اطمینان حاصل کنید که پیشنیازهای زیر را دارا هستید:
-
دسترسی SSH: برای اتصال به سرور راه دوری که مایاسکیوال روی آن نصب شده است، به دسترسی SSH نیاز خواهید داشت. این دسترسی معمولاً با استفاده از آدرس IP یا نام میزبان (hostname) سرور و وارد کردن این آدرس به همراه نام کاربری و رمز عبور صحیح (یا کلید SSH) فراهم میشود.
-
کلاینت MySQL: ابزارهای کلاینت مایاسکیوال (مانند
mysql
وmysqldump
) باید روی سرور راه دور نصب و پیکربندی شده باشند. این ابزارها معمولاً بخشی از بسته نصب سرور مایاسکیوال هستند. با این حال، ممکن است موجود نباشند (نصب نشده باشند). برای رفع این مشکل، ممکن است لازم باشد آنها را به طور جداگانه نصب کنید. -
مجوزها (Permissions): اطمینان حاصل کنید که مجوزهای کافی نه تنها برای کار با پایگاههای داده، بلکه همچنین برای خواندن و اصلاح (amend) آن پایگاههای داده مایاسکیوال که قصد استفاده از آنها را دارید، در اختیار داشته باشید. این امر مستلزم داشتن اطلاعات کاربری (credential) صحیح یا تعلق داشتن به گروهی از کاربران است که مجوزهای لازم را دارند (مانند کاربر
root
یاadmin
).
خروجی گرفتن (Export) پایگاه داده MySQL از طریق خط فرمان
انتقال یک پایگاه داده MySQL به این صورت انجام میشود که یک نسخه پشتیبان (backup) یا ذخیرهسازی از ساختار و دادههای پایگاه داده ایجاد میگردد. این نسخه پشتیبان میتواند برای مقاصد مختلفی به کار گرفته شود، برای مثال هنگام مهاجرت (migration)، ایجاد محیطهای توسعه (development) و مرحلهبندی (staging)، یا حتی صرفاً برای نگهداری یک نسخه پشتیبان.
در مقایسه با رابط کاربری گرافیکی (GUI)، خط فرمان ابزار سریعتری برای برونبری (export) پایگاه داده MySQL است:
-
اتصال به سرور راه دور با استفاده از SSH:
ابتدا، یک پنجره ترمینال جدید در کامپیوتر محلی (local) خود باز کنید. سپس با وارد کردن اطلاعات اعتباری (credentials) سرور، از پوسته امن (SSH) برای اتصال استفاده کنید. دستور مشابه زیر خواهد بود:
ssh user@remote_server_ip
به جای
user
نام کاربری خود و به جایremote_server_ip
آدرس IP یا نام میزبان (hostname) سرور راه دور را قرار دهید. -
تغییر کاربر به کاربر MySQL (اختیاری):
بسته به پیکربندی خاص سرور، ممکن است برای اجرای دستورات MySQL نیاز باشد به کاربری با دسترسیهای لازم (مانند کاربر
root
یا کاربر اختصاصیmysql
) سوئیچ کنید. این مرحله معمولاً زمانی ضروری است که شما با کاربری وارد نشده باشید که مجوزهای لازم برای این کار را داشته باشد. از دستور زیر (برای سوئیچ به کاربرmysql
با استفاده ازsudo
) استفاده کنید:sudo su - mysql
-
Export پایگاه داده:
برای این کار از دستور
mysqldump
استفاده میشود. این دستور یک برونبری کامل شامل ساختار (schema) و دادهها را در یک فایل SQL ایجاد میکند:
mysqldump -u [username] -p[password] [database_name] > [output_file.sql]
[username]
و[password]
را با نام کاربری و رمز عبور MySQL خود جایگزین کنید. (توجه داشته باشید که بین-p
و رمز عبور نباید فاصلهای وجود داشته باشد).[database_name]
را با نام پایگاه دادهای که قصد برونبری آن را دارید، جایگزین کنید.[output_file.sql]
را با نام دلخواه فایلی که میخواهید خروجی SQL در آن ذخیره شود، جایگزین کنید.
برای مثال، برای برونبری پایگاه دادهای به نام my_database
با استفاده از کاربر root
و رمز عبور my-password
و ذخیره خروجی در فایلی به نام backup.sql
، از دستور زیر استفاده کنید:
mysqldump -u root -pmy-password my_database > backup.sql
این دستور فایل backup.sql
را ایجاد میکند که شامل ساختار و دادههای پایگاه داده my_database
است.
-
انتقال فایل SQL (اختیاری):
اگر نیاز دارید فایل SQL برونبری شده را از سرور راه دور به دستگاه محلی خود منتقل کنید، میتوانید از دستور
scp
(Secure Copy) استفاده کنید. از ترمینال دستگاه محلی خود، دستور زیر را اجرا کنید:
scp user@remote_server_ip:/path/to/backup.sql /local/destination/path
- به جای
user
، نام کاربری خود در سرور راه دور را قرار دهید. remote_server_ip
را با آدرس IP یا نام میزبان سرور راه دور جایگزین کنید./path/to/backup.sql
را با مسیر کامل فایل برونبری شده (backup.sql
در مثال ما) در سرور راه دور جایگزین کنید./local/destination/path
را با مسیر مقصد مورد نظر در دستگاه محلی خود جایگزین کنید.
ورودی دادن (Import) به پایگاه داده MySQL از طریق خط فرمان
انتقال فایل SQL به سرور راه دور (اختیاری، اگر فایل روی دستگاه محلی شماست):
فرض کنید میخواهید فایل SQL که به صورت محلی ذخیره کردهاید را به سرور راه دور منتقل کنید. میتوانید از دستور scp
برای این کار استفاده کنید. از ترمینال دستگاه محلی خود، دستور زیر را اجرا کنید:
scp /local/path/to/backup.sql user@remote_server_ip:/remote/path/
/local/path/to/backup.sql
را با مسیر فایل SQL در دستگاه محلی خود جایگزین کنید.- به جای
user
، نام کاربری خود در سرور راه دور را قرار دهید. remote_server_ip
را با آدرس IP یا نام میزبان سرور راه دور جایگزین کنید./remote/path/
را با مسیر پوشه مقصد مورد نظر در سرور راه دور که میخواهید فایل به آنجا منتقل شود، جایگزین کنید.
-
ایجاد یک پایگاه داده جدید (اختیاری):
اگر فایل SQL شما که قصد درونریزی آن را دارید، شامل دستور ایجاد پایگاه داده (
CREATE DATABASE
) نیست، ابتدا باید خودتان پایگاه داده هدف را ایجاد کنید. برای اتصال به سرور MySQL (از طریق خط فرمان سرور)، از دستورmysql
استفاده کنید:
mysql -u [username] -p
(پس از اجرای این دستور، از شما رمز عبور خواسته خواهد شد.)
سپس، در خط فرمان MySQL، پایگاه داده جدید را ایجاد کنید:
-
sql
CREATE DATABASE [database_name];
[username]
را با نام کاربری MySQL خود جایگزین کنید (در دستور اول).[database_name]
را با نام پایگاه دادهای که میخواهید ایجاد کنید، جایگزین کنید (در دستور دوم).- پس از ایجاد پایگاه داده، میتوانید با دستور
exit
یاquit
از خط فرمان MySQL خارج شوید.
-
Import پایگاه داده:
برای درونریزی فایل SQL به پایگاه داده مورد نظر، از دستور
mysql
(در خط فرمان سرور) به شکل زیر استفاده کنید. ساختار اصلی دستور این است:
mysql -u [username] -p[password] [database_name] < [input_file.sql]
[username]
و[password]
را با نام کاربری و رمز عبور MySQL خود جایگزین کنید. (توجه داشته باشید که معمولاً بین-p
و رمز عبور فاصلهای وجود ندارد).[database_name]
را با نام پایگاه دادهای که میخواهید دادهها را به آن درونریزی کنید (همان پایگاه دادهای که در مرحله قبل ایجاد کردید یا از قبل وجود داشته)، جایگزین کنید.[input_file.sql]
را با مسیر فایل SQLای که قصد درونریزی آن را دارید (فایلی که برونبری کرده بودید یا به سرور منتقل کردید)، جایگزین کنید.
برای مثال، برای درونریزی فایل backup.sql
به داخل پایگاه دادهای به نام my_database
با استفاده از کاربر root
و رمز عبور mypassword
، دستور زیر را اجرا کنید:
mysql -u root -pmypassword my_database < backup.sql
این دستور، ساختار (schema) و دادههای موجود در فایل backup.sql
را به پایگاه داده my_database
منتقل (درونریزی) میکند.
نکات و ملاحظات تکمیلی
-
حفظ مجوزها (Permissions): هنگام ایجاد و درونریزی پایگاههای داده، حتماً به مجوزهای دسترسی (permissions) و مالکیت (ownership) مربوط به فایلهای SQL توجه داشته باشید. اگر لازم شد، از دستورات
chmod
(تغییر مجوزها) وchown
(تغییر مالکیت) برای تنظیم صحیح این دسترسیها بر روی فایل SQL در سرور استفاده کنید. -
فشردهسازی فایلهای SQL: در مورد پایگاههای داده بزرگتر، برای کاهش زمان انتقال و مصرف پهنای باند شبکه، بهتر است فایل SQL را قبل از انتقال فشرده کنید. میتوانید از ابزارهای خط فرمان رایج مانند
gzip
یاbzip2
برای این کار استفاده کرده و سپس روی سرور و پیش از درونریزی، فایل را از حالت فشرده خارج کنید (uncompress). -
استفاده از گزینههای اضافی (Options): دستورات
mysqldump
(برای برونبری) وmysql
(برای درونریزی) گزینههای (آپشنهای) متعددی را برای سفارشیسازی فرآیندها ارائه میدهند. به عنوان مثال، میتوانید تعیین کنید که جداول یا پایگاههای داده خاصی شامل شوند یا مستثنی گردند، توضیحات (comments) به فایل خروجی اضافه شوند یا خیر، بررسی کلید خارجی (foreign key check) هنگام درونریزی غیرفعال شود و بسیاری موارد دیگر. برای مشاهده فهرست کامل و جزئیات این گزینهها، به مستندات رسمی مایاسکیوال (MySQL documentation) مراجعه کنید. (توجه: عبارت “add comment or comment” احتمالاً به کنترل یا افزودن کامنتها در خروجی اشاره دارد). -
خودکارسازی فرآیند (Automation): اگر نیاز دارید که فرآیندهای درونریزی و برونبری پایگاه داده را به طور مکرر انجام دهید (مانند پشتیبانگیریهای منظم)، این کار را با استفاده از اسکریپتها (مانند Shell scripts) یا ابزارهای مدیریت پیکربندی و خودکارسازی مانند Ansible یا Puppet، اتوماتیک کنید. این کار میتواند باعث صرفهجویی قابل توجهی در زمان شود و تضمین کند که گردش کار شما روان و پیوسته (smooth and consistent) باشد.
-
مدیریت پایگاههای داده بسیار بزرگ (Large Databases): برای پایگاههای داده بسیار حجیم، روش معمول برونبری کل پایگاه داده به یک فایل SQL واحد و سپس درونریزی آن ممکن است به دلیل محدودیتهای مربوط به حجم فایل و کارایی (performance)، عملی یا بهینه نباشد. در چنین مواردی که روشهای استاندارد ذکر شده کارایی لازم را ندارند، استفاده از راهکارهای جایگزین را مد نظر قرار دهید، مانند:
- پشتیبانگیری باینری (binary backups): استفاده از ابزارهایی مانند Percona XtraBackup که پشتیبانگیری سطح فیزیکی انجام میدهند.
- پارتیشنبندی (partitioning): تقسیم پایگاه داده یا جداول بزرگ به بخشهای کوچکتر و مدیریتپذیرتر.
- تکثیر پایگاه داده (database replication): استفاده از مکانیزمهای همانندسازی برای انتقال دادهها.
جمعبندی:
با دنبال کردن مراحل توضیح داده شده و در نظر گرفتن این نکات، شما میتوانید با اطمینان فرآیندهای درونریزی و برونبری پایگاههای داده مایاسکیوال را از طریق خط فرمان و اتصال SSH به انجام برسانید. این مهارت برای افرادی مانند مدیران پایگاه داده (Database Administrators – DBAs)، توسعهدهندگان برنامههای کاربردی (Application Developers) و مدیران سیستم (System Administrators) که به طور منظم با پایگاههای داده مایاسکیوال روی سرورهای راه دور سروکار دارند، بسیار حیاتی و ضروری است.