MYSQLD_MULTI(1) MariaDB Database System MYSQLD_MULTI(1)

mysqld_multi - مدیریت و اجرای چندین سرور پایگاه‌داده MariaDB روی یک سیستم

mysqld_multi [گزینه‌ها] {start|stop|report} [GNR[,GNR] ...]

ابزار mysqld_multi برای مدیریت چندین فرآیند سرور mariadbd (یا mysqld) طراحی شده است که به اتصالات روی فایل‌های سوکت یونیکس و پورت‌های TCP/IP مختلف گوش می‌دهند. این ابزار می‌تواند سرورها را راه‌اندازی یا متوقف کند، یا وضعیت فعلی آن‌ها را گزارش دهد.

mysqld_multi به دنبال گروه‌هایی با نام [mysqldN] (یا [mariadbdN]) در فایل my.cnf (یا در فایلی که با گزینه --config-file مشخص شده است) می‌گردد. N می‌تواند هر عدد صحیح مثبتی باشد. از این عدد در توضیحات بعدی به عنوان «شماره گروه گزینه‌ها» یا GNR یاد می‌شود. شماره گروه‌ها، گروه‌های پیکربندی را از یکدیگر متمایز می‌کنند و به عنوان آرگومان به mysqld_multi داده می‌شوند تا مشخص کنند کدام سرورها را می‌خواهید راه‌اندازی کنید، متوقف سازید یا گزارش وضعیت آن‌ها را دریافت نمایید. گزینه‌های فهرست‌شده در این گروه‌ها همان گزینه‌هایی هستند که در گروه [mysqld] (یا [mariadbd]) برای راه‌اندازی سرور استفاده می‌کنید. با این حال، هنگام استفاده از چندین سرور، ضروری است که هر سرور مقادیر اختصاصی خود را برای گزینه‌هایی مانند فایل سوکت یونیکس و شماره پورت TCP/IP استفاده کند.

برای فراخوانی mysqld_multi، از نحو دستوری زیر استفاده کنید:

shell> mysqld_multi [گزینه‌ها] {start|stop|report} [GNR[,GNR] ...]

دستورات start، stop و report مشخص می‌کنند چه عملیاتی انجام شود. بسته به فهرست GNR که پس از نام عملیات می‌آید، می‌توانید عملیات تعیین‌شده را روی یک سرور منفرد یا چندین سرور اجرا کنید. اگر فهرستی ارائه نشود، mysqld_multi عملیات را روی تمام سرورهای موجود در فایل پیکربندی انجام می‌دهد.

هر مقدار GNR نمایانگر یک شماره گروه گزینه‌ها یا محدوده‌ای از شماره گروه‌ها است. این مقدار باید عددی باشد که در انتهای نام گروه در فایل پیکربندی آمده است. به عنوان مثال، GNR برای گروهی با نام [mysqld17] برابر 17 است. برای تعیین یک محدوده عددی، اولین و آخرین عدد را با یک خط پیوند (dash) جدا کنید. مقدار GNR به صورت 10-13 نمایانگر گروه‌های [mysqld10] تا [mysqld13] است. چندین گروه یا محدوده گروهی را می‌توان با کاما از هم جدا کرد و در خط فرمان وارد نمود. نباید هیچ کاراکتر فاصله‌ای (فاصله یا تب) در فهرست GNR وجود داشته باشد؛ هر چیزی پس از کاراکتر فاصله نادیده گرفته می‌شود.

این دستور یک سرور منفرد را با استفاده از گروه گزینه‌های [mysqld17] راه‌اندازی می‌کند:

shell> mysqld_multi start 17

این دستور چندین سرور را با استفاده از گروه‌های گزینه‌های [mysqld8] و [mysqld10] تا [mysqld13] متوقف می‌کند:

shell> mysqld_multi stop 8,10-13

برای مشاهده نمونه‌ای از نحوه تنظیم یک فایل پیکربندی، از این دستور استفاده کنید:

shell> mysqld_multi --example

ابزار mysqld_multi به ترتیب زیر فایل‌های پیکربندی را جستجو می‌کند:

