Утилита для наглядного просмотра куда делось место на сервере
apt install ncdu ncdu ./
Утилита для наглядного просмотра куда делось место на сервере
apt install ncdu ncdu ./
После 10.15 на macOS нельзя ставить 32битные приложения, они просто не запускаются, а вместе с этим мы потеряли wine
Но оказывается все еще можно запустить приложухи (а мне очень не хватало HeidiSQL) через playonmac https://www.playonmac.com/en/
И да, она работает, правда очень странно как и до этого в wine, но все же
Backup your databases
docker exec -t your-db-container pg_dumpall -c -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql
Restore your databases
cat your_dump.sql | docker exec -i your-db-container psql -U postgres
с архивированием
docker exec -t your-db-container pg_dumpall -c -U postgres | gzip > /var/data/postgres/backups/dump_date +%d-%m-%Y"_"%H_%M_%S.gz
можно бекапить через докер образ
pgbackups: container_name: Backup image: prodrigestivill/postgres-backup-local restart: always volumes: - ./backup:/backups links: - db:db depends_on: - db environment: - POSTGRES_HOST=db - POSTGRES_DB=${DB_NAME} - POSTGRES_USER=${DB_USER} - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_EXTRA_OPTS=-Z9 --schema=public --blobs - SCHEDULE=@every 0h30m00s - BACKUP_KEEP_DAYS=7 - BACKUP_KEEP_WEEKS=4 - BACKUP_KEEP_MONTHS=6 - HEALTHCHECK_PORT=81
Бонус — репликация
https://medium.com/@2hamed/replicating-postgres-inside-docker-the-how-to-3244dc2305be
Запустить скрипт после загрузки всего документа
Полезно когда jQuery подключается в футере сайта
<script>
document.addEventListener("DOMContentLoaded", function(){
order_certificate_init();
});
</script>
Показать все контейнеры
docker container ls --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" -a
PHP вывести сколько памяти использовал скрипт
function convert($size) { $unit=array('b','kb','mb','gb','tb','pb'); return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i]; } echo convert(memory_get_usage(true));
Сделать из буфера ексель список для массива
Рецепт бекапа mysql БД, если она работает в докере:
Создаем скрипт:
#!/bin/bash DATA=`date +"%Y-%m-%d_%H-%M"` docker exec app-mysql /usr/bin/mysqldump -u bitrix --triggers --events --routines --password=PASS1234 bitrix | gzip -9 > "$DATA"-backup.sql.gz
Если надо исключить таблицы, которые не нужны, то добавляем флаг --ignore-table=БД.Таблица
Для bitrix актуально следующее:
--ignore-table=bitrix.b_stat_referer_list --ignore-table=bitrix.b_stat_path --ignore-table=bitrix.b_event_log --ignore-table=bitrix.b_stat_guest --ignore-table=bitrix.b_stat_session --ignore-table=bitrix.b_stat_hit --ignore-table=bitrix.b_stat_page --ignore-table=bitrix.b_stat_referer --ignore-table=bitrix.b_stat_path_cache
От потерь этих таблиц, которые содержат статистику по сайту, никто сильно не пострадает, а бекап с 5гб может уменьшиться до 30мб
Настройки формы инфоблоков для пользователя находятся в табличке
b_user_option
С версии MySQL 5.1 поддерживается партиция, позволяя Вам распределить части индивидуальных таблиц по файловым системам согласно правилам, которые Вы можете устанавливать в значительной степени так, как необходимо. Типы Разбиения RANGE partitioning: назначает строки разделам, основанным на значениях столбца, попадающих внутрь заданного диапазона. LIST partitioning: подобно выделению разделов диапазоном, за исключением того, что раздел выбран основанным на столбцах, соответствующих одному из набора дискретных значений. HASH partitioning: раздел выбран основанным на значении, возвращенном определяемым пользователем выражением, которое функционирует на значениях столбца в строках, которые будут вставлены в таблицу. Функция может состоять из любого выражения, допустимого в MySQL, которое выдает не отрицательное целочисленное значение. KEY partitioning: подобно выделению разделов hash, за исключением того, что обеспечены только один или большее количество столбцов, которые будут оценены, и сервер MySQL обеспечивает собственную хэш-функцию. Эти столбцы могут содержать не целочисленные значения, так как хэш-функция, обеспеченная MySQL, гарантирует целочисленный результат, независимо от типа данных столбца. От слов к практике. На примере Таблица разбитая на 2 раздела с типом LIST CREATE TABLE 'contact` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `created` DATETIME NOT NULL, `text1` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', `text2` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', `file_name` VARCHAR(40) NOT NULL COLLATE 'utf8mb4_unicode_ci', `pn` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1', PRIMARY KEY (`id`,`pn`) USING BTREE, INDEX `file_name_idx` (`file_name`) USING BTREE ) COLLATE='utf8mb4_unicode_ci' ENGINE=InnoDB AUTO_INCREMENT=3794499 /*!50100 PARTITION BY LIST (pn) (PARTITION p0 VALUES IN (0) ENGINE = InnoDB, PARTITION p1 VALUES IN (1) ENGINE = InnoDB) */; Тут стоит обратить внимание на строчку PRIMARY KEY (`id`,`pn`) USING BTREE, Если не добавить в PRIMARY KEY столбец pn то ничего не выйдет. Для меня в данном случае, разбиение на партиции была нужна для того, чтобы быстро удалять данные относящиеся к 0 или к 1 партиции. Делается это командой ALTER TABLE contact TRUNCATE PARTITION p0; Которая за 1 сек может удалить миллионы строк (по сути удаляет файл) из партиции p0 На физ уровне будет два файла таблицы: contact#P#p0.ibd contact#P#p1.ibd Хорошая документация тут http://www.rldp.ru/mysql/mysqlpro/parts.htm Кстати, update по столбцу pn происходит очень долго, и после такого апдейта команда ALTER TABLE contact TRUNCATE PARTITION p0; тоже происходит не мгновенно