У меня есть настройка репликации между двумя серверами mysql, один из которых является главным, а другой - подчиненным.
Это хорошо работает, если мастер не перезапускается по какой-либо причине. Когда он возвращается, ведомое устройство не подключается. На раб делаю start slave; тогда это терпит неудачу с
090922 17:49:59 [ОШИБКА] Не удалось открыть журнал реле '/var/run/mysqld/mysqld-relay-bin.000009' (relay_log_pos 67391580) 090922 17:49:59 [ОШИБКА] Не удалось найти целевой журнал во время инициализация журнала реле
И я вынужден взять все данные с главного устройства, загрузить их обратно в подчиненное устройство и запустить его снова.
Как я могу избежать этого, чтобы, если мастер перезапускается, это не задача переделывать все базы данных.
Вот конфигурационный файл Red Hat 5, mysql 5.0.45
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
server-id = 9180
slave_compressed_protocol=1
max_allowed_packet=16M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Похоже, что перезапуск мастера по какой-то причине стирает двоичные журналы. MySQL не сделает этого сам по себе; он либо получает команду RESET MASTER
в какой-то момент, или что-то при запуске сервера очищается /var/run
.
Я видел это однажды раньше, когда конфигурация на ведомом устройстве использовала DNS-имя для подключения к мастеру. В моем случае решение заключалось в использовании вместо этого IP-адреса.
Между прочим, когда вы говорите: «Я начинаю рабом», вы сначала останавливаете его, не так ли?
Я видел это раньше. Не помещайте свои журналы в / var / run. Если я правильно помню, система автоматически стирает файлы в этом каталоге. Попробуйте поместить свои двоичные журналы в другой каталог и посмотрите, появится ли ваша ошибка снова.