بایگانی

نصب MariaDB Master-Slave Replication در سنت او اس ۷

همانطور که می دانید ماریا دی بی(MariaDB) جایگزینی برای پایگاه داده مای اس کیو ال(MySql) به شمار می رود. ماریا دی بی یک Sql server سریع، مقیاس پذیر و قابل اعتماد  است که پیشرفت ها و بهینه سازی های زیادی در آن ایجاد شده است. MariaDB replication، روشی برای ذخیره سازی کپی های متعدد از یک داده بر روی بسیاری از سیستم هاست و داده ها نیز به صورت خودکار از پایگاه داده (مستر) به پایگاه داده دیگری (Slave) کپی می شوند.   اگر یک سرور از کار بیفتد،  مشتریان می توانند هنوز هم دسترسی خوبی به داده های خود داشته باشند. اینکار معمولا از طریق پایگاه داده Slave انجام می شود. در این مقاله قصد داریم  نصب MariaDB Master-Slave replication را در سنت او اس ۷ با هم مرور کنیم.  این روش بر روی تمامی توزیع های لینوکس همچون RHEL، سنت او اس، اوبونتو و openSUSE قابل اجراست.  تنها چیزی که شما نیاز دارید این است که بدانید چگونه ماریا دی بی را در  توزیع  مورد نظر نصب کنید.

سناریو:

 ما در این مقاله از دو سیستم به منظور انجام این آموزش استفاده خواهیم کرد.  اما شما می توانید از هر نوع توزیع لینوکسی که دوست داشتید برای نصب ماریا دی بی استفاده کنید. تنها نصب ماریادی بی برای توزیع لینوکس های دیگر متفاوت خواهد بود.  خوب سیستمی که برای این آموزش مورد استفاده قرار گرفته است مشخصات زیر را دارد:

  • MariaDB Master : سنت او اس ۷، ۶۴ بیت، مینیمال سرور(Minimal Server)
  • آی پی آدرس سرور مستر: ۱۶۸٫۱٫۱۵۰/۲۴
  • MariaDB Slave: سنت او اس ۷، ۶۴ بیتی، Minimal Server
  • آی پی ادرس سرور Slave:168.1.151/24

نصب ماریادی بی بر روی سرور مستر و Slave :

برای نصب ماریا دی بی  می توانید دستورات زیر را اجرا کنید:

yum install mariadb-server mariadb

حالا سرویس ماریا دی بی را اجرا کنید و به آن اجازه دهید در هر ریبوت به صورت خودکار شروع به کار کند. برای انجام اینکار از دستورات زیر کمک بگیرید:

systemctl start mariadb

systemctl enable mariadb

تنظیم پسورد روت ماریا دی بی بر روی سرور مستر و Slave:

به طور پیش فرض پسورد روت برای MriaDB /MySQL  خالی است. بنابراین برای اینکه از دسترسی سایر افراد به آن جلوگیری کنید بهتر است پسوردی را انتخاب  نمایید. برای اینکه بتوانید پسورد روت را برای MYSQL نصب کنید دستور زیر را اجرا نمایید:

mysql_secure_installation

خروجی نمونه:

/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

 SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we’ll need the current

password for the root user.  If you’ve just installed MariaDB, and

you haven’t set the root password yet, the password will be blank,

so you should just press enter here.

Enter current password for root (enter for none):

OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

Set root password? [Y/n] y ## Enter Y and press Enter

New password: ## Enter new password

Re-enter new password: ## Enter password again

Password updated successfully!

Reloading privilege tables..

 … Success!

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] y ## Enter Y and press Enter

 … Success!

Normally, root should only be allowed to connect from ‘localhost’.  This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y ## Enter Y and press Enter

 … Success!

By default, MariaDB comes with a database named ‘test’ that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] y ## Enter Y and press Enter

 – Dropping test database…

 … Success!

 – Removing privileges on test database…

 … Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] y ## Enter Y and press Enter

 … Success!

Cleaning up…

All done!  If you’ve completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

بعد از اینکه ماریادی بی را بر روی هر دو سرور نصب کردید، باید replication را نیز نصب کنیم. اول از هر کاری، سرور مستر را پیکربندی خواهیم کرد.

پیکربندی MariaDB Master:

اولین و مهم ترین مرحله  این است که به پورت پیش فرض MYSQL (3306) اجازه  فعالیت بدهیم. از آنجایی که ما از توزیع سنت او اس ۷ استتفاده می کنیم؛  می توانیم  دستورات زیر را اجرا کنیم:

