Turn on suggestions
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 — 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
19.3k12 gold badges49 silver badges65 bronze badges
asked Oct 15, 2015 at 15:10
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
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
23.4k16 gold badges74 silver badges100 bronze badges
answered Aug 13, 2016 at 6:30
тестовая среда
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'
В предыдущих статьях шла речь о базовой установке и настройке Percona mysql серверов и о настройке Master-Master репликации. Продолжим знакомство с Percona mysql репликацией и перейдем к настройке и тестированию Master-Slave репликации. Как и в предыдущих статьях, наведу рисунок нашей схемы репликации, которую мы затеяли (рис. 3).
Рисунок 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 сервера.