Страница 1 из 2

Дублирующий MySQL

Добавлено: 2007-07-21 19:06:43
kozak
Есть рабочие серверы с множеством служб используемых mySQL.
Рядом стоит mySQL сервер в чистом виде, используемый для хранения БД.

Иногда, когда сервер перегружен и максимальное количество запросов превышает допустимое значение,
сервер перестает принимать запросы. Это плохо=)
Появилась идея создания SLAVE-сервера.

По этому поводу появился вопрос по настройке DNS-сервера.
Как я понимаю нужно создать две A-зоны с адресами двух серверов.
И по-принципу "не работает - идем дальше" все должно работать.

Есть предложения?

P.S. Маны, доки читал, на mysql.com был.

Re: Дублирующий MySQL

Добавлено: 2007-07-21 19:16:12
Alex Keda
а о кластере не думал?

Re: Дублирующий MySQL

Добавлено: 2007-07-21 19:29:05
kozak
Звучит страшно=) Нет не думал. С чего лучше начать!?

Re: Дублирующий MySQL

Добавлено: 2007-07-21 19:29:46
Alex Keda
думаю с официально сайта..
по крайней мере - я не делал...

Re: Дублирующий MySQL

Добавлено: 2007-07-24 7:42:54
Sw%00p
репликация думаю поможет

Re: Дублирующий MySQL

Добавлено: 2007-07-26 9:12:54
ginger22
Копай в сторону mysql-proxy
Или как то там.

Re: Дублирующий MySQL

Добавлено: 2009-05-29 13:58:51
kozak
Новичкам по теме рекомендую: http://www.onlamp.com/pub/a/onlamp/2006 ... ation.html

Re: Дублирующий MySQL

Добавлено: 2009-07-24 11:33:44
gfer

Re: Дублирующий MySQL

Добавлено: 2009-07-24 11:42:09
gfer

Re: Дублирующий MySQL

Добавлено: 2009-10-15 13:37:30
weec
ndb советуйте ...
а юзает ли его кто в продакшене?

ndb-engine по типу запросов вообще сильно урезан

kozak, используй репликацию

Re: Дублирующий MySQL

Добавлено: 2009-10-15 13:57:47
kozak
Спасибо, уже собрал, забыл... работает! :smile:

Re: Дублирующий MySQL

Добавлено: 2009-10-29 10:07:45
kozak
Вопрос по репликации.

Репликация не работает если не использовать функцию "USE database" перед SQL-запросом.

т.е. USE test; INSERT INTO `test`.`table` (`ID`, `Data`, `TS`) VALUES (NULL, 'value', CURRENT_TIMESTAMP); - реплицируется отлично.
но если убрать USE test; то этот запрос не добавляется в бинарный журнал репликации.

Является ли обязательным параметр выборки БД ("USE test") или есть другие варианты решения этой проблемы глобально на уровне сервера? :unknown:

Re: Дублирующий MySQL

Добавлено: 2009-10-29 10:54:50
Gamerman
Чем именно репликацию делаете?

Re: Дублирующий MySQL

Добавлено: 2009-10-31 11:30:03
kozak
В смысле, "чем"?

Сервер MySQL
Таблицы MyISAM
Формат BINLOG - STATEMENT

:unknown:

Re: Дублирующий MySQL

Добавлено: 2009-10-31 11:42:04
Gamerman
kozak писал(а):В смысле, "чем"?

USE test; INSERT INTO `test`.`table` (`ID`, `Data`, `TS`) VALUES (NULL, 'value', CURRENT_TIMESTAMP);
Клиент какой?

Re: Дублирующий MySQL

Добавлено: 2009-10-31 11:52:12
kozak
PHP mysql_query

Re: Дублирующий MySQL

Добавлено: 2009-10-31 12:08:18
Gamerman
Насколько я знаю, для каждого пакет-запроса PHP создает сессию и потом разрывает. При логине, он подключается к одной БД, которая может не совпадать с нужной.
Если же все запросы выполняются в одной сессии, то выбирать базу нужно только один раз.

Re: Дублирующий MySQL

Добавлено: 2009-10-31 12:12:29
kozak
Тем не менее запрос "USE test;" необходим даже при запросе типа "INSERT INTO `test`.`table`...", где мы итак указываем таблицу test с которой будем работать?

Re: Дублирующий MySQL

Добавлено: 2009-10-31 12:21:28
Gamerman
Запрос

Код: Выделить всё

USE test
указывает, что мы работаем с базой даных test.
Запрос

Код: Выделить всё

select, insert, update 
test указывает, что мы работаем с таблицой test

Вы случайно до этого с ФоксПро не работали активно? :)

Re: Дублирующий MySQL

Добавлено: 2009-10-31 12:37:42
kozak
Спасибо, Gamerman.

Можно ли использовать опцию "DELAY_KEY_WRITE" для реплицирующихся таблиц?

Re: Дублирующий MySQL

Добавлено: 2009-10-31 12:40:21
Gamerman
А что мануал говорит по єтому поводу?

Re: Дублирующий MySQL

Добавлено: 2009-10-31 12:43:39
kozak
If you set this variable to ALL (DELAY_KEY_WRITE), you should not use MyISAM tables from within another program (such as another MySQL server or myisamchk) when the tables are in use. Doing so leads to index corruption.
Вроде как нельзя. Но не уверен точно, т.к. используем не для всех тамлиц (ALL) а конкретно для некоторых. :unknown:

Re: Дублирующий MySQL

Добавлено: 2009-10-31 12:44:38
Gamerman
А что она делает?

Re: Дублирующий MySQL

Добавлено: 2009-10-31 12:53:27
kozak
--delay-key-write=ALL

Don't flush key buffers between writes for any MyISAM table.

Re: Дублирующий MySQL

Добавлено: 2009-10-31 13:00:04
Gamerman
delay_key_write Если включен (по умолчанию - включен), MySQL будет учитывать параметр DELAY_KEY_WRITE для команды CREATE TABLE. Это означает, что ключевой буфер таблиц с данным параметром будет сбрасываться на диск не при каждом обновлении индексов, а только при закрытии таблицы. Такой режим работы значительно ускоряет запись ключей, однако в случае использования данного параметра необходимо будет также добавить автоматическую проверку всех таблиц при помощи myisamchk --fast --force. Обратите внимание: если запустить mysqld с параметром --delay-key-write-for-all-tables, то все таблицы будут обрабатываться таким образом, как будто они были созданы с применением параметра delay_key_write. Этот флаг можно снять, запустив mysqld с параметром --skip-new или --safe-mode.