Посчитать объем баз данных MySQL

Посчитать объем баз

 

SELECT table_schema "Data Base Name",

sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB",
sum( data_free )/ 1024 / 1024 "Free Space in MB"
FROM information_schema.TABLES
GROUP BY table_schema;

 

Размеры всех таблиц в БД

SELECT
table_schema as `Database`,
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
ORDER BY (data_length + index_length) DESC;


Студент 20 с небольшим лет попал под автобус, и — насмерть. Очнулся на том свете. В кресле напротив увидел кого-то, похожего на человека, но светящегося изнутри инфракрасным светом. -Где я? — Ты в аду, сынок. Но не бойся заранее, здесь на самом деле намного лучше, чем описывают там, на земле. Вот ты в жизни курил? Студент опускает глаза: — Да, курил. — Ну значит, по понедельникам для тебя будет праздник. Это у нас день курения. Выбор — огромный, от трубки и махорки до дорогих сигар и кальяна. Курим весь понедельник, до поздней ночи. И пофигу астма и рак — ты ведь уже умер! А выпить ты любил? Студент опускает голову: — Не без этого... — У-у! Тогда готовься к праздникам по вторникам! Этот день мы пьем весь, с самого утра, от пива и легких вин до самых крепких напитков: самогона и спирта. И плевать на печень: ты ведь уже умер! А как насчет наркотиков? Студент краснеет: — Да, бывало! — Что ж, повеселишься по средам! У нас это день наркотиков, от самых легких, до героина и тяжелой синтетики. Хочешь — колись, хочешь — кури, и не бойся ни ломки, ни передоза, ни ментов — ты ведь уже умер! А с женщинами? Студент оживляется: — А как же! — Тогда оторвешься по четвергам! Это у нас день повального ceкcа. Дело в том, что женщин в аду в 10 раз больше, чем мужчин, и у тебя будет супервыбор! А о сифилисе там всяком даже не вспоминай — ты ведь уже умер! А не был ли ты голубым? Студент вскидывается: -Нет, что вы! — М-да-ссс... Вот пятницы тогда станут для тебя настоящим адом! anekdotov.net

Оптимизация картинок по cron через jpegoptim и optipng

## Optimization jpg
15 22 * * *     /usr/bin/find /var/www/*/data/www/ -type f -iregex '.*\.jpe?g' -mtime -1 -exec /usr/bin/jpegoptim --preserve --quiet {} \;
 

## Optimization png
15 23 * * *     /usr/bin/find /var/www/*/data/www/ -type f -iregex '.*\.png' -mtime -1 -exec /usr/bin/optipng --preserve --quiet {} \;

bitrix ошибка : Mysql query error: Unknown or incorrect time zone: 'Europe/Moscow' (400)

bitrix выдает ошибку при открытии сайта на CentOS 7
Mysql query error: Unknown or incorrect time zone: 'Europe/Moscow' (400)

Лечение - создать базу timezone в mysql сервере:
# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql

Windows 2016 GPT EFI deploy из под Linux rescue

В статье пойдет речь о том, как подготовить образ windows для развертывания из под Linux systemrescuecd

Производите установку VirtualBox, он позволяет осуществлять загрузку с EFI
Используйте iso-образ windows SW_DVD9_Win_Svr_STD_Core_and_DataCtr_Core_2016_64Bit_English_-3_MLF_X21-30350.ISO и Linux диск systemrescuecd-x86-5.1.1.iso

Создаем виртуальный сервер в virtualbox с диском в 20 Gb (система умещается в 13, а в архиве и того в 5, но потребуется запас для запуска на новом сервере, под дополнительные драйвера или программы если будете их устанавливать)

В настройках виртуального сервера ставите галочку на вкладке Система - Включить EFI

Загружаетесь с iso-образа, он нормально запустится с EFI загрузчика

На этапе когда инсталлятор выведет окно разметки жесткого диска необходимо будет нажать shift+f10 и в окне cmd которое откроется конвертировать диск в GPT

diskpart
sel dis 0
clean
convert gpt
exit


После чего просто нажмите Далее и система поставится на диск с GPT разметкой

Запомните пароль администратора сервера и включите доступ по RDP - включается в Server Manager - Local Server - Remote desktop - Enabled

Установите скрипт через политики безопасности который будет запускаться при старте системы (без логина пользователя в отличие от классической автозагрузки в реестре через HKLM)
Для этого запустите

gpedit.msc -
Computer configuration - Windows Settings - Scripts (Startup/Shutdown) - Startup - c:\run.cmd

Если есть необходимость в дополнительных сетевых драйверах или программах - установите их

