Ошибка slave 1


Turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.


Showing results for 


. Search instead for 

Do you mean 

  • Answer HQ English

  • Games

  • STAR WARS™

  • STAR WARS™: Galaxy of Heroes

  • Technical Issues

  • Slave1 bug after update

Go To

  • Answer HQ English
  • Answers HQ Community
  • AHQ Community Resources
  • AHQ Announcements
  • Answers HQ Heroes and Champions
  • Public Information
  • Answers HQ Guardians
  • Public Information
  • EA — General Questions
  • EA – General Questions
  • Apex Legends
  • General Discussion
  • Find a Squad
  • Creators’ Corner
  • Technical Issues
  • Bug Reports
  • News & Game Updates
  • News & Game Updates
  • Feedback
  • General Feedback
  • Legends Feedback
  • Weapons & Loot Feedback
  • Map Feedback
  • Battlefield
  • Battlefield V
  • Battlefield 1
  • Battlefield 4
  • Battlefield 3
  • Other Battlefield Games
  • Battlefield General Discussion
  • Battlefield General Discussion
  • Battlefield 2042
  • Updates
  • General Discussion
  • Battlefield Portal
  • Creator’s Corner
  • Recruitment
  • Technical Issues
  • Bug Reports
  • Battlefield Announcements
  • Battlefield Announcements
  • Command and Conquer
  • Command & Conquer Games
  • Dead Space Games
  • Other Dead Space Games
  • Dead Space
  • General Discussion
  • Technical Issues
  • DiRT
  • DiRT Rally 2.0
  • DIRT 5
  • Dragon Age
  • Dragon Age: Inquisition
  • Other Dragon Age Games
  • EA Originals
  • Immortals of Aveum
  • Wild Hearts
  • EA Originals Games
  • EA Sports PGA Tour
  • News & Game Updates
  • General Discussion
  • Clubhouse
  • Technical Issues
  • Bug Reports
  • EA Sports Tactical Football
  • General Discussion
  • Technical Issues
  • Bug Reports
  • F1® Games
  • F1® Mobile Racing
  • Other F1® Games
  • F1® 23
  • General Discussion
  • F1® 22
  • Updates
  • F1® 22 Guides
  • General Discussion
  • The Drivers Lounge
  • Leagues
  • Setups
  • Technical Issues & Bug Reports
  • F1® 2021
  • Updates
  • General Discussion
  • Leagues
  • Setups
  • Technical Issues
  • Bug Reports
  • F1® RaceNet
  • F1® RaceNet Support BETA
  • FIFA
  • FIFA 21
  • FIFA 20
  • Other FIFA Games
  • FIFA Mobile
  • Updates, News & Announcements
  • General Discussion
  • Technical Issues
  • Bug Reports
  • FIFA 23
  • Gameplay
  • Career Mode
  • Pro Clubs
  • Volta
  • Online Seasons
  • General Discussion
  • Technical Issues
  • Bug Reports
  • Guides, Tips & Tricks
  • EA Connection Quality Report Feedback
  • FIFA 23 Info Hub
  • Campaigns & Promotions
  • Pitch Notes
  • Patch Notes
  • How to stay up to date?
  • Useful Articles
  • Media
  • FIFA Ultimate Team
  • FIFA Ultimate Team
  • FUT Content
  • Rivals
  • FUT Champions
  • Squad Battles
  • Draft
  • Moments
  • Squad Building Challenges
  • FUT Friendlies
  • FIFA 22
  • General Discussion
  • Technical Issues
  • GRID™
  • Other GRID™ Games
  • GRID™ Legends
  • General Discussion
  • Technical Issues
  • Bug Reports
  • Madden NFL Football
  • Madden NFL 22
  • Other Madden Games
  • Madden NFL Mobile
  • General Discussion
  • Game Suggestions
  • Technical Issues & Bug Reports
  • Madden NFL 23
  • Training Camp
  • General Discussion, Updates, & News
  • Game Suggestions
  • Madden NFL Ultimate Team
  • Franchise
  • Technical Issues
  • Bug Reports
  • NFL & Fantasy Football Discussion
  • Mass Effect
  • Mass Effect Legendary Edition
  • Other Mass Effect Games
  • NBA Live
  • NBA Live Mobile
  • Other NBA Live Games
  • NEED FOR SPEED™
  • NEED FOR SPEED™ HEAT
  • Other Need for Speed Games
  • NEED FOR SPEED™ Unbound
  • General Discussion
  • Technical Issues
  • Bug Reports
  • NHL
  • NHL 22
  • Other NHL Games
  • NHL 23
  • General Discussion & News
  • Game Suggestions
  • Be a Pro
  • Franchise Mode
  • Hockey Ultimate Team
  • World of CHEL
  • Technical Issues
  • Bug Reports
  • Plants vs. Zombies
  • Plants vs. Zombies 2
  • Other Plants vs. Zombies Games
  • Pogo
  • General Discussion & Feedback
  • Technical Help
  • Pogo Classic
  • SimCity
  • SimCity BuildIt
  • Other SimCity Games
  • Skate
  • Other Skate Games
  • skate.
  • General Discussion & Feedback
  • Spore
  • Spore
  • STAR WARS™
  • STAR WARS™ Battlefront™ II
  • Other STAR WARS™ Games
  • STAR WARS Jedi: Survivor™️
  • General Discussion
  • Technical Issues
  • Bug Reports
  • STAR WARS™: Galaxy of Heroes
  • Game Information
  • Technical Issues
  • Bug Reports
  • STAR WARS™: The Old Republic™
  • General Discussion & Technical Issues
  • Bug Reports
  • Super Mega Baseball 4
  • General Discussion
  • Technical Issues
  • Bug Reports
  • LOTR: Heroes of Middle-earth™
  • News & Announcements
  • General Discussion
  • Technical Issues
  • Bug Reports
  • The Simpsons: Tapped Out
  • The Simpsons: Tapped Out
  • The Sims
  • Project Rene Community Discussion
  • The Sims FreePlay
  • Other The Sims Games
  • The Sims 4
  • General Discussion & Feedback
  • Game and Mod/CC Issues
  • Technical Issues – PC
  • Technical Issues – Consoles
  • Technical Issues – Mac
  • Bug Reports
  • The Sims 3
  • Technical Issues – PC
  • Technical Issues – Mac
  • The Sims Mobile
  • General Discussion & Feedback
  • Technical Issues
  • Bug Reports
  • Titanfall
  • Titanfall Games
  • UFC
  • UFC 4
  • UFC Mobile
  • Other UFC Games
  • Other EA Games
  • Other EA Games
  • Accessibility
  • Accessibility News & Resources
  • General Discussion
  • Technical Issues
  • Bug Reports
  • EA app
  • General Discussion
  • Feedback
  • Bug Reports & Technical Issues
  • EA Play
  • EA Play — PC
  • EA Play — Console
  • EA Community Playtesting
  • News & Announcements
  • General Discussion
  • Origin Mac
  • General Discussion
  • Origin Mac Client — Technical Support

  • Register
  • Sign In
  • About