•با گزینه --no-defaults، هیچ فایل پیکربندی خوانده نمی‌شود.
•با گزینه --defaults-file=file_name، فقط فایل نام‌برده خوانده می‌شود.
•در غیر این صورت، فایل‌های پیکربندی در مسیرهای استاندارد خوانده می‌شوند، از جمله فایلی که با گزینه --defaults-extra-file=file_name مشخص شده باشد (اگر این گزینه چندین بار تکرار شود، آخرین مقدار استفاده خواهد شد).

فایل‌های پیکربندی خوانده‌شده برای یافتن گروه‌های [mysqld_multi] و [mysqldN] (یا [mariadbdN]) بررسی می‌شوند. گروه [mysqld_multi] را می‌توان برای گزینه‌های مربوط به خود mysqld_multi استفاده کرد. گروه‌های [mysqldN] را می‌توان برای گزینه‌های ارسالی به نمونه‌های خاص mariadbd به کار برد.

گروه‌های [mysqld] (یا [mariadbd]) یا [mysqld_safe] (یا [mariadbd_safe]) را می‌توان برای گزینه‌های مشترکی که توسط تمام نمونه‌های mariadbd یا mariadbd_safe خوانده می‌شوند، استفاده کرد. شما می‌توانید با تعیین گزینه --defaults-file=file_name از یک فایل پیکربندی متفاوت برای آن نمونه استفاده کنید؛ در این صورت گروه‌های [mysqld] یا [mysqld_safe] از همان فایل برای آن نمونه استفاده خواهند شد.

ابزار mysqld_multi از گزینه‌های زیر پشتیبانی می‌کند:

•--help

نمایش پیام راهنما و خروج.

•--example

نمایش یک نمونه فایل پیکربندی.

•--log=file_name

تعیین نام فایل گزارش (لاگ). اگر فایل وجود داشته باشد، خروجی لاگ به انتهای آن افزوده می‌شود.

•--mariadb-admin=prog_name

فایل اجرایی mariadb-admin (یا mysqladmin) که برای متوقف کردن سرورها استفاده می‌شود.

•--mariadbd=prog_name

فایل اجرایی mariadbd (یا mysqld) مورد استفاده. توجه داشته باشید که می‌توانید مقدار mariadbd_safe (یا mysqld_safe) را نیز برای این گزینه تعیین کنید. اگر از mariadbd_safe برای راه‌اندازی سرور استفاده می‌کنید، می‌توانید گزینه‌های mariadbd یا ledir را در گروه گزینه‌های متناظر [mysqldN] بگنجانید. این گزینه‌ها نشان‌دهنده نام سروری هستند که mariadbd_safe باید راه‌اندازی کند و مسیر دایرکتوری محل قرارگیری سرور را مشخص می‌کنند. (توضیحات این گزینه‌ها را در mariadbd_safe(1) ببینید). مثال:

[mysqld38]
mariadbd = mariadbd-debug
ledir    = /opt/local/mysql/libexec
•--no-log

چاپ اطلاعات لاگ در خروجی استاندارد (stdout) به جای نوشتن در فایل لاگ. به طور پیش‌فرض، خروجی به فایل لاگ ارسال می‌شود.

•--password=password

رمز عبور حساب کاربری MariaDB که هنگام فراخوانی mariadb-admin استفاده می‌شود. توجه داشته باشید که برخلاف سایر برنامه‌های MariaDB، مقدار رمز عبور برای این گزینه اختیاری نیست.

•--silent

حالت بی‌صدا؛ غیرفعال کردن پیام‌های هشدار.

•--tcp-ip

اتصال به سرور(های) MariaDB از طریق پورت TCP/IP به جای سوکت یونیکس. این گزینه بر متوقف کردن و گزارش‌گیری تأثیر می‌گذارد. اگر فایل سوکت ناموجود باشد، ممکن است سرور همچنان در حال اجرا باشد اما فقط از طریق پورت TCP/IP قابل دسترسی باشد. به طور پیش‌فرض اتصال از طریق سوکت یونیکس انجام می‌شود. این گزینه بر عملیات stop و report تأثیر می‌گذارد.

•--user=user_name

