Якщо ви працюєте з увімкненими двійковими журналами, це можна перевірити з відносно високою надійністю.
По-перше, щоб побачити, чи дійсно двійкові журнали включені, запустіть:
SHOW BINARY LOGS;
Якщо вони включені, ви повинні отримати такий результат:
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000244 | 15462544 |
| mysql-bin.000245 | 102622775 |
+------------------+-----------+
Інакше ви отримаєте повідомлення про помилку.
Тепер, якщо ввімкнено бінарні журнали, то будь-яка успішна фіксація також записується до двійкових журналів. Я кажу "фіксую", але правда - будь-яка успішна операція, навіть на не транзакційних таблицях, таких як MyISAM, написана там. Але, чесно кажучи, щоб мати певну впевненість у результатах ваших запитів, я сподіваюся, що заради вас використовується транзакційний двигун, такий як InnoDB, інакше ви не можете бути впевнені ні в чому.
Гаразд, тому припускаючи, що у вас увімкнено бінарні журнали, і що ваші таблиці є транзакційними (сподіваємось, InnoDB), то, як очікується, успішне завершення ваших запитів буде записано у двійкові журнали.
Тепер ви повинні знайти відповідний бінарний журнал і шукати там запит. Якщо ви знайшли запит - добре! Якщо ні - це, швидше за все, не там. Я поясню коротко.
Який бінарний журнал містить ваш запит? Перегляньте самі файли бінарних журналів, як правило, у вашому каталозі даних. Шукайте їх часові позначки. Коли з'явилася потужність, був створений новий двійковий журнал. Знайти це. Ваші запити, ймовірно, знаходяться у двійковому журналі перед цим. Це здогад. Це може бути і до цього, і т. Д. Але це гарна здогадка.
Тепер, використовуючи mysqlbinlog
утиліту, виконайте з командного рядка щось подібне:
mysqlbinlog mysql-bin.000245
Замініть ім'я файлу тим, кого ви підозрюєте, що він містить запит.
Це виведе всі запити в цьому двійковому файлі журналу до стандартного виводу. У Unix використовуйте grep
для пошуку свого запиту:
mysqlbinlog mysql-bin.000245 | grep "something which identifies the query"
У Windows удача. Відкрийте за допомогою блокнота ++ чи чогось і шукайте вручну.
Чи є запит? Чудово - ви знаєте, що це було вчинено.
Хіба запиту немає? Потрібно перевірити sync_binlog
парам. Це 1 ? Тоді запит не у двійковому журналі ==> запит не здійснено. Але якщо sync_binlog
це не 1 , все ж може бути ймовірність, що запит був здійснений ще не в двійковому журналі, оскільки збій може статися безпосередньо після того, commit
як бінарний журнал був перенесений на диск. Потім потрібно повернутися до інших засобів.
Це: (і, сподіваємось, знову ж, ви використовуєте InnoDB): шукайте єдиний рядок, який може визначити результат запиту. З InnoDB ви отримуєте "все або нічого". Якщо ви можете бути впевнені в одному рядку, на який впливає запит, - ви можете бути впевнені, що запит завершено.
редагувати: звичайно, якщо увімкнено повільний журнал, ви можете очікувати, що такий довгий запит буде введений туди і після його завершення ...
Удачі!