23.09.2021

mysql-logo

Сегодня в статье разберем ошибку репликации сервера MySQL — Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids. Данная ошибка может появится когда у вашего Master-сервера и Slave-сервера одинаковые номера server_id. Причем в конфигурационных файлах указанны явно разные id.

Давайте исправим данную ошибку. Для этого подключаемся к нашему Slave-серверу и заходим в mysql.

ssh root@my_server_ip
mysql -u root -p

Вводим команду, чтобы посмотреть какой номер присвоен нашему Slave-серверу:

mysql> show variables like 'server_id'

У меня на Slave-сервере данный вывод был следующим:

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     |
+---------------+-------+
1 row in set (0,01 sec)

В конфигурационном файле значения server_id стояло 2. Чтобы исправить данную ошибку вводим следующие команды:

mysql> STOP SLAVE;
mysql> set global server_id=2;
mysql> START SLAVE;

Теперь проверим вывод команды:

mysql> show variables like 'server_id'
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 2     |
+---------------+-------+
1 row in set (0,01 sec)

Как видно из вывода наш server_id изменился. Теперь можно посмотреть на информацию о Slave-сервере. Для этого набираем:

mysql> show slave statusG;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.1.1.2
                  Master_User: replica
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 2136621
               Relay_Log_File: mysql-relay-bin.000001
                Relay_Log_Pos: 154
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