نام کاربری حساب MariaDB که هنگام فراخوانی mariadb-admin استفاده می‌شود.

•--verbose

نمایش خروجی با جزئیات بیشتر.

•--version

نمایش اطلاعات نسخه و خروج.

•--wsrep-new-cluster

راه‌اندازی اولیه (بوت‌استرپ) کلاستر.

نکاتی پیرامون mysqld_multi:

•بسیار مهم: پیش از استفاده از mysqld_multi اطمینان حاصل کنید که معنی گزینه‌های ارسالی به سرورهای mariadbd را درک کرده‌اید و می‌دانید چرا می‌خواهید چندین فرآیند mariadbd جداگانه داشته باشید. از خطرات اجرای چندین سرور mariadbd با یک دایرکتوری داده (data directory) مشترک آگاه باشید. از دایرکتوری‌های داده مجزا استفاده کنید، مگر آنکه دقیقاً بدانید چه کاری انجام می‌دهید. اجرای چندین سرور با یک دایرکتوری داده مشترک در یک سیستم چندریسمانی (threaded)، کارایی بیشتری برای شما به همراه نخواهد داشت.
•مهم: اطمینان حاصل کنید که دایرکتوری داده برای هر سرور به طور کامل برای حساب یونیکسی که فرآیند خاص mariadbd با آن اجرا می‌شود، قابل دسترسی باشد. از حساب کاربری root یونیکس برای این کار استفاده نکنید، مگر آنکه دقیقاً بدانید چه می‌کنید.
•اطمینان حاصل کنید که حساب کاربری MariaDB مورد استفاده برای متوقف کردن سرورهای mariadbd (توسط برنامه mariadb-admin) برای هر سرور نام کاربری و رمز عبور یکسانی داشته باشد. همچنین اطمینان حاصل کنید که این حساب دارای دسترسی SHUTDOWN باشد. اگر سرورهایی که می‌خواهید مدیریت کنید دارای نام‌های کاربری یا رمزهای عبور متفاوتی برای حساب‌های مدیریتی هستند، ممکن است بخواهید روی هر سرور حسابی با نام کاربری و رمز عبور یکسان ایجاد کنید. به عنوان مثال، می‌توانید با اجرای دستورات زیر برای هر سرور، یک حساب مشترک multi_admin راه‌اندازی کنید:
shell> mariadb -u root -S /tmp/mariadb.sock -p
Enter password:
mariadb> GRANT SHUTDOWN ON *.*
    -> TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';

هنگام اتصال به هر سرور، پارامترهای اتصال را متناسب با آن تغییر دهید. توجه داشته باشید که بخش نام میزبان در نام حساب کاربری باید به شما اجازه دهد تا از میزبانی که می‌خواهید mysqld_multi را روی آن اجرا کنید، به عنوان multi_admin متصل شوید.

•فایل سوکت یونیکس و شماره پورت TCP/IP باید برای هر mariadbd متفاوت باشد. (همچنین اگر میزبان دارای چندین آدرس شبکه است، می‌توانید از گزینه --bind-address استفاده کنید تا سرورهای مختلف به رابط‌های متفاوتی گوش دهند).
•گزینه --pid-file در صورتی که از mariadbd_safe برای راه‌اندازی mariadbd استفاده می‌کنید، بسیار مهم است (به عنوان مثال --mariadbd=mariadbd_safe). هر mariadbd باید فایل شناسه فرآیند (PID) اختصاصی خود را داشته باشد. مزیت استفاده از mariadbd_safe به جای mariadbd این است که mariadbd_safe فرآیند mariadbd را زیر نظر می‌گیرد و اگر فرآیند به دلیل دریافت سیگنال با kill -9 یا به دلایل دیگر مانند خطای حافظه (segmentation fault) خاتمه یابد، آن را مجدداً راه‌اندازی می‌کند. لطفاً توجه داشته باشید که اسکریپت mariadbd_safe ممکن است نیاز به اجرا از مکانی خاص داشته باشد. این بدان معنی است که شاید لازم باشد قبل از اجرای mysqld_multi مسیر خود را به دایرکتوری خاصی تغییر دهید. اگر در راه‌اندازی با مشکلی مواجه شدید، لطفاً اسکریپت mariadbd_safe را بررسی کنید؛ به ویژه خطوط زیر را کنترل نمایید:
----------------------------------------------------------------
MY_PWD=`pwd`
# Check if we are starting this relative (for the binary release)
if test -d $MY_PWD/data/mariadb -a \
   -f ./share/mariadb/english/errmsg.sys -a \
   -x ./bin/mariadbd
