Kā iestatīt MySQL (Master-Slave) replikāciju RHEL, CentOS, Fedora


Šīs apmācības mērķis ir sniegt jums vienkāršu soli pa solim MySQL (Master-Slave) replikācijas iestatīšanu RHEL 6.3/6.2/6.1/6/5.8, CentOS 6.3/6.2/6.1/6/5.8 un Fedora 17 , 16,15,14,13,12 izmantojot jaunāko MySQL versiju. Šī rokasgrāmata ir īpaši izstrādāta operētājsistēmai CentOS 6.3, taču tā darbojas arī ar vecāku Linux izplatīšanas versiju ar MySQL 5.x.

MySQL replikācija ir ļoti noderīga attiecībā uz datu drošību, atteices risinājumu, datu bāzes dublēšanu no verga, Analytics utt. Mēs izmantojam šādas lietas, lai veiktu replikācijas procesu. Jūsu scenārijā tas būtu citādi.

  1. Darbojas Linux OS, piemēram, Fedora 17
  2. Master un Slave ir CentOS 6.3 Linux serveri.
  3. Galvenā IP adrese ir: 192.168.1.1.
  4. Slave IP adrese ir: 192.168.1.2.
  5. Master un Slave atrodas vienā LAN tīklā.
  6. Master un Slave ir instalēta MySQL versija.
  7. Galvenais atļauj attālinātus MySQL savienojumus 3306. portā.

Mums ir divi serveri, viens ir Master ar IP (192.168.1.1) un otrs ir Slave kā (192.168.1.2). Mēs esam sadalījuši iestatīšanas procesu divās fāzēs, lai jums būtu vieglāk. Pirmajā posmā mēs konfigurēsim galveno serveri, bet otrajā - ar Slave serveri. Sāksim replikācijas iestatīšanas procesu.

I fāze: konfigurējiet galveno serveri (192.168.1.1) replikācijai

Pirmajā posmā mēs redzēsim MySQL instalēšanu, iestatīsim replikāciju un pēc tam pārbaudīsim replikāciju.

Vispirms turpiniet MySQL instalēšanu, izmantojot komandu YUM. Ja jums jau ir instalēta MySQL, varat izlaist šo darbību.

# yum install mysql-server mysql

Atveriet konfigurācijas failu my.cnf ar VI redaktoru.

# vi /etc/my.cnf

Sadaļā [mysqld] pievienojiet šādus ierakstus un neaizmirstiet aizstāt tecmint ar datu bāzes nosaukumu, kuru vēlaties atkārtot Slave.

server-id = 1
binlog-do-db=tecmint
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

Restartējiet MySQL pakalpojumu.

# /etc/init.d/mysqld restart

Piesakieties MySQL kā root lietotājs un izveidojiet vergu lietotāju un piešķiriet privilēģijas replikācijai. Aizstājiet slave_user ar lietotāju un paroli.

# mysql -u root -p
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;

Lūdzu, pierakstiet File (mysql-bin.000003) un Position (11128001) numurus, mēs šos numurus pieprasījām vēlāk Slave serverī. Pēc tam lietojiet READ LOCK datu bāzēm, lai eksportētu visu datu bāzes un galveno datu bāzes informāciju ar mysqldump komandu.

#  mysqldump -u root -p --all-databases --master-data > /root/dbdump.db

Kad esat izgāzis visas datu bāzes, tagad atkal izveidojiet savienojumu ar mysql kā root lietotāja un unlcok tabulas.

mysql> UNLOCK TABLES;
mysql> quit;

Augšupielādējiet datu bāzes izgāšanas failu Slave Server (192.168.1.2), izmantojot komandu SCP.

scp /root/dbdump.db [email :/root/

Tas ir tas, ka mēs esam veiksmīgi konfigurējuši galveno serveri. Pārejam uz sadaļu II.

II fāze: konfigurējiet vergu serveri (192.168.1.2) replikācijai

II fāzē mēs veicam MySQL instalēšanu, iestatot replikāciju un pēc tam pārbaudot replikāciju.

Ja jums nav instalēta MySQL, instalējiet to, izmantojot komandu YUM.

# yum install mysql-server mysql

Atveriet konfigurācijas failu my.cnf ar VI redaktoru.

# vi /etc/my.cnf

Sadaļā [mysqld] pievienojiet šādus ierakstus un neaizmirstiet aizstāt galvenā servera IP adresi, tecmint ar datu bāzes nosaukumu utt., Kuru vēlaties atkārtot ar Master.

server-id = 2
master-host=192.168.1.1
master-connect-retry=60
master-user=slave_user
master-password=yourpassword
replicate-do-db=tecmint
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

Tagad importējiet dump failu, kuru eksportējām ar iepriekšējo komandu, un restartējiet MySQL pakalpojumu.

# mysql -u root -p < /root/dbdump.db
# /etc/init.d/mysqld restart

Piesakieties MySQL kā root lietotājs un apturiet vergu. Tad pasakiet vergam, kur meklēt Master žurnāla failu, ko mēs esam pierakstījuši master ar SHOW MASTER STATUS; komandu kā File (mysql-bin.000003) un Position (11128001) numurus. Jums jāmaina 192.168.1.1 uz galvenā servera IP adresi un attiecīgi jāmaina lietotājs un parole.

# mysql -u root -p
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
*************************** 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 replikācijas pārbaude galvenajā un vergu serverī

Ir ļoti svarīgi zināt, ka replikācija darbojas nevainojami. Master serverī izveidojiet tabulu un ievietojiet tajā dažas vērtības.

mysql> create database tecmint;
mysql> use tecmint;
mysql> CREATE TABLE employee (c int);
mysql> INSERT INTO employee (c) VALUES (1);
mysql> SELECT * FROM employee;
+------+
|  c  |
+------+
|  1  |
+------+
1 row in set (0.00 sec)

Pārbaudot SLAVE, izpildot to pašu komandu, tā arī vergā atgriezīs tās pašas vērtības.

mysql> use tecmint;
mysql> SELECT * FROM employee;
+------+
|  c  |
+------+
|  1  |
+------+
1 row in set (0.00 sec)

Tas ir viss, beidzot esat konfigurējis MySQL replikāciju, veicot dažas vienkāršas darbības. Plašāku informāciju varat atrast MySQL replikācijas ceļvedī.