firewall-cmd –permanent –add-port=3306/tcp

برای reload کردن قوانین فایروایل از دستور زیر استفاده کنید:

firewall-cmd –reload

حالا باید فایل /etc/my.cnf  را ویرایش کنید:

vi /etc/my.cnf

و سپس خطوط زیر را در قسمت پایین [mysqld] اضافه نمایید:

 [mysqld]

server_id=1

log-basename=master

log-bin

binlog-format=row

binlog-do-db=unixmen

[…]

 در این مثال، unixmen  نام پایگاه داده ای است که باید به سیستم Slave ،   Replicate شود. بعد از اینکه خطوط بالا را اضافه کردید، سرویس ماریادی بی را رستارت کنید. برای اینکار می توانید از دستور زیر استفاده کنید:

systemctl restart mariadb

حالا به عنوان کاربر روت در ماریا دی بی لاگین شوید:

mysql -u root -p

یک نام کاربری و پسورد برای  Slave ایجاد کنید. به عنوان مثال ما از SK به عنوان نام کاربری و centos به عنوان پسورد استفاده کردیم:

MariaDB [(none)]> STOP SLAVE;

Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO ‘sk’@’%’ IDENTIFIED BY ‘centos’;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> SHOW MASTER STATUS;

+——————–+———-+————–+——————+

| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————–+———-+————–+——————+

| mariadb-bin.000001 |      ۴۶۰ | unixmen      |                  |

+——————–+———-+————–+——————+

۱ row in set (0.00 sec)

MariaDB [(none)]> exit

Bye

فقط توجه داشته باشید که باید فایل (mariadb-bin.000001) و شماره ۴۶۰ را یادداشت کنید زیرا در مراحل بعدی به آنها نیاز خواهید داشت.

این مقاله را نیز بخوانید: چگونه مخزن را در سیستم عامل CentOS فعال یا غیر فعال کنیم؟

حالا از پایگاه داده سرور مستر بک آپ بگیرید و آن را به Slave منتقل کنید:

شما می توانید از دستورات زیر برای کپی گرفتن از تمامی داده های موجود در پایگاه داده مستر استفاده کنید و آن را ذخیره نمایید. این پایگاه داده در مراحل بعدی به Slave منتقل خواهد شد:

mysqldump –all-databases –user=root –password –master-data > masterdatabase.sql

این دستور، فایلی به نام masterdatabase.sql را در دایرکتوری فعلی ایجاد خواهد کرد. بسته به اندازه پایگاه داده، مدت زمان انجام این فرآیند متغیر خواهد بود.

دوباره با کاربر روت وارد MYSQL شوید:

mysql -u root -p

 و جدول ها را Unlock نمایید:

MariaDB [(none)]> UNLOCK TABLES;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit

Bye

 فایل masterdatabase.sql را در سرور Slave کپی کنید.  در این مثال، من قصد دارم این فایل را در فولدری به نام /home در سرور Slave  کپی کنم. به همین خاطر از دستور زیر استفاده می کنم:

scp masterdatabase.sql root@192.168.1.151:/home

به خاطر داشته باشید که ۱۹۲٫۱۶۸٫۱٫۱۵۱ آی پی آدرس سرور Slave من است.

پیکربندی MariaDB Slave:

خوب پیکربندی های مرتبط با سرور مستر را انجام دادیم. حالا باید سرور Slave را نیز پیکربندی کنیم.  بسته MYSQL را بر روی سرور Slave نصب  کنید. همچنین فراموش نکنید که پورت ۳۳۰۶ را از طریق فایروال یا روتر خود فعال کنید.

سپس فایل /etc/my.cnf  را ویرایش کنید:

vi /etc/my.cnf

حالا  خطوط زیر را به بخش پایینی [mysqld] اضافه کنید:

 [mysqld]

server-id = 2

replicate-do-db=unixmen

[…]

در این مثال، Unixmen نام پایگاه داده سرور مستر است.  به خاطر داشته باشید که باید برای سرور مستر و Slave از server-id متفاوتی استفاده کنید. حالا فایل را ذخیره کنید و از آن خارج شوید.

با استفاده از دستور زیر پایگاه داده مستر را ایمپورت کنید:

mysql -u root -p < /home/masterdatabase.sql

همانطور که می دانید، ما در حال حاضر  فایل masterdatabase.sql را  از سرور مستر به دایرکتوری /home/  در سرور Slave کپی کرده ایم. برای اینکه تغییرات ایجاد شده را مشاهده کنید، سرویس ماریادی بی را رستارت کنید:

systemctl restart mariadb

حالا با استفاده از دستور زیر، به عنوان کاربر روت وارد MariaDB خود شوید:

mysql -u root -p

در این مرحله باید به سرور Slave  بگوییم که کجا باید به دنبال فایل Log که بر روی سرور مستر ایجاد کرده ایم بگردد. فقط مطمئن شوید که آی پی ادری مستر، نام کاربری و پسورد را بر اساس اطلاعات خود تغییر داده اید:

MariaDB [(none)]> STOP SLAVE;

Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=’۱۹۲٫۱۶۸٫۱٫۱۵۰′, MASTER_USER=’sk’, MASTER_PASSWORD=’centos’, MASTER_LOG_FILE=’mariadb-bin.000001′, MASTER_LOG_POS=460;

Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> SLAVE START;

Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> SHOW SLAVE STATUSG;

*************************** ۱٫ row ***************************

 Slave_IO_State: Waiting for master to send event

 Master_Host: 192.168.1.150

 Master_User: sk

 Master_Port: 3306

 Connect_Retry: 60

 Master_Log_File: mariadb-bin.000001

 Read_Master_Log_Pos: 460

 Relay_Log_File: mariadb-relay-bin.000002

 Relay_Log_Pos: 531

 Relay_Master_Log_File: mariadb-bin.000001

 Slave_IO_Running: Yes

 Slave_SQL_Running: Yes

 Replicate_Do_DB: unixmen

 Replicate_Ignore_DB:

 Replicate_Do_Table:

 Replicate_Ignore_Table:

 Replicate_Wild_Do_Table:

 Replicate_Wild_Ignore_Table:

 Last_Errno: 0

 Last_Error:

 Skip_Counter: 0

 Exec_Master_Log_Pos: 460

 Relay_Log_Space: 827

 Until_Condition: None

 Until_Log_File:

 Until_Log_Pos: 0

 Master_SSL_Allowed: No

 Master_SSL_CA_File:

 Master_SSL_CA_Path:

 Master_SSL_Cert:

 Master_SSL_Cipher:

 Master_SSL_Key:

 Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

 Last_IO_Errno: 0

 Last_IO_Error:

 Last_SQL_Errno: 0

 Last_SQL_Error:

 Replicate_Ignore_Server_Ids:

 Master_Server_Id: 1

۱ row in set (0.00 sec)

بررسی و تست MariaDB Replication:

قسمت مستر:

 حالا به MariaDB master server بروید و با استفاده از دستور زیر وارد  MYSql prompt  شوید:

mysql -u root -p

سپس یک پایگاه داده با نام Unixmen ایجاد کنید و جدول و ورودی هایی را به آن اضافه نمایید.  به این موضوع توجه داشته باشید که نام پایگاه داده جدید باید منطبق با نام  موجود در فایل my.cnf سرور مستر و Slave باشد.

MariaDB [(none)]> create database unixmen;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use unixmen;

Database changed

MariaDB [unixmen]> create table sample (c int);

Query OK, 0 rows affected (0.01 sec)

MariaDB [unixmen]> insert into sample (c) values (1);

Query OK, 1 row affected (0.01 sec)

MariaDB [unixmen]> select * from sample;

+——+

| c    |

+——+

|    ۱ |

+——+

۱ row in set (0.00 sec)

MariaDB [unixmen]>

قسمت Slave:

 حالا به سرور Slave بروید و مطمئن شوید که ورودی های ایجاد شده در بالا در پایگاه داده این سرور نیز Replicate شده باشد.

به عنوان کاربر روت وارد MariaDB prompt شوید:

mysql -u root -p

سپس دستورات زیر را اجرا کنید  تا مطمئن شوید ورودی ها به درستی Replicate شده اند:

MariaDB [(none)]> use unixmen;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

MariaDB [unixmen]> select * from sample;

+——+

| c    |

+——+

|    ۱ |

+——+

۱ row in set (0.00 sec)

MariaDB [unixmen]>

حالا جدول هایی که در سرور مستر ایجاد شده بود  به طور خودکار در سرور Slave  تکرار(Replicate ) شده است.

منبع

نصب MariaDB Master-Slave Replication در سنت او اس ۷

امتیاز دهید

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

۰۲۱۲۸۴۲۱۱۹۳
۰۹۱۲۹۷۲۶۳۴۳
۰۹۳۶۲۱۹۶۳۴۳
@omidahmadyani
@omid_ahmadyani