Теперь корректно выключите виртуальный сервер и загрузите его с systemrescuecd (кстати, он тоже поддерживает efi boot)

После чего снимите образ через dd over ssh на какой-либо свой внешний сервер который будет хранилищем попутно сжимая его через gzip

dd if=/dev/sda bs=64k | pv | gzip | ssh storage@storage.com "cat > /storage/windows2016"

Сжатый образ будет занимать 5 Gb

Затем пишем скрипт установки сервера который будет выкачивать образ по ssh c storage.com и распаковывать на новом сервере и производить настройку статического ip адреса и активацию ОС, я привожу его максимально упрощенную версию
Также его можно использовать и для windows 2012 с отличиями в запуске netsh

#!/bin/bash

ssh storage@storage.com dd if=/storage/windows2016 bs=64k | gunzip | pv | dd of=/dev/sda bs=64k


blockdev --rereadpt /dev/sda
sleep 5


mount /dev/sda4 /mnt

cat <<EOF > /mnt/run.cmd
@echo off
SetLocal EnableExtensions EnableDelayedExpansion


Reg Add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /V ClearDll /D "cmd /C Del /F /Q C:\run.cmd" /f

for /f "delims=" %%a in ('netsh interface ip show interface ^| find /i "1500" ^| find /i " connect"') do (set "string=%%a")

for /f "tokens=5,6" %%a in ('echo %string%') do (set "name=%%a %%b")

netsh interface ipv4 set address name="%name%" static `ifconfig | grep 'inet ' | grep -v 127.0.0.1 | awk '{print $2}'` `ifconfig | grep 'inet ' | grep -v 127.0.0.1 | awk '{print $4}'` `netstat -nr |awk -F ' ' '{print $2}' |egrep -v 'IP|Gateway|0.0.0.0'`
netsh interface ipv4 set dnsservers name="%name%" static 8.8.8.8 primary

timeout 10 > NUL

%windir%\system32\slmgr.vbs -ipk XXXX-XXXX-XXXX-XXXX
%windir%\system32\slmgr.vbs -ato

del c:\run.cmd
EOF

unix2dos /mnt/run.cmd

umount /mnt

Далее для развертывания системы просто загружаем исходный сервер в Linux rescue и выполняем это скрипт

После успешного копирования образа перезагружаемся и включаем в BIOS загрузку с UEFI

После загрузки Windows 2016 необходимо зайти в Управление дисками и там увеличить размер диска c: до необходимого вам