Цветом выделил необходимые параметры о том, что наш Slave-сервер завелся и работает.

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВКонтакте или подписаться на Twitter. Ссылки в шапке страницы.
Заранее всем спасибо!!!

RSS

Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

5
2
голоса

Рейтинг статьи

hadoopmaster@dhruvhadoop1-HP-Compaq-dc5800-Small-Form-Factor:~/.ssh$ ssh-copy-id -i ~/.ssh/id_rsa.pub slave-1

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed


/usr/bin/ssh-copy-id: ERROR: ssh: connect to host slave-1 port 22: Connection refused

TheWanderer's user avatar

TheWanderer

19.3k12 gold badges49 silver badges65 bronze badges

asked Oct 15, 2015 at 15:10

dhruv bhardwaj's user avatar

I’d generally take «connection refused» to mean that the target server isn’t listening on port 22.

What’s the output of netstat -an|grep 22 when run on slave-1?

You should get something like:

$ netstat -an|grep 22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN

Probably you need to install/start the ssh server on slave-1

answered Oct 15, 2015 at 15:19

ssta's user avatar

sstassta

7133 silver badges8 bronze badges

I have the same problem. sometime the error is simple, ssh is not installed. the openssh-client should be installed on your local machine, and openssh-server should be installed on the remote computer. However, you can install both openssh-client and openssh-server on both machines.

Use this :

sudo apt-get update
sudo apt-get install openssh-server openssh-client

Visit https://ubuntuforums.org/showthread.php?t=1702992

edwinksl's user avatar

edwinksl

23.4k16 gold badges74 silver badges100 bronze badges

answered Aug 13, 2016 at 6:30

Mhamad El Itawi's user avatar

тестовая среда
Mysql версия: 5.7.22
Среда установки: докер

показать запись об ошибке статуса подчиненного

1. Slave_IO_Running: подключение

error connecting to master ‘[email protected]:3306’ — retry-time: 60

Решение:
Первый раз, когда я использовал docker для запуска двух mysql, но не учел проблемы связи между контейнерами, после решения проблемы с сетью сообщение об ошибке было устранено

Журнал ошибок

  mysql> show slave status G
  *************************** 1. row ***************************
                 Slave_IO_State: Connecting to master
                    Master_Host: 127.18.0.2
                    Master_User: wen
                    Master_Port: 3306
                  Connect_Retry: 60
                Master_Log_File: mysql-bin.000003
            Read_Master_Log_Pos: 154
                 Relay_Log_File: 72e00ec79233-relay-bin.000001
                  Relay_Log_Pos: 4
          Relay_Master_Log_File: mysql-bin.000003
               Slave_IO_Running: Connecting
              Slave_SQL_Running: Yes
                Replicate_Do_DB: 
            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: 154
                Relay_Log_Space: 154
                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: NULL
  Master_SSL_Verify_Server_Cert: No
                  Last_IO_Errno: 1045
                  Last_IO_Error: error connecting to master '[email protected]:3306' - retry-time: 60  retries: 1

Во-вторых, Slave_IO_Running: Нет

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the —replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

