اطلاعیه

بستن
No announcement yet.

آموزش MySQL (Master-Slave) Replication در RHEL - CentOS - Fedora

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    آموزش MySQL (Master-Slave) Replication در RHEL - CentOS - Fedora

    در آموزش زیر تنظیمات Master-Slave Replication در MySQL را بر روی سیستم های RHEL 6.3/6.2/6.1/6/5.8 - CentOS 6.3/6.2/6.1/6/5.8 و Fedora 17,16,15,14,13,12 آموزش خواهیم داد. البته مقاله ریپلیکیت به صورت اختصاصی برای سیستم عامل CentOS 6.3 نوشته شده است اما روی ورژن های قدیمی تر لینوکس با MySQL 5.X هم کار میکند.
    برای بزرگتر شدن عکس روی آن کلیک کنیدنام:	mysql-replication-linux-zone.org.jpgنمایش ها:	1اندازه:	92.4 KBشناسه:	19378








    MySQL Master/Slave Replication در معقوله های Data Security, Fail-over Solution, Database Backup from Slave, Analytics و غیره بسیار مفید است برای انجام پروسه Replication ما از موارد زیر استفاده میکنیم. البته در سناریو شما ممکن است متفاوت باشد :
    • Working Linux OS like CentOS 6.3, RedHat 6.3 or Fedora 17
    • Master and Slave are CentOS 6.3 Linux Servers
    • Master IP Address is: 192.168.1.1
    • Slave IP Address is: 192.168.1.2
    • Master and Slave are on the same LAN network
    • Master and Slave has MySQL version installed
    • Master allow remote MySQL connections on port 3306



    همچنین توصیه میشود مطالعه کنید.

    آموزش نصب MariaDB 10 در CentOS 7/8 - RedHat 7/8 - Debian 8/9/10 - Ubuntu 16/18/19

    آموزش دستورات پایه ای و مقدماتی MySQL/MariaDB - بخش 1

    آموزش mysql پیشرفته

    آموزش تصویری کار با MySQL

    نحوه بک آپ گیری از MySQL/MariaDB و ریستور کردن دیتابیس

    نحوه پیدا کردن مسیر my.cnf - http.conf / apache2.conf - php.ini در لینوکس (Apache, PHP و MySQL)

    ترفندهای مفید برای افزایش سرعت و بهینه سازی دیتابیس MySQL/MariaDB

    نحوه Replication کردن MySQL (یا Master-Slave Replication)



    در این سناریو ما 2 سرور داریم که یکی با ip 192.168.1.1 به عنوان Master و دیگری با ip address 192.168.1.2 به عنوان slave میباشد. ما این آموزش را در 2 بخش تنظیم کردیم تا درک آن برای شما آسانتر باشد. در بخش اول server master را کانفیگ خواهیم کرد و در بخش دوم به server slave خواهیم پرداخت.


    بخش اول

    تنظیمات سرور Master با Ip 192.168.1.1 به منظور Replication :

    در این بخش نصب mysql و تنظیمات replication را خواهیم داشت.


    نصب MySQL روی سرور Master :

    در ابتدا کار خود را با نصب mysql با استفاده از دستور yum آغاز خواهیم کرد. اگر سیستم عامل شما از قبل روی آن mysql روی آن نصب بود این مرحله را نادیده بگیرید :
    کد PHP:
    # yum install mysql-server mysql 

    تنظیم یک mysql در سرور master :

    فایل my.cnf را با استفاده از ادیتور vi/vim باز کنید :
    کد PHP:
    # vi /etc/my.cnf 
    خطوط زیر را تحت بخش [mysqld] اضافه کنید و فراموش نکنید که linux-zone را با نام دیتابیس خودتان که میخواهید روی slave (اسلیو) replicate شود جابه جا کنید :
    کد PHP:
    server-id 1
    binlog
    -do-db=linux-zone
    relay
    -log = /var/lib/mysql/mysql-relay-bin
    relay
    -log-index = /var/lib/mysql/mysql-relay-bin.index
    log
    -error = /var/lib/mysql/mysql.err
    master
    -info-file = /var/lib/mysql/mysql-master.info
    relay
    -log-info-file = /var/lib/mysql/mysql-relay-log.info
    log
    -bin = /var/lib/mysql/mysql-bin 
    سپس سرویس mysql را restart کنید :
    کد PHP:
    # /etc/init.d/mysqld restart 
    با یوزر root به mysql خود login کنید و یوزر slave را ایجاد نموده و پرمیژن های مورد نظر برای replication را به آن اختصاص دهید. در دستور زیر slave_user و your_password را با user و password خود جابه جا کنید :
    کد PHP:
    # mysql -u root -p 
    کد PHP:
    mysqlGRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'your_password';
    mysqlFLUSH PRIVILEGES;
    mysqlFLUSH TABLES WITH READ LOCK;
    mysqlSHOW MASTER STATUS;

    +------------------+----------+--------------+------------------+
    File             Position Binlog_Do_DB Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    mysql-bin.000003 11128001 tecmint         |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)

    mysqlquit

    لطفا فایل (mysql-bin.000003) و position number (شماره موقعیت) (11128001) را یادداشت کنید چون بعدا روی سرور slave به این اعداد نیاز خواهیم داشت. سپس جهت خروجی گرفتن تمام دیتابیس و اطلاعات دیتابیس master با استفاده از دستور mysqldump اقدام به READ LOCK در دیتابیس ها میکنیم :
    کد PHP:
    #  mysqldump -u root -p --all-databases --master-data > /root/dbdump.db 
    به محض اینکه تمامی دیتابیس ها backup گرفته شدند دوباره با یوزر root به mysql کانکت میشویم و تیبل ها را unlock میکنیم :
    کد PHP:
    mysqlUNLOCK TABLES;
    mysqlquit

    با استفاده از دستور SCP فایل dump دیتابیس را روی سرور slave آپلود میکنیم :
    کد PHP:
    scp /root/dbdump.db root@192.168.1.2:/root
    اکنون ما تنظیمات سمت سرور master را با موفقیت انجام دادیم کار را با بخش 2 ادامه میدهیم.



    بخش دوم

    تنظیمات سرور slave با ip 192.168.1.2 به منظور replication :

    در این بخش همچنین به نصب mysql و تنظیمات replication خواهیم پرداخت.


    نصب mysql روی سرور slave :

    اگر روی سرورتان mysql نصب نبود با استفاده از دستور yum آن را نصب کنید :
    کد PHP:
    # yum install mysql-server mysql 

    تنظیم mysql در سرور slave :

    فایل my.cnf را با ادیتور vi/vim باز کنید :
    کد PHP:
    # vi /etc/my.cnf 
    خطوط زیر را در تحت بخش [mysqld] اضافه کنید و فراموش نکنید که ip address سرور master را با ip address خودتان جابه جا نموده همچنین نام linux-zone را با نام دیتابیس مربوطه که میخواهید با master (مستر) replicate شود جایگزین کنید :
    کد PHP:
    server-id 2
    master
    -host=192.168.1.1
    master
    -connect-retry=60
    master
    -user=slave_user
    master
    -password=yourpassword
    replicate
    -do-db=linux-zone
    relay
    -log = /var/lib/mysql/mysql-relay-bin
    relay
    -log-index = /var/lib/mysql/mysql-relay-bin.index
    log
    -error = /var/lib/mysql/mysql.err
    master
    -info-file = /var/lib/mysql/mysql-master.info
    relay
    -log-info-file = /var/lib/mysql/mysql-relay-log.info
    log
    -bin = /var/lib/mysql/mysql-bin 

    اکنون dump file (فایل بک اپ) که در مراحل قبل export کردیم را در این مرحله inport میکنیم و سپس سرویس mysql را restart میکنیم :
    کد PHP:
    # mysql -u root -p < /root/dbdump.db
    # /etc/init.d/mysqld restart 
    با یوزر root به mysql وارد میشویم و slave را stop میکنیم سپس به slave میگوییم که کجا به دنبال logfile سرور master بگردد که ما آن را روی سرور master با کامند SHOW MASTER STATUS یادداشت کردیم :
    کد:
    file(mysql-bin.000003) and position (11128001) number
    شما باید ip 192.168.1.1 را به ip سرور master تغییر دهید همچنین user و password را نیز متعاقبا عوض نمایید :
    کد PHP:
    # mysql -u root -p 
    کد PHP:
    mysqlslave stop;
    mysqlCHANGE MASTER TO MASTER_HOST='192.168.1.1',  MASTER_USER='slave_user'MASTER_PASSWORD='yourpassword',  MASTER_LOG_FILE='mysql-bin.000003'MASTER_LOG_POS=11128001;
    mysqlslave start;
    mysqlshow slave status\

    کد PHP:
    *************************** 1. row ***************************
                   
    Slave_IO_StateWaiting for master to send event
                      Master_Host
    192.168.1.1
                      Master_User
    slave_user
                      Master_Port
    3306
                    Connect_Retry
    60
                  Master_Log_File
    mysql-bin.000003
              Read_Master_Log_Pos
    12345100
                   Relay_Log_File
    mysql-relay-bin.000002
                    Relay_Log_Pos
    11381900
            Relay_Master_Log_File
    mysql-bin.000003
                 Slave_IO_Running
    Yes
                Slave_SQL_Running
    Yes
                  Replicate_Do_DB
    tecmint
              Replicate_Ignore_DB
    :
               
    Replicate_Do_Table:
           
    Replicate_Ignore_Table:
          
    Replicate_Wild_Do_Table:
      
    Replicate_Wild_Ignore_Table:
                       
    Last_Errno0
                       Last_Error
    :
                     
    Skip_Counter0
              Exec_Master_Log_Pos
    12345100
                  Relay_Log_Space
    11382055
                  Until_Condition
    None
                   Until_Log_File
    :
                    
    Until_Log_Pos0
               Master_SSL_Allowed
    No
               Master_SSL_CA_File
    :
               
    Master_SSL_CA_Path:
                  
    Master_SSL_Cert:
                
    Master_SSL_Cipher:
                   
    Master_SSL_Key:
            
    Seconds_Behind_Master0
    Master_SSL_Verify_Server_Cert
    No
                    Last_IO_Errno
    0
                    Last_IO_Error
    :
                   
    Last_SQL_Errno0
                   Last_SQL_Error
    :
    1 row in set (0.00 sec

    بررسی mysql replication روی سرور های master و slave :

    بسیار مهم است که مطمین شویم که آیا replication به درستی کار میکند یا خیر؟ روی سرور master تیبلی ایجاد کنید و یکسری متغییر در ان وارد نمایید.

    در سمت سرور master :
    کد PHP:
    mysqlcreate database tecmint;
    mysql> use tecmint;
    mysqlCREATE TABLE employee (c int);
    mysqlINSERT INTO employee (cVALUES (1);
    mysqlSELECT FROM employee
    کد PHP:
    +------+
    |  
    c  |
    +------+
    |  
    1  |
    +------+
    1 row in set (0.00 sec


    در سمت سرور slave :
    برای بررسی سرور slave دستور مشابه را اجرا میکنیم که باید مقدارهای یکسانی را نیز در اینجا برگرداند :
    کد PHP:
    mysql> use tecmint;
    mysqlSELECT FROM employee
    کد PHP:

    +------+
    |  
    c  |
    +------+
    |  
    1  |
    +------+
    1 row in set (0.00 sec

    اگر مقدار ها به درستی نمایش داده شد در حقیقت و نهایتا شما MySQL Replication را به درستی انجام داده اید همانطور که دیدید طی مراحلی آسان و کم این پروسه صورت گرفت. شما میتوانید اطلاعات بیشتر را در MySQL Replication Guide پیدا کنید.


    موفق باشید
    محمد هابیلی
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 11-27-2019, 05:55 AM.

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی

ایمیل مدیریت

Habili@linux-zone.org

در حال انجام ...
X