Страница 2 из 2
Re: MySQL
Добавлено: 27 янв 2020, 22:28
Olej
Olej писал(а): ↑27 янв 2020, 22:24
Где:
- forum_id - номер форума,
- topic_id - номер темы
- post_id - номер сообщения
Интересующее нас сообщение в браузере находим по строке URL:
Код: Выделить всё
http://linux-ru.ru/viewtopic.php?f=3&t=64&p=183#p183
f=forum_id t=topic_id p=post_id
Но достаточно, оказывается и такой формы:
Код: Выделить всё
http://linux-ru.ru/viewtopic.php?p=183#p183
Re: MySQL
Добавлено: 27 янв 2020, 22:52
Olej
Вся такая корректура - страшно кропотливое и тягомутное занятие ...
Код: Выделить всё
MariaDB [forum]> SELECT COUNT(*) FROM rlf1_posts WHERE LOCATE('http://rus-linux.net/forum/viewtopic', post_text) ORDER BY forum_id DESC LIMIT 5;
+----------+
| COUNT(*) |
+----------+
| 850 |
+----------+
1 row in set (0.860 sec)
Код: Выделить всё
MariaDB [forum]> SELECT forum_id,topic_id,post_id FROM rlf1_posts WHERE LOCATE('http://rus-linux.net/forum/viewtopic', post_text) ORDER BY forum_id DESC LIMIT 5;
+----------+----------+---------+
| forum_id | topic_id | post_id |
+----------+----------+---------+
| 38 | 5245 | 17427 |
| 38 | 5245 | 17425 |
| 38 | 4905 | 16669 |
| 38 | 4905 | 16579 |
| 38 | 4993 | 16573 |
+----------+----------+---------+
5 rows in set (0.118 sec)
Здесь элементарно просто попортить всю базу данных сообщений...
После чего - только полное восстановление из последнего бэкапа.
Я уже начинаю это занятие по 2-му разу.
Так что бэкап делаем (благо технология отлаженная:
подготовка регулярных бэкапов форума,
восстановление из бэкапов) через каждые 10-20 сообщений!
Re: MySQL
Добавлено: 28 янв 2020, 02:04
Olej
Olej писал(а): ↑27 янв 2020, 22:14
очень объёмный, сложный и амбициозный - почистить таблицы БД от устаревших URL
Чтоб представлять этот объём: анализ показывает (выше были кой-какие выборки показаны), что после всех "умельцев" потребуется выверить около
1000 URL ... а на самом деле больше, потому что в одном сообщении бывает по несколько битых URL.
И опыт ... и этих злополучных "умельцев", и мой когда я уже сегодня развалил БД и восстанавливал её из бэкапа, показывает: эту всю корректуру не удастся сделать автоматов в режиме "поиск-замена", а каждое сообщение придётся просмотреть глазами - структура URL слишко сложна, разбросана и отличаются для автоматической замены.
Я сегодня за день работы, пусть не сильно напряжённой, сумел переработать 130-150 сообщений с URL.
Re: MySQL
Добавлено: 29 янв 2020, 15:40
Olej
29.01.2020 около 04:51 форум рухнул из-за нехватки RAM для MySQL:
технические проблемы.
Нужно будет обязательно (после завершения чистки URL!) проделать оптимизацию MySQL ... как описано
Оптимизация настроек Mysql с помощью Mysqltuner.
Чтобы данные анализа и статистика были более корректными, сервер Mysql должен проработать некоторое время без смены параметров конфигурации и без перезагрузок, по рекомендации самого Mysqltuner не менее 24 часов.
А пока, чтобы не мудрить с нестандартными инсталляциями:
Код: Выделить всё
olej@277938:~$ aptitude search mysqltuner
p mysqltuner - скрипт тонкой настройки MySQL
Код: Выделить всё
olej@277938:~$ sudo apt install mysqltuner
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
liblockfile1 lockfile-progs m4 procmail sendmail-base sendmail-cf sensible-mda
Для их удаления используйте «sudo apt autoremove».
Будут установлены следующие дополнительные пакеты:
libtext-template-perl
Следующие НОВЫЕ пакеты будут установлены:
libtext-template-perl mysqltuner
Обновлено 0 пакетов, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 13 пакетов не обновлено.
Необходимо скачать 179 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 1 612 kB.
Хотите продолжить? [Д/н] y
Пол:1 http://mirror.timeweb.ru/debian buster/main amd64 libtext-template-perl all 1.55-1 [53,9 kB]
Пол:2 http://mirror.timeweb.ru/debian buster/main amd64 mysqltuner all 1.7.13-1 [125 kB]
Получено 179 kB за 0с (946 kB/s)
Выбор ранее не выбранного пакета libtext-template-perl.
(Чтение базы данных … на данный момент установлено 43222 файла и каталога.)
Подготовка к распаковке …/libtext-template-perl_1.55-1_all.deb …
Распаковывается libtext-template-perl (1.55-1) …
Выбор ранее не выбранного пакета mysqltuner.
Подготовка к распаковке …/mysqltuner_1.7.13-1_all.deb …
Распаковывается mysqltuner (1.7.13-1) …
Настраивается пакет libtext-template-perl (1.55-1) …
Настраивается пакет mysqltuner (1.7.13-1) …
Обрабатываются триггеры для man-db (2.8.5-2) …
Re: MySQL
Добавлено: 29 янв 2020, 19:07
Olej
Olej писал(а): ↑27 янв 2020, 22:14
Предстоит найти и поменять все такие ссылки:
Код: Выделить всё
http://rus-linux.net/forum/viewtopic => viewtopic
Завершён вот этот грандиозный поиск - в итоге пришлось пересмотреть и редактировать где-то 1500-2000 URL, или даже больше!
Re: MySQL
Добавлено: 29 янв 2020, 19:26
Olej
Olej писал(а): ↑29 янв 2020, 19:07
Завершён вот этот грандиозный поиск - в итоге пришлось пересмотреть и редактировать где-то 1500-2000 URL, или даже больше!
Следующий этап:
Код: Выделить всё
MariaDB [forum]> SELECT COUNT(*) FROM rlf1_posts WHERE LOCATE('http://seocod.ru', post_text);
+----------+
| COUNT(*) |
+----------+
| 48 |
+----------+
1 row in set (1.172 sec)
MariaDB [forum]> SELECT forum_id,topic_id,post_id FROM rlf1_posts WHERE LOCATE('http://seocod.ru', post_text) ORDER BY forum_id ASC LIMIT 10;
+----------+----------+---------+
| forum_id | topic_id | post_id |
+----------+----------+---------+
| 3 | 16 | 33 |
| 3 | 1495 | 2038 |
| 3 | 1495 | 3189 |
| 3 | 1600 | 3303 |
| 3 | 1600 | 3304 |
| 3 | 1495 | 4924 |
| 3 | 4145 | 12284 |
| 4 | 1290 | 2067 |
| 5 | 1473 | 2051 |
| 5 | 1737 | 4234 |
+----------+----------+---------+
10 rows in set (0.129 sec)
Это уже предыдущие "администраторы" намудлячили своими автоматическими запросами "поиск-замена" ... теперь вручную восстанавливать надо.
Re: MySQL
Добавлено: 29 янв 2020, 20:23
Olej
Olej писал(а): ↑29 янв 2020, 19:26
Следующий этап:
И это завершено.
Теперь
ссылочная целостность всех сообщений форума
восстановлена!
Re: MySQL
Добавлено: 01 фев 2020, 17:25
Olej
Olej писал(а): ↑29 янв 2020, 20:23
Теперь ссылочная целостность всех сообщений форума восстановлена!
Вот столько
записей в таблице сообщений (сообщений форума) пришлось пересмотреть, проанализировать и, где надо, подкорректировать - это число сообщений с перекрёстными ссылками между сообщениями форума:
Код: Выделить всё
MariaDB [forum]> SELECT COUNT(*) FROM rlf1_posts WHERE LOCATE('=viewtopic', post_text);
+----------+
| COUNT(*) |
+----------+
| 1311 |
+----------+
1 row in set (1.545 sec)
При этом нужно учесть, что одно
сообщение может содержать несколько ссылок - 2-3 достаточно часто, а 4-5-6 тоже временами встречается.