Решение:
Подсказка, что идентификатор сервера должен быть другим, но используйте переменные show, такие как ‘server_id’, чтобы увидеть, что master-slave server_id не совпадает, но всегда выдает эту ошибку.
Позже я действительно подумал о том, как это сделать. Я заново создал два сервиса msyql, и файл конфигурации был изменен. Приглашение было удалено после запуска.
Файл конфигурации главный-подчиненный до ошибки
Основной файл конфигурации базы данных:

    [mysqld]
    pid-file  = /var/run/mysqld/mysqld.pid
    socket    = /var/run/mysqld/mysqld.sock
    datadir   = /var/lib/mysql
    #log-error  = /var/log/mysql/error.log
    # By default we only accept connections from localhost
    #bind-address = 127.0.0.1
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0

    character_set_server = utf8
    init_connect = 'SET NAMES utf8'
         log-bin = mysql-bin # Запустить двоичную систему журналов
         server-id = 109 # Локальный идентификатор базы данных
         binlog-do-db = test # двоичное имя базы данных для синхронизации
    log-bin=/var/log/mysql/updatelog 
         binlog-ignore-db = mysql # Избегайте синхронизации пользовательской конфигурации mysql, чтобы избежать ненужных проблем

Из файла конфигурации базы данных

  [mysqld]
    pid-file  = /var/run/mysqld/mysqld.pid
    socket    = /var/run/mysqld/mysqld.sock
    datadir   = /var/lib/mysql
    #log-error  = /var/log/mysql/error.log
    # By default we only accept connections from localhost
    #bind-address = 127.0.0.1
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0

    character_set_server = utf8
    init_connect = 'SET NAMES utf8'
    log-bin=mysql-bin
    server-id=117
    master-host=172.18.0.2
    master-user=root
    master-password=123456
    master-port=3306
    master-connect-retry=60
    replicate-ignore-db=mysql
    replicate-do-db=test

Обычно запускают файл конфигурации базы данных master-slave
Основной файл конфигурации базы данных:

   [mysqld]
    pid-file  = /var/run/mysqld/mysqld.pid
    socket    = /var/run/mysqld/mysqld.sock
    datadir   = /var/lib/mysql
    #log-error  = /var/log/mysql/error.log
    # By default we only accept connections from localhost
    #bind-address = 127.0.0.1
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0

    character_set_server = utf8
    init_connect = 'SET NAMES utf8'
    log-bin = mysql-bin # Запустить двоичную систему журналов
         server-id = 1 # Локальный идентификатор базы данных
         # binlog-do-db = test # двоичное имя базы данных для синхронизации
    #log-bin=/var/log/mysql/updatelog 
         # binlog-ignore-db = mysql # Избегайте синхронизации пользовательских настроек mysql, чтобы избежать ненужных проблем

Из файла конфигурации базы данных

[mysqld]
    pid-file  = /var/run/mysqld/mysqld.pid
    socket    = /var/run/mysqld/mysqld.sock
    datadir   = /var/lib/mysql
    #log-error  = /var/log/mysql/error.log
    # By default we only accept connections from localhost
    #bind-address = 127.0.0.1
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0

    character_set_server = utf8
    init_connect = 'SET NAMES utf8'
    log-bin=mysql-bin
    server-id=2
    #master-host=172.18.0.2
    #master-user=root
    #master-password=123456
    #master-port=3306
    #master-connect-retry=60
    #replicate-ignore-db=mysql
    #replicate-do-db=test

Журнал ошибок

    mysql> show slave status G
    *************************** 1. row ***************************
                   Slave_IO_State: 
                      Master_Host: 127.18.0.2
                      Master_User: root
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: 
              Read_Master_Log_Pos: 4
                   Relay_Log_File: 619018ffa281-relay-bin.000002
                    Relay_Log_Pos: 4
            Relay_Master_Log_File: 
                 Slave_IO_Running: No
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              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: 0
                  Relay_Log_Space: 154
                  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: 1593
                    Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

3. Получил фатальную ошибку 1236 от мастера при чтении данных из двоичного журнала: «Не удалось найти первое имя файла журнала в двоичном файле индекса журнала»

Решение:
1. Сначала выполните остановку ведомого на ведомой базе данных;
2. Обновите журналы основной базы данных; очистите журналы; обновите журналы binlog, обновленные журналы будут +1

