Меню

shuchkin

mysql segmentation fault (core dumped)

Отвалился mysql клиент с такой ошибкой.

$ mysql -u root
Segmentation fault (core dumped)

Оказалось клиент конфликтует с библиотекой libmysqlclientиз пакета Percona-Server-shared-51.
Поэтому сносим percona-server-shared и ставим обычные mysq-libs:

rpm -e --nodeps Percona-Server-shared-51
yum install mysql-libs

ОСТОРОЖНО! В процессе удаления percona-server-shared оригинальный my.cnf переименовался в my.cnf.rpmsave, поэтому:

yes | cp /etc/my.cnf.rpmsave /etc/my.cnf

Добавление индекса на мастер MySQL без блокировки

Решение подсмотрел в статье на хайлоаде

pt-online-schema-change

Инструмент pt-online-schema-change решает проблему блокировок таким образом:

  1. Создает таблицу с такой же структурой, как и у рабочей.
  2. Создает индексы на новой таблице (а она пустая, значит все быстро).
  3. Копирует данные из рабочей таблицы в новую (это долго, однако никаких блокировок).
  4. Создает триггеры для синхронизации данных между рабочей и новой таблицами.
  5. Заменяет рабочую таблицу на новую и удаляет старую.

Установить репозиторий Percona и percona-tools

yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y
yum install percona-tools -y

Сначала запустить тест

pt-online-schema-change --alter "add index some_idx (some_field)" D=test_db,t=test_tbl,h=127.0.0.1 --user root --password pwd

ОСТОРОЖНО *ЛЯ! ДЕЛАЙ БЭКАПЫ!

А теперь стартуем по-настоящему:

pt-online-schema-change --alter "add index some_idx (some_field)" D=test_db,t=test_tbl,h=127.0.0.1 --user root --password pwd --execute

Я не трогал slave на время шаманства с мастером, но если критично отставание то есть опция --max-lag, которая заставляет присматривать за slave-ом чтобы он сильно не отстал.

1> Cannot connect to h=5.123.456.78,p=...,u=root
No slaves found.  See --recursion-method if host mydb.ru has slaves.
Not checking slave lag because no slaves were found and --check-slave-lag was not specified.
Operation, tries, wait:
  analyze_table, 10, 1
  copy_rows, 10, 0.25
  create_triggers, 10, 1
  drop_triggers, 10, 1
  swap_tables, 10, 1
  update_foreign_keys, 10, 1
Altering `mydb`.`user`...
Creating new table...
Created new table mydb._user_new OK.
Altering new table...
Altered `mydb`.`_user_new` OK.
2019-01-12T16:32:51 Creating triggers...
2019-01-12T16:32:51 Created triggers OK.
2019-01-12T16:32:51 Copying approximately 3648600 rows...
Copying `mydb`.`user`:   4% 10:29 remain
Copying `mydb`.`user`:  10% 08:35 remain
Copying `mydb`.`user`:  15% 08:23 remain
...
Copying `mydb`.`user`:  90% 01:21 remain
Copying `mydb`.`user`:  93% 00:59 remain
Copying `mydb`.`user`:  95% 00:35 remain
Copying `mydb`.`user`:  98% 00:13 remain
2019-01-12T16:49:27 Copied rows OK.
2019-01-12T16:49:28 Swapping tables...
2019-01-12T16:50:09 Swapped original and new tables OK.
2019-01-12T16:50:09 Dropping old table...
2019-01-12T16:50:14 Dropped old table `mydb`.`_user_old` OK.
2019-01-12T16:50:15 Dropping triggers...
2019-01-12T16:50:15 Dropped triggers OK.
Successfully altered `mydb`.`user`.

PS: Тулза руганулась что innodb_lock_wait_timeout только для чтения

Error setting innodb_lock_wait_timeout: DBD::mysql::db do failed: Variable 'innodb_lock_wait_timeout' is a read only variable [for Statement "SET SESSION innodb_lock_wait_timeout=1"].  The current value for innodb_lock_wait_timeout is 50.  If the variable is read only (not dynamic), specify --set-vars innodb_lock_wait_timeout=50 to avoid this warning, else manually set the variable and restart MySQL.

Добавил в параметры вызова —set-vars innodb_lock_wait_timeout=50 и всё поехало.

SimpleCSV читаем, пишем CSV

Продолжаю вносить посильный вклад в опенсорс.
Исходники PHP-библиотеки для чтения/записи CSV можно забрать на GitHub

if ( $csv = SimpleCSV::import('book.csv') ) {
	print_r( $csv );
}

Можно установить через Composer

$ composer require shuchkin/simplecsv

Банк для РКО

сделал выборку по своим клиентам, интересовало в каком банке обслуживается большинство моих контрагентов:

SELECT COUNT(id) AS cnt, org_bank_bik FROM user WHERE org_bank_bik>0 GROUP BY org_bank_bik ORDER BY cnt DESC LIMIT 10
NКол-воБИКБанк
1113044525225ПАО СБЕРБАНК
2
64044525593АО «АЛЬФА-БАНК»
357044525201ПАО АКБ «АВАНГАРД»
446044525974АО «ТИНЬКОФФ БАНК»
527040813608Дальневосточный Банк ПАО СБЕРБАНК
626045004774Новосибирский АО «АЛЬФА-БАНК»
725044525716ПАО «ВТБ 24»
824044030786Санкт-Петербургский АО «АЛЬФА-БАНК»
921044525555ПАО «ПРОМСВЯЗЬБАНК»
1020047102651Западно-сибирский банк ПАО СБЕРБАНК

В целом в Сбербанке — 160, в Альфе 114. Сбер настойчиво предлагает перейти к ним на РКО (сейчас в Авангарде), нужно подумать над этим.

Новости РБК и реклама

Полная задница, читать стало невозможно, больше половины страницы мигает моргает, жуть берёт от обилия рекламы, блоки непредсказуемо прыгают в процессе загрузки

postfix send only | centos настройка почты только на отправку

Не нужны мне многочисленные получатели, ящики и вся эта почтовая лапша.  Из коробки postfix как-то работал, но приходилось прописывать правила обработки на почтовых ящиках. И просто терялись отладочные системные письма, адресованные root и другим локальным пользователям. Пришлось разобраться и выяснить с какими минимальными настройками будет работать отправка всей почты наружу, без релея и поддержки входящей почты, поехали:

Ставим posfix если ещё нет
yum install postfix -y

Переименуем оригинальный файл настроек (вдруг там что-то важное прописал установочный скрипт)
mv /etc/postfix/main.cf /etc/postfix/main.cf.bak

Создаём пустой файл конфигурации
mcedit /etc/postfix/main.cf

Копируем настройки

# путь к демону и к докам в centos лежат в необычных местах
daemon_directory = /usr/libexec/postfix
manpage_directory = /usr/share/man

# отключаем внешние соединения, отправлять могут только наши приложения
inet_interfaces = localhost
inet_protocols = ipv4

# таблица полных адресов 
canonical_maps = hash:/etc/postfix/canonical

# обеспечиваем совместимость с sendmail
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix

#реальное имя этого сервера
myhostname = ***ЗДЕСЬ ВСТАВЛЯЕМ ИМЯ СВОЕГО ХОСТА***

#оставим лазейку для локальной почты, нужно явно указать root@localhost
#чтобы такая почта не уходила наружу и её можно было посмотреть только логах или программой mail
mydestination = localhost

#отключаем ящики
mailbox_size_limit = 0
mailbox_command = /usr/bin/procmail
recipient_delimiter = +

#отключаем relay (проксирование)
relay_domains =
local_recipient_maps =

Сохранили, осталось только забить полные адреса для системных пользователей
mv /etc/postfix/canonical /etc/postfix/canonical.bak
mcedit /etc/postfix/canonical

root sergey@shuchkin.ru -- как пример
shuchkin sergey@shuchkin.ru -- тоже замените на свой

Сохраним и принудительно конвертируем в двоичный формат
postmap /etc/postfix/canonical

Перезагружаем postfix
service postfix restart

Проверяем  отправку
df -h | mail -s DiskUsage root
tail /var/log/maillog

Омский бард Шахнин готовит иск против Газманова

Омский певец Александр Шаханин обвинил известного эстрадного исполнителя Олега Газманова в плагиате.

Еще в мае 2017 года житель Омска выпустил клип на песню про движение «Бессмертный полк», в основу которой легли написанные его отцом стихи. Но в 2018 году выяснилось, что Газманов исполняет на концертах свою песню (клип опубликован в апреле этого года) про «Бессмертный полк», музыкальное сопровождение которой крайне напоминает то, что использовал Шаханин.

Омич услышал новое творение коллеги по цеху еще во время празднования Дня Победы. Однако Олег Газманов отказался признавать факт плагиата, рассказав о том, что произведение было написано под впечатлениям от многомиллионного движения.

Поэтому сейчас Александр Шаханин готовит материалы для передачи иска в суд.

Источник https://tsargrad.tv/news/bessmertnyj-plagiat-pevec-iz-omska-grozitsja-podat-v-sud-na-gazmanova_164808

Концептуально и по ритмике песни очень похожи, Олег, конечно, исполнил песню в любимом имперском стиле с мощной поддержкой хора и оркестра, но оригинал Шахнина я слышал раньше, он показался мне душевнее. Правда стихи и посыл разные. Но Александр молодец что высказался по поводу плагиата и отстаивает свои права на песню.