Mysql
 sql >> база данни >  >> RDS >> Mysql

Урок за MySQL – Разбиране на секундите зад главната стойност

При настройка на MySQL хостинг репликация, параметърът Seconds_Behind_Master (SBM), както се показва от командата SHOW SLAVE STATUS, обикновено се използва като индикация за текущото забавяне на репликацията на подчинения . В тази публикация в блога разглеждаме как да разберем и тълкуваме тази стойност в различни ситуации.

Възможни стойности на  секунди зад главния

Стойността на SBM, както е обяснено в  документацията на MySQL, зависи от състоянието на подчинения MySQL като цяло и от състоянията на подчинения на MySQL SQL_THREAD и IO_THREAD в частност. Докато IO_THREAD се свързва с главния и чете актуализациите, SQL_THREAD прилага тези актуализации на подчинения. Нека да разгледаме възможните стойности на SBM по време на различни състояния на MySQL Slave.

Когато стойността на SBM е нула

  • SBM винаги е NULL, ако вашият подчинен е спрян или вашата SQL нишка е спряна (или не се изпълнява).
  • SBM също ще бъде NULL, ако IO нишката е спряна, при условие че SQL нишката вече е обработила всички събития от регистрационния файл на релето. Примерен изход на SHOW SLAVE STATUS (подрязан, за да показва само стойности от интерес) демонстрира това:

Slave_IO_State:

Master_Host:172.19.0.13

Slave_IO_Running:Не

Slave_SQL_Running:Да

Seconds_Behind_Master:NULL

Master_UUID:23b326b1-a452-11e8-91ca-000d3a065e8e

Slave_SQL_Running_State:Подчинен е прочел всички реле регистрационни файлове; чакам още актуализации

Извлечено_Gtid_Set:23b326b1-a452-11e8-91ca-000d3a065e8e:818-389213

Executed_Gtid_Set:23b326b1-a452-11e8-91ca-000d3a065e8e:1-389213

Когато стойността на SBM е нула или положителна

  • SBM ще отразява валидна стойност (>=0)  когато SQL нишката активно обработва събития. Това е вярно, независимо от състоянието на IO Thread. Например:

Slave_IO_State:

Master_Host:172.19.0.13

Slave_IO_Running:Не

Slave_SQL_Running:Да

Seconds_Behind_Master:3399

Master_UUID:23b326b1-a452-11e8-91ca-000d3a065e8e

Slave_SQL_Running_State:Изчаква подчинените работници да обработят своите опашки

Извлечено_Gtid_Set:23b326b1-a452-11e8-91ca-000d3a065e8e:818-389213

Executed_Gtid_Set:23b326b1-a452-11e8-91ca-000d3a065e8e:1-118774

В горния пример можем да видим, че подчинен е зад главния, като сравниме Retrieved_GTID_Set и Executed_GTID_Set. В такива случаи Seconds_Behind_Master ще представлява разликата между клеймото за дата на последната транзакция, обработена от SQL нишката, и клеймото за време на същата транзакция, когато е била обработена на главния. Това клеймо за време на транзакцията на главния се запазва чрез репликация и следователно подчиненият ще може да изчисли SBM локално.

Също така, след като подчинения напълно настигне всички релейни регистри (т.е. изпълненият GTID става 23b326b1-a452-11e8-91ca-000d3a065e8e:1-389213_ster/), завъртете на „0“, ако IO Thread се изпълнява, или на „NULL“, ако IO Thread не работи.

#MySQL урок – разбиране на секундите зад главната стойност Щракнете за туит

Разбиране на скоростта на изпълнение на MySQL Slave

Ако приемем, че SQL Thread и IO Thread на подчинения са в работещи състояния, е възможно да се разберат относителните скорости на изпълнение на главния и подчинения чрез наблюдение на стойността на SBM. Постоянна стойност „0“ или постоянна стойност показва, че подчинението се изпълнява със същата скорост като главната. От друга страна, наклонът нагоре за Seconds_Behind_Master показва, че подчинената работи по-бавно от главната.

Конзолата за наблюдение на ScaleGrid за MySQL в Azure изобразява стойностите на SBM във времето за подчинените възли.

Нулева или постоянна стойност на SBM

В горния пример подчинението е стартирано около 40 часа след като главният е имал активни записи. Веднъж стартиран, подчинението започна да репликира тези данни и виждаме, че SBM е доста плосък, което показва, че подчинението се изпълнява със същата скорост като главния. Също така имайте предвид, че падането на SBM до „0“ е рязко, което наистина означава, че въпреки че последната транзакция, извършена от подчинения, е била изпълнена около 40 часа преди това на главния, след като наваксаме, има забавяне „0“.

Увеличаване на стойностите на SBM

В графиката по-долу можем да видим, че SBM непрекъснато се увеличава, което означава, че скоростта на изпълнение на подчинения е по-малка в сравнение с тази на главния. Това всъщност е случай, в който изпълняваме 20 нишки, извършващи непрекъснати записи на главния и еднонишков подчинен не е в състояние да върви в крак с него.

Накрая, важно е да отбележим, че в нашите дискусии досега не сме предполагали никакви мрежови тесни места. В случай на бавни мрежи самата подчинена IO нишка ще изостава от главната и ако SQL нишката е достатъчно бърза, SBM ще се колебае между „0“ и положително число. В такива случаи SBM няма да бъде полезен параметър за разбиране на истинското изоставане с главния.

Ако ви е харесала тази публикация в блога, разгледайте нашите други популярни уроци за управление на база данни MySQL, за да научите повече за оптимизирането на внедряванията си:

  • Изчисляване на размера на InnoDB буферен пул за вашия MySQL сървър
  • Урок за MySQL – Конфигуриране и управление на SSL на вашия MySQL сървър
  • Обяснена рамка за висока достъпност на MySQL – част I:Въведение


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Workbench:Грешка в заявката (1064):Синтактична грешка близо до „VISIBLE“ на ред 1

  2. Python се свързва с MySQL база данни с MySQL конектор и пример за PyMySQL

  3. Как да намеря най-голямата таблица в MySQL база данни?

  4. Най-добра практика за създаване на индекси във вашите MySQL таблици – подвижни индексни компилации

  5. Как да създавате и поддържате MySQL бази данни в cPanel