mysql> show master statusG;
  *************************** 1. row ***************************
               File: mysql-bin.000004
           Position: 154
       Binlog_Do_DB: 
   Binlog_Ignore_DB: 
  Executed_Gtid_Set: 
  1 row in set (0.01 sec)

  ERROR: 
  No query specified

  mysql> flush logs;
  Query OK, 0 rows affected (0.11 sec)

3. Проверьте основной статус снова

mysql> show master statusG;
  *************************** 1. row ***************************
               File: mysql-bin.000005
           Position: 155
       Binlog_Do_DB: 
   Binlog_Ignore_DB: 
  Executed_Gtid_Set: 
  1 row in set (0.01 sec)

  ERROR: 
  No query specified

4. Основная информация об устройстве из базы данных
Введите CHANGE MASTER TO MASTER_LOG_FILE = «mysql-bin.000005», MASTER_LOG_POS = 155;
выполнить запуск ведомого;

  mysql> show slave statusG;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 172.17.0.5
                      Master_User: slave_user
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 319
                   Relay_Log_File: d6dffe0be29f-relay-bin.000002
                    Relay_Log_Pos: 485
            Relay_Master_Log_File: mysql-bin.000004
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              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: 319
                  Relay_Log_Space: 699
                  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
                      Master_UUID: 3f1867a3-b9b4-11e8-bdc9-0242ac110005
                 Master_Info_File: /var/lib/mysql/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Master_Retry_Count: 86400
                      Master_Bind: 
          Last_IO_Error_Timestamp: 
         Last_SQL_Error_Timestamp: 
                   Master_SSL_Crl: 
               Master_SSL_Crlpath: 
               Retrieved_Gtid_Set: 
                Executed_Gtid_Set: 
                    Auto_Position: 0
             Replicate_Rewrite_DB: 
                     Channel_Name: 
               Master_TLS_Version: 
    1 row in set (0.00 sec)

    ERROR: 
    No query specified

Журнал ошибок

 *************************** 1. row ***************************
                   Slave_IO_State: 
                      Master_Host: 172.17.0.5
                      Master_User: slave_user
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: master-bin.000003
              Read_Master_Log_Pos: 154
                   Relay_Log_File: d6dffe0be29f-relay-bin.000001
                    Relay_Log_Pos: 4
            Relay_Master_Log_File: master-bin.000003
                 Slave_IO_Running: No
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              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: 154
                  Relay_Log_Space: 154
                  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: NULL
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 1236
                    Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

master-slave1В предыдущих статьях шла речь о базовой установке и настройке Percona mysql серверов и о настройке Master-Master репликации. Продолжим знакомство с Percona mysql репликацией и перейдем к настройке и тестированию Master-Slave репликации. Как и в предыдущих статьях, наведу рисунок нашей схемы репликации, которую мы затеяли (рис. 3).

master-slave
Рисунок 3 — Схема Master-Slave репликации

3.2 Master-Slave репликация

Мастер-Мастер репликация была настроена, теперь можно добавлять слейвы (рис. 3). Для этого нам нужно добавить конфигурационный файл /etc/mysql/my.cnf для каждого mysql-слейва, который входит в репликацию.

3.2.1 Настройка m-slave1 слейва

Сначала настроим первый слейв-сервер.

root@m-slave1:~# cat /etc/mysql/my.cnf
[mysqld]
#Уникальный идентификатор сервера
server-id = 3

#Логи ошибок
log_error = /var/log/mysql/mysql.err

#Путь к relay-логам слейва (бинлог, скачанный с мастера)
relay-log = /var/lib/mysql/slave-mysql-relay-bin
relay-log-index = /var/lib/mysql/slave-mysql-relay-bin.index

#БД, которые нужно/не нужно реплицировать
replicate-do-db = testdb
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema

#Чтобы не было конфликтов автоинкремента, говорим серверу,
#чтобы id генерировались начиная с 4-го прибавляя по 10,
# например 11, 21, 31, 41...
auto_increment_increment = 10
auto_increment_offset = 1
 

Теперь рестартуем mysql