----------------------------------------------------------------

آزمون انجام‌شده توسط این خطوط باید با موفقیت همراه باشد، در غیر این صورت ممکن است با مشکلاتی روبرو شوید. به mariadbd_safe(1) مراجعه کنید.

•ممکن است بخواهید از گزینه --user برای mariadbd استفاده کنید، اما برای این کار باید اسکریپت mysqld_multi را به عنوان کاربر root یونیکس اجرا نمایید. وجود این گزینه در فایل پیکربندی مشکلی ایجاد نمی‌کند؛ تنها در صورتی که کاربر ارشد نباشید و فرآیندهای mariadbd تحت حساب کاربری یونیکس خودتان اجرا شوند، یک هشدار دریافت خواهید کرد.

مثال زیر نشان می‌دهد چگونه می‌توانید یک فایل پیکربندی برای استفاده با mysqld_multi آماده کنید. ترتیبی که برنامه‌های mariadbd راه‌اندازی یا متوقف می‌شوند بستگی به ترتیبی دارد که در فایل پیکربندی ظاهر می‌شوند. نیازی نیست شماره گروه‌ها یک دنباله پیوسته باشند. گروه‌های اول و پنجم [mysqldN] عمداً در این مثال حذف شده‌اند تا نشان داده شود که می‌توانید در فایل پیکربندی «فاصله‌ها و شکاف‌ها» داشته باشید. این به شما انعطاف‌پذیری بیشتری می‌دهد.

# This file should probably be in your home dir (~/.my.cnf)
# or /etc/my.cnf
# Version 2.1 by Jani Tolonen
[mysqld_multi]
mariadbd     = /usr/local/bin/mariadbd_safe
mariadb-admin = /usr/local/bin/mariadb-admin
user         = multi_admin
password     = multipass
[mysqld2]
socket       = /tmp/mariadb.sock2
port         = 3307
pid-file     = /usr/local/mysql/var2/hostname.pid2
datadir      = /usr/local/mysql/var2
language     = /usr/local/share/mariadb/english
user         = john
[mysqld3]
socket       = /tmp/mysql.sock3
port         = 3308
pid-file     = /usr/local/mysql/var3/hostname.pid3
datadir      = /usr/local/mysql/var3
language     = /usr/local/share/mariadb/swedish
user         = monty
[mysqld4]
socket       = /tmp/mysql.sock4
port         = 3309
pid-file     = /usr/local/mysql/var4/hostname.pid4
datadir      = /usr/local/mysql/var4
language     = /usr/local/share/mariadb/estonia
user         = tonu
[mysqld6]
socket       = /tmp/mysql.sock6
port         = 3311
pid-file     = /usr/local/mysql/var6/hostname.pid6
datadir      = /usr/local/mysql/var6
language     = /usr/local/share/mariadb/japanese
user         = jani

Copyright 2007-2008 MySQL AB, 2008-2010 Sun Microsystems, Inc., 2010-2025 MariaDB Foundation

این مستندات یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) نسخه ۲ که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است بازتوزیع نموده یا تغییر دهید.

این مستندات به این امید توزیع شده است که سودمند باشد، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابلیت فروش یا تناسب برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.

شما باید به همراه این برنامه یک نسخه از مجوز عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت، به بنیاد نرم‌افزارهای آزاد نامه بنویسید یا به نشانی اینترنتی http://www.gnu.org/licenses مراجعه فرمایید:

Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA

برای اطلاعات بیشتر، لطفاً به مستندات MariaDB که به صورت آنلاین در دسترس است مراجعه کنید:

https://mariadb.com/docs

بنیاد MariaDB (http://www.mariadb.org)

5 March 2025 MariaDB 11.8