Size: a a a

2020 November 20

ВТ

Виктор Ткаченко... in MySQL
Andrey Paliy
Ребят подскажите по отставанию репликации.. Мускул 5.7, Тип логов поставил Mixed, ранее был ROW. Изменение результатов не дало, как росло отставание, так и растёт. Самое интересное, бинлоги приходят с мастера и Exec_Master_Log_Pos тоже растет, но видимо просто медленно все переваривает. С сетью и с записью на диск все ок. Т.е. ресурсы слейва не используются почти совсем, запись на диск выше 1мб/с не поднимается. Машинки с мастером примерно одинаковые. Что еще можно глянуть?
Слейв же вроде накатывает данные в однопоток..
источник

AP

Andrey Paliy in MySQL
Виктор Ткаченко
Слейв же вроде накатывает данные в однопоток..
Это да. При запуске слейва отставание было 4500 примерно. Потом он минут за 15 догнал до 3000 и все, теперь чисто растет вниз и попыток догнать у него нет.
источник

G

Grigorij in MySQL
Vladimir Eliseev
Ребят, подскажите пожалуйста.
Есть таблица t1, в ней есть поле num.

Мне нужно:
1. найти максимальный num в этом году.
select max(num) as maximus form t1 where year = '2020';

2. вставить новую запись с новым(инкрементированным) номером.
insert .... into t1 values(maximus+1);

Но при этом в условиях согласованного чтения это все не подходит. Ибо одновременно могут другие транзакции читать эти записи.
И вставить, соответственно, запись с одним и тем же номером.

Я пробовал:
select max(num) as maximus form t1 where year = '2020' for update;
Но это бессмысленно, ибо я блокирую эти записи на изменение для других транзакций.
А мне нужно их блокировать на чтение от других транзакций.
Подскажите плз, как это лучше сделать?
Если база не нагруженая, то можно кинуть уникальный составной индекс и кэтчить экспепшены.
Ещё можно использовать именованые локи - GET_LOCK.

А лучше всего вынести эти значения в отдельную таблицу и блокировать там.
источник

G

Grigorij in MySQL
Andrey Paliy
Ребят подскажите по отставанию репликации.. Мускул 5.7, Тип логов поставил Mixed, ранее был ROW. Изменение результатов не дало, как росло отставание, так и растёт. Самое интересное, бинлоги приходят с мастера и Exec_Master_Log_Pos тоже растет, но видимо просто медленно все переваривает. С сетью и с записью на диск все ок. Т.е. ресурсы слейва не используются почти совсем, запись на диск выше 1мб/с не поднимается. Машинки с мастером примерно одинаковые. Что еще можно глянуть?
А что показывает iotop,htop? Слейв точно не упирается в ресурсы?
источник

G

Grigorij in MySQL
Проверь, что бы конфиги тоже одинаковые были
источник

AP

Andrey Paliy in MySQL
Grigorij
А что показывает iotop,htop? Слейв точно не упирается в ресурсы?
не упирается, свободной оперативы ~30гб. Скорость записи на диск не превышала 1мб/с за 10 минут примерно. Хотя проверял её созданием файла с нулями 10гб (запись на диск была 500мб/с) так что думаю с этой стороны все норм.
источник

G

Grigorij in MySQL
iowait?
источник

G

Grigorij in MySQL
random write может убивать диски, но иметь маленькую скорость записи
источник

G

Grigorij in MySQL
там ssd надеюсь?
источник

AP

Andrey Paliy in MySQL
да конечно, проблем с железкой там нету..
источник

🇻

🇻 🇱 🇦 🇩 in MySQL
Andrey Paliy
не упирается, свободной оперативы ~30гб. Скорость записи на диск не превышала 1мб/с за 10 минут примерно. Хотя проверял её созданием файла с нулями 10гб (запись на диск была 500мб/с) так что думаю с этой стороны все норм.
на слеве
iostat -x 1

последний столбец, какой процент утилизации в среднем?
источник

G

Grigorij in MySQL
Ну, если в ресурсы не упирается. то нужно проверять конфиги. Если и ресурсы и конфиги в норме, то, хм. Возможно из-за однопоточности не успевает.
источник

VE

Vladimir Eliseev in MySQL
Grigorij
Если база не нагруженая, то можно кинуть уникальный составной индекс и кэтчить экспепшены.
Ещё можно использовать именованые локи - GET_LOCK.

А лучше всего вынести эти значения в отдельную таблицу и блокировать там.
А это как?
источник

G

Grigorij in MySQL
Ну вообще это говноподход
источник

🇻

🇻 🇱 🇦 🇩 in MySQL
Grigorij
Ну, если в ресурсы не упирается. то нужно проверять конфиги. Если и ресурсы и конфиги в норме, то, хм. Возможно из-за однопоточности не успевает.
запись на диск 1 мб/c
источник

🇻

🇻 🇱 🇦 🇩 in MySQL
и утилизация возможно в сотку
источник

G

Grigorij in MySQL
ALTER TABLE test
ADD UNIQUE INDEX Index 1 (`test`, `test2`);
источник

G

Grigorij in MySQL
Если утилизация в сотку, значит в ресурсы упираешся)
источник

🇻

🇻 🇱 🇦 🇩 in MySQL
Grigorij
Если утилизация в сотку, значит в ресурсы упираешся)
так запись медленная
источник

AP

Andrey Paliy in MySQL
Grigorij
Если утилизация в сотку, значит в ресурсы упираешся)
Щас посмотрим..
источник