root@m-slave1:~# /etc/init.d/mysql restart
 * Stopping MySQL (Percona Server) mysqld                                                                                                                       [ OK ]
 * Starting MySQL (Percona Server) database server mysqld                                                                                                       [ OK ]
 * Checking for corrupt, not cleanly closed and upgrade needing tables.

3.2.2 Настройка m-slave2 слейва

Переходим к настройке второго слейва.

root@m-slave2:~# cat /etc/mysql/my.cnf
[mysqld]
#Уникальный идентификатор сервера
server-id = 4

#Логи ошибок
log_error = /var/log/mysql/mysql.err

#Путь к relay-логам слейва (бинлог, скачанный с мастера)
relay-log = /var/lib/mysql/slave-mysql-relay-bin
relay-log-index = /var/lib/mysql/slave-mysql-relay-bin.index

#БД, которые нужно/не нужно реплицировать
replicate-do-db = testdb
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema

#Чтобы не было конфликтов автоинкремента, говорим серверу,
#чтобы id генерировались начиная с 4-го прибавляя по 10,
# например 12, 22, 32, 42...
auto_increment_increment = 10
auto_increment_offset = 2
 

Теперь рестартуем mysql

root@m-slave2:~# /etc/init.d/mysql restart
 * Stopping MySQL (Percona Server) mysqld                                                                                                                       [ OK ]
 * Starting MySQL (Percona Server) database server mysqld                                                                                                       [ OK ]
 * Checking for corrupt, not cleanly closed and upgrade needing tables.

3.2.3 Запуск репликации

Если вы следовали пункту 3.1.4 (Тестирование мастер репликации) после настройки Мастер – Мастер репликации, то на обоих слейвах нужно разворачивать новый дамп testdb, так как в эту БД добавлялись данные. Т.е. для слейва m-slave1 нужно снять дамп с мастера m-serv1 и развернуть (описано в пункте 2.2 Дамп и деплой), для m-slave2 дамп нужно снять с m-serv2 и развернуть. После того, как дамп будет развернут, у нас будут следующие данные в БД testdb.

root@m-slave1:~# mysql -u root -p -e 'use testdb;select * from users;'
Enter password:
+----+-------+
| id | name  |
+----+-------+
|  1 | Alex  |
|  3 | Vova  |
|  4 | Pasha |
| 13 | Frodo |
| 14 | Misha |
+----+-------+

Т.е. те же данные, что остались на мастер-серверах после тестирования Масте-Мастер репликации.
Теперь осталось запустить репилкацию. В случаи с m-slave1 мастер сервер должен быть m-serv1, поэтому переходим на первый мастер сервер и смотрим MASTER_LOG_FILE и MASTER_LOG_POS.

root@m-serv1:~# mysql -u root -p -e 'show master status;'
Enter password:
+-------------------------+----------+--------------+--------------------------------------------------+-------------------+
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB                                 | Executed_Gtid_Set |
+-------------------------+----------+--------------+--------------------------------------------------+-------------------+
| server-mysql-bin.000006 |      120 |              | information_schema,mysql,performance_schema      |                   |
+-------------------------+----------+--------------+--------------------------------------------------+-------------------+

Следовательно MASTER_LOG_FILE = server-mysql-bin.000006, а MASTER_LOG_POS = 120. Теперь переходим обратно на m-slave1 и настраиваем репликацию.

root@m-slave1:~# mysql -u root -p -e "CHANGE MASTER TO MASTER_HOST = '192.168.1.201', MASTER_USER = 'replica', MASTER_PASSWORD = '%repl2015', MASTER_LOG_FILE = 'server-mysql-bin.000006', MASTER_LOG_POS = 120;"

Все интуитивно понятно. Теперь стартуем слейв и смотрим статус.

