LINUX.ORG.RU
ФорумAdmin

Debian squeeze - Надо обновить mysql до 5.5. Как?


0

2

Приветствую глубокоуважаемого Олла.

Потребовалось на debian squeeze обновить mysql с версии 5.1 до 5.5 поделитесь ссылками на хауту если есть у кого. на данный момент реализовал только вариант установки из sid репозитория, но оно тянет много пакетов и результат странный. /etc/init.d/mysql start сообщает об ошибке но при этом mysql цепляется к серверу и оно работает. Репликация при апгрейде сломалась.

Если кто знает подскажите - возможна в принципе репликация MySQL 5.5 с MySQL 5.1 сервера? Задача усложняется еще и тем что используется репликация и надо заапгрейдить 2 реплицирующихся сервера без остановки.

Всех благ! Олег.

★★★

Быстро гугль работает...

Решил tot погуглить на тему: «репликация mysql 5.1 5.5» и ссылка на это письмо была 5 вхождением :)

n0mad ★★★
() автор топика

я бы сам пакет сделал

GoNaX ★★★
()

# mysql_upgrade -u root -p pass

запускал?

надо заапгрейдить 2 реплицирующихся сервера без остановки.

Ты определись, что тебе надо.

zgen ★★★★★
()
Ответ на: комментарий от zgen

Спасибо за подсказку. Явно не запускал, видимо оно запускалось само при установке mysql-5.5. После Вашей подсказки запустил явно. Репликация 5.1-5.5 видимо невозможна или надо начинать снова.

Пока имею: mysql> start slave; ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

И в /var/log/messages: May 17 11:40:15 dbss mysqld: 120517 11:40:15 [ERROR] Failed to open the relay log '/var/log/mysql/slave-relay-bin.003555' (relay_log_pos 1563320) May 17 11:40:15 dbss mysqld: 120517 11:40:15 [ERROR] Could not find target log during relay log initialization

Для инициализции репликаци надо видимо останавливать сервер, делать дамп баз что несколько проблематично. Странно что до сих пор mysql не умеет делать начальную синхронизацию в онлайне, ведь используется транзакционная база innodb. Видимо придется таки останавливать, накатывать 5.5 и запускать, а в случае траблов останется живая реплика. Потом уже делать новую реплику.

Еще раз спасибо за полезную комманду, теперь буду о ней знать.

всех благ, Олег.

n0mad ★★★
() автор топика
Ответ на: комментарий от n0mad

Ну так сделай дамп с --single-transaction и --master-data, получишь актуальный дамп с позицией для логов и не останавливая базу. А сейчас у тебя, похоже, уже сильно отстал slave, вот и не может найти лог.

YAR ★★★★★
()
Ответ на: комментарий от ventilator
.........
This option will turn --lock-all-tables on, unless --single-transaction is specified too (in which case a global read lock is only taken a short time at the beginning of the dump; don't forget to read about --single-transaction below).
.........
YAR ★★★★★
()
Ответ на: комментарий от YAR

Ну так сделай дамп с --single-transaction и --master-data, получишь актуальный дамп с позицией для логов и не останавливая базу. А сейчас у тебя, похоже, уже сильно отстал slave, вот и не может найти лог. YAR **** (17.05.2012 12:43:54)

Думал про такое. Тупо остановил слейв, pfnfhbk /var/lib/mysql и /var/log/mysql, перенес их на новый слейв с mysql-5.5, распаковал и рестартанул. сервер стартанул, базы доступны но выдает как раз эту ошибку. Запускал mysql_upgrde как тут рекомендовали, не помогло.

В другом форуме послали на dotdeb за бэкпортом mysql-5.5 для squeze, сейчас опять подним копию зеркала и попытаюсь сделать второе зеркало с mysql-5.5. если процесс пройдет и 5.5 будет зеркалиться с 5.1 то задача решена, иначе придется через остановку базы идти.

Всех благ, Олег.

n0mad ★★★
() автор топика
Ответ на: комментарий от n0mad

Тупо остановил слейв, pfnfhbk /var/lib/mysql и /var/log/mysql, перенес их на новый слейв с mysql-5.5

Вообще-то я как раз говорил про вариант, когда делать так не надо.

YAR ★★★★★
()
Ответ на: комментарий от YAR

Вообще-то я как раз говорил про вариант, когда делать так не надо.

Мне надо сделать зеркало ХОСТА. Я уже просетапленный хост зеркалю, пускаю новую ВМ, меняю id сервера, и запускаю процесс. Получаю второе зеркало основного а потом с ним уже буду играться.

Я вообще пока не совсем осознаю механизм создния сервера репликации. Получается надо дампить каждую базу записывая точку начала для каждой. Возьму mysql-5.5 с dotdeb и стартану. Если репликация с ходу не взлетит почищу все базы и буду с нуля репликцию настраивать.

Не совсем понимаю с master_log_pos. Эта позиция для репликации глобальная а кждая база даже в случае с --single-transaction будет создана в свой момент. Скажем есть базы 1,2,3. В какой момент включать репликацию? Пока снимется 1 уже обновится 2 и пока снимаются 2 и 3 тоже пройдт обноления. Получил я на слейве 3 базы созданные в разные моменты и стартую репликацию..... с ОДНОЙ позиции. Или для каждой базы записывать позицию а потом как то для каждой базы стартовать репликацию с определенной позиции?

В общем еще читать и читать матчасть.

Всех благ,
Олег.

n0mad ★★★
() автор топика
Ответ на: комментарий от n0mad

Рецепт решения оказался прост.

/etc/apt/sources.list.d/dotdeb.list:
deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all
#apt-get update
#apt-get install mysql-server-5.5

/etc/mysql/my.cnf
Убрал master-host
Убрал master-user
Убрал master-password
Убрал master-connect-retry
потому что в 5.5 это все хранится в базе.

После этого сделал >slave stop и >slave start

При репликации возможно появление ошибок, видимых
по команде: >show slave status\G
Надо искать вхождение: Last_SQL_Errno: и номер ошибки указать
в /etc/mysql/my.cnf строкой:
slave-skip-errors = NNNN,NNNN Где NNNN - номера ошибок.
И затем рестартануть mysql сервер.
Сервер пропустит эти ошибки и продолжит репликацию.

Консистентность копии остается под вопросом, считаю однако что лучше иметь такую копию чем не иметь ее вовсе.

На этом мою тему можно считать завершенной, возможно эта информация пригодится кому то еще.

Всех благ,
Олег.

n0mad ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.