اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

آموزش 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:
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'your_password';
    mysql> FLUSH PRIVILEGES;
    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> SHOW MASTER STATUS;

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

    mysql> quit; 

    لطفا فایل (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:
    mysql> UNLOCK TABLES;
    mysql> quit; 

    با استفاده از دستور 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:
    mysql> slave stop;
    mysql> CHANGE 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;
    mysql> slave start;
    mysql> show slave status\G 

    کد PHP:
    *************************** 1. row ***************************
                   
    Slave_IO_State: Waiting 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_Errno: 0
                       Last_Error
    :
                     
    Skip_Counter: 0
              Exec_Master_Log_Pos
    : 12345100
                  Relay_Log_Space
    : 11382055
                  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
    :
    1 row in set (0.00 sec) 

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

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

    در سمت سرور master :
    کد PHP:
    mysql> create database tecmint;
    mysql> use tecmint;
    mysql> CREATE TABLE employee (c int);
    mysql> INSERT INTO employee (c) VALUES (1);
    mysql> SELECT * FROM employee; 
    کد PHP:
    +------+
    |  
    c  |
    +------+
    |  
    1  |
    +------+
    1 row in set (0.00 sec) 


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

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

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


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