root@m-slave1:~# mysql -u root -p -e 'start slave;'
root@m-slave1:~# mysql -u root -p -e 'show slave status G;'
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.201
                  Master_User: replica
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: server-mysql-bin.000006
          Read_Master_Log_Pos: 120
               Relay_Log_File: slave-mysql-relay-bin.000002
                Relay_Log_Pos: 290
        Relay_Master_Log_File: server-mysql-bin.000006
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: testdb
          Replicate_Ignore_DB: information_schema,mysql,performance_schema
           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: 120
              Relay_Log_Space: 469
              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
                  Master_UUID: f208be92-fa66-11e4-a905-08002742f2f0
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0

Все ок. Теперь делаем те же движения для m-slave2. Переходим на второй мастер сервер и смотрим MASTER_LOG_FILE и MASTER_LOG_POS.

root@m-serv2:~# mysql -u root -p -e 'show master status;'
Enter password:
+-------------------------+----------+--------------+--------------------------------------------------+-------------------+
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB                                 | Executed_Gtid_Set |
+-------------------------+----------+--------------+--------------------------------------------------+-------------------+
| server-mysql-bin.000002 |      120 |              | information_schema,mysql,performance_schema      |                   |
+-------------------------+----------+--------------+--------------------------------------------------+-------------------+

Следовательно MASTER_LOG_FILE = server-mysql-bin.000002, а MASTER_LOG_POS = 120. Теперь переходим обратно на m-slave2 и настраиваем репликацию.

root@m-slave2:~# mysql -u root -p -e "CHANGE MASTER TO MASTER_HOST = '192.168.1.202', MASTER_USER = 'replica', MASTER_PASSWORD = '%repl2015', MASTER_LOG_FILE = 'server-mysql-bin.000002', MASTER_LOG_POS = 120;"

Все интуитивно понятно. Теперь стартуем слейв и смотрим статус.

root@m-slave2:~# mysql -u root -p -e 'start slave;'
root@m-slave2:~# mysql -u root -p -e 'show slave status G;'
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.202
                  Master_User: replica
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: server-mysql-bin.000002
          Read_Master_Log_Pos: 120
               Relay_Log_File: slave-mysql-relay-bin.000002
                Relay_Log_Pos: 290
        Relay_Master_Log_File: server-mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: testdb
          Replicate_Ignore_DB: information_schema,mysql,performance_schema
           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: 120
              Relay_Log_Space: 469
              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: 2
                  Master_UUID: 25f9f3ac-fd3b-11e4-bb77-080027ead940
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0

3.2.4 Тестируем репликацию

Тестируем всю нашу цепочку репликации (рис. 1). Перейдем на первый мастер сервер и добавим новую запись в testdb.users.

root@m-serv1:~# mysql -u root -p -e 'USE testdb; INSERT INTO users(name) VALUES ("Server1 record");'
root@m-serv1:~# mysql -u root -p -e 'select * from testdb.users;'
+----+----------------+
| id | name           |
+----+----------------+
|  1 | Alex           |
|  3 | Vova           |
|  4 | Pasha          |
| 13 | Frodo          |
| 14 | Misha          |
| 23 | Server1 record |
+----+----------------+

Теперь проверяем добавилась ли запись на все слейвы и на второй мастер

root@m-slave1:~# mysql -u root -p -e 'use testdb;select * from users;'
+----+----------------+
| id | name           |
+----+----------------+
|  1 | Alex           |
|  3 | Vova           |
|  4 | Pasha          |
| 13 | Frodo          |
| 14 | Misha          |
| 23 | Server1 record |
+----+----------------+

root@m-slave2:~# mysql -u root -p -e 'use testdb;select * from users;'
+----+----------------+
| id | name           |
+----+----------------+
|  1 | Alex           |
|  3 | Vova           |
|  4 | Pasha          |
| 13 | Frodo          |
| 14 | Misha          |
| 23 | Server1 record |
+----+----------------+

root@m-serv2:~# mysql -u root -p -e 'use testdb;select * from users;'
+----+----------------+
| id | name           |
+----+----------------+
|  1 | Alex           |
|  3 | Vova           |
|  4 | Pasha          |
| 13 | Frodo          |
| 14 | Misha          |
| 23 | Server1 record |
+----+----------------+