Известные баги скрипта:
Если интерфейс на сервере один и не сменит имя (это маловероятно так как windows найдет все равно новую сетевую карту) (скажем будет называться "Ethernet"), то скрипт настроить его не сможет, так как будет искать "Ethernet " поскольку пробел в (set "name=%%a %%b") ставится искусственно (иначе будет пытаться настраивать "Ethernet2" вместо "Ethernet 2"

rbd to qcow2 file format

# rbd export vm5891121 vm5891121.img -p volumes
# qemu-img convert -f raw -O qcow2 vm5891121.img vm5891121.qcow2

nginx с ngx_pagespeed и поддержкой alpn для centos / debian / ubuntu

update:
актуальные бинарники доступны по ссылке https://dl.ispsystem.info/nginx-binary/lasted/


Готовая сборка Nginx с модулем ngx_pagespeed (google pagespeed) для популярных операционных систем CentOS 6.9, 7.4 / Debian 7, 8, 9 / Ubuntu 14.04/16.04 x86_64

Также для CentOS 6 / Debian 7,8 / Ubuntu 14.4 nginx собран с openssl 1.0.2 (--with-openssl=/root/openssl-1.0.2l) чтобы была поддержка ALPN для http2, в CentOS 7.4 и других системах системный OpenSSL поддерживает ALPN начиная с версии 1.0.2

В CentOS 7.3 (в дистрибутиве openssl 1.0.1e) и меньших версиях необходимо для запуска nginx обновить пакет openssl (yum install openssl обновит до 1.0.2k-8) иначе будет ошибка запуска nginx связанная со старой библиотекой в системе

Для Debian 7 новые версии pagespeed не поддерживаются, новый nginx 1.13.6 также не собирается со старым ngx_pagespeed, поэтому используется nginx 1.12.2 stable и pagespeed старой версии 1.11.33.1-beta (bash <(curl -f -L -sS https://ngxpagespeed.com/install) -n 1.12.2 -v 1.11.33.1).
Настоятельно рекомендую мигрировать на более новую версию операционной системы

Ссылки на бинарный файл nginx - его надо просто положить в /usr/sbin/nginx вместо исходного файла (предварительно установив nginx через пакетный менеджер системы):

https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-openssl-1.0.2l-centos6
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-centos7
https://dl.ispsystem.info/nginx-binary/nginx-1.12.2-pagespeed-1.11.33.1-openssl-1.0.2l-debian7
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-openssl-1.0.2l-debian8
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-debian9 
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-openssl-1.0.2l-ubuntu14.04
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-pagespeed-1.12.34.2-ubuntu16.04

Также собраны бинарники для замены /usr/sbin/nginx с openssl 1.0.2 без модуля pagespeed для старых операционных систем где openssl не имеет поддержки alpn (требуется для http2):

https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-centos6
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-debian7
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-debian8
https://dl.ispsystem.info/nginx-binary/nginx-1.13.6-openssl-1.0.2l-ubuntu14.04

Ключи сборки соответствуют стандартным с официального репозитория nginx (посмотреть как nginx -V), за исключением опции компиляции и линковки при использовании внешнего openssl
Debian 7/8:
--with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'
изменено на
--with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --with-openssl=/root/openssl-1.0.2l

CentOS 6:
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
изменено на
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --with-openssl=/root/openssl-1.0.2l

Так как иначе openssl не собирается с ошибками
/usr/bin/ld: /root/openssl-1.0.2l/.openssl/lib/libssl.a(s23_meth.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/root/openssl-1.0.2l/.openssl/lib/libssl.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
objs/Makefile:365: recipe for target 'objs/nginx' failed


Возможно, это пригодится кому-либо при компиляции nginx с собственным openssl

Подключается pagespeed в nginx.conf секции http - собственно включение, запрет оптимизировать phpmyadmin и админ-панель сайтов на bitrix (с ними работает некорректно), путь к каталогу кэша nginx и ограничения.
Процесс очистки кэша будет запускаться раз в час и очищаться если размер превысит 512Mb или 100000 inodes

pagespeed on;
pagespeed Disallow */phpmyadmin/*;
pagespeed Disallow */bitrix/admin/*;
pagespeed FileCachePath /var/cache/ngx_pagespeed/;
pagespeed FileCacheSizeKb            524288;
pagespeed FileCacheInodeLimit        100000;
pagespeed FileCacheCleanIntervalMs   3600000;

Далее необходимо просто создать директорию
mkdir /var/cache/ngx_pagespeed/

После перезапуска nginx в ней появятся поддиректории с файлами кэша

Подключается http2 просто добавлением http2 в server
listen 443 ssl http2;

При использовании ISPmanager 5 можно отредактировать шаблон /usr/local/mgr5/etc/templates/default/nginx-vhosts-ssl.template

заменить

listen {% $NGINX_SSL_LISTEN_ON %} default_server;
на
listen {% $NGINX_SSL_LISTEN_ON %} ssl http2 default_server;

listen {% $NGINX_SSL_LISTEN_ON %}
на
listen {% $NGINX_SSL_LISTEN_ON %} ssl http2;

Чтобы не переписывался при обновлениях файл /usr/bin/nginx можно сделать в Debian/Ubuntu:

# dpkg-divert --divert /usr/sbin/nginx.unuse --rename /usr/sbin/nginx
# mv /usr/sbin/nginx.unuse /usr/sbin/nginx
 
В CentOS:
# yum install yum-plugin-versionlock
# yum versionlock nginx


Полезные ссылки:
https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source 
https://habrahabr.ru/post/301452/
http://nginx.org/ru/download.html

ЧПУ в nginx php-fpm в server

listen 188.112.121.100:80;
    location / {
        try_files $uri $uri/ @handler;
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    }
    location @handler {
        rewrite ^(.*) /index.php?$1 last;
    }

    location @php {
        fastcgi_index index.php;
        fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@example.ru";
        fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
    }


Редирект на https
return 301 https://$host:443$request_uri;

Сжатие - кэширование
    gzip on;
    gzip_comp_level 3;
    gzip_disable "msie6";
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
    expires 8d;

Как очистить базу HSTS в google chrome и firefox

chrome://net-internals/#hsts

в firefox это делается в истории (ctrl+h) правой кнопкой - забыть об этом сайте

Насаждаем cp1251 кодировку на сайте вместо utf8 в debian

# cat .htaccess
AddDefaultCharset windows-1251
php_value default_charset "cp1251"


Обычного включения в свойствах WWW домена в ISPmanager недостаточно

Ubuntu отключить отправку сообщений об ошибках

sudo sed -i "s/enabled=1/enabled=0/g" '/etc/default/apport'
или
sudo apt purge apport