Как видим, все в порядке. Теперь добавим запись на втором мастере.

root@m-serv2:~# mysql -u root -p -e 'USE testdb; INSERT INTO users(name) VALUES ("Server2 record");'
root@m-serv2:~# mysql -u root -p -e 'select * from testdb.users;'
+----+----------------+
| id | name           |
+----+----------------+
|  1 | Alex           |
|  3 | Vova           |
|  4 | Pasha          |
| 13 | Frodo          |
| 14 | Misha          |
| 23 | Server1 record |
| 24 | Server2 record |
+----+----------------+

Теперь проверяем добавилась ли запись на все слейвы и на первый мастер

root@m-slave1:~# mysql -u root -p -e 'use testdb;select * from users;'
+----+----------------+
| id | name           |
+----+----------------+
|  1 | Alex           |
|  3 | Vova           |
|  4 | Pasha          |
| 13 | Frodo          |
| 14 | Misha          |
| 23 | Server1 record |
| 24 | Server2 record |
+----+----------------+

root@m-slave2:~# mysql -u root -p -e 'use testdb;select * from users;'
+----+----------------+
| id | name           |
+----+----------------+
|  1 | Alex           |
|  3 | Vova           |
|  4 | Pasha          |
| 13 | Frodo          |
| 14 | Misha          |
| 23 | Server1 record |
| 24 | Server2 record |
+----+----------------+

root@m-serv1:~# mysql -u root -p -e 'use testdb;select * from users;'
+----+----------------+
| id | name           |
+----+----------------+
|  1 | Alex           |
|  3 | Vova           |
|  4 | Pasha          |
| 13 | Frodo          |
| 14 | Misha          |
| 23 | Server1 record |
| 24 | Server2 record |
+----+----------------+

Как видим, репликация работает как и предполагалось.

4. Распространенные ошибки

==========================================================================
Ошибка: ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
Решение:

mysql> reset slave;
Query OK, 0 rows affected (0.00 sec)

mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.201', MASTER_USER='rep_user', MASTER_PASSWORD='rep_user', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=120, MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected, 2 warnings (0.05 sec)

mysql> start slave;

==========================================================================
Ошибки:

  • Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND for deleting row
  • Can’t drop database ‘********’: database doesn’t exist’
  • Error ‘Duplicate entry’
  • Could not execute Write_rows event on table ***********: Duplicate entry ‘XXXXXXXX’ for key ‘ххххххх’, Error_code: 1062

Решение: Эти ошибки можно просто скипнуть, но посмотреть их причины сначала.

mysql -uroot -p -e 'STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;'

==========================================================================
Ошибка: Relay log read failure (#1594): Could not parse relay log event entry.
Решение:

#Подключаемся к серверу, где возникла проблема и смотрим статус репликации
root@server:~# mysql -uroot -p -e 'show slave status G;' | grep -E 'Relay_Master_Log_File|Exec_Master_Log_Pos'
        Relay_Master_Log_File: mysql-bin.008189
      Exec_Master_Log_Pos: 71687831

# Останавливаем репликацию и обновляем бин-лог и позицию
#master_log_file = Relay_Master_Log_File = mysql-bin.008189
#master_log_pos = Exec_Master_Log_Pos = 71687831
root@server:~# mysql -uroot -p -e "STOP SLAVE;"
root@server:~# mysql -uroot -p -e "CHANGE MASTER TO master_log_file='mysql-bin.008189', master_log_pos=71687831;"

#Стартуем слейв
root@server:~# mysql -uroot -p218e5ccb4a834382%FBF87B604F1FE14B -e "START SLAVE;"

==========================================================================

Далее пойдет речь о полезных командах для администрирования percona mysql сервера.

Понравилась статья? Поделить с друзьями:
  • Ошибка skyui error code 1
  • Ошибка skyrim together
  • Ошибка skuid установить gvlk aact
  • Ошибка skuid при активации офиса aact
  • Ошибка skuid при активации windows 10