Задать вопрос
Ответы пользователя по тегу Linux
  • Как перенести работающую ОС Debian 11 на RAID1 с имеющейся LVM разметкой?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Решили что следующая схема распределения объема HDD будет наиболее подходящей:
    SWAP - RAID1 - 5Gb
    / - RAID1 - 24Gb
    /home - RAID5 - все оставшееся место

    не трогаете sda вообще на данном этапе!

    Вы забыли /boot упомянуть, предположу что считаем его как гигабайтный раздел без существенных изменений.
    Игнорируем разметку sda полностью, делаете таблицы разделов на sd[bcd] как
    1MiB bios_grub
    1GiB boot
    29GiB sys
    всё остальное data

    mdadm -C /dev/md0 -l 1 -n 4 missing /dev/sdb2 /dev/sdc2 /dev/sdd2
    mdadm -C /dev/md1 -l 1 -n 4 missing /dev/sdb3 /dev/sdc3 /dev/sdd3
    mdadm -C /dev/md2 -l 5 -n 4 missing /dev/sdb4 /dev/sdc4 /dev/sdd4 # другие опции по вкусу

    ждёте resync, обновляете mdadm.conf, отправляете железку в ребут для проверки что массивы корректно собираются сами.

    pvinit, vgextend новых md1 и md2 в имеющийся LVM
    pvmove root и swap на md1, хомяка на md2

    umount /boot , dd if=/dev/sda2 of=/dev/md0, grub-install /dev/sdb , grub-install /dev/sdc , grub-install /dev/sdd, обновить fstab вместо sda2 записать md0

    контрольный ребут

    vgreduce sda3 из lvm, удаляете таблицу разделов sda и создаёте новую идентичную прочим дискам,
    mdadm /dev/md0 -a /dev/sda2
    mdadm /dev/md1 -a /dev/sda3
    mdadm /dev/md2 -a /dev/sda4

    после resync всё готово. Через lvresize расширить размеры томов ну и resize2fs как обычно.
    Ответ написан
  • Как создать нового юзера и новую базу в postgres, на убунту?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Парольная аутентификация лишь один из множества доступных вариантов. Хотя наиболее простой и распространённый. Какой способ аутентификации будет требовать СУБД - зависит от списка правил в pg_hba.conf. Очень редко нужно что-то кроме служебного правила peer для postgres (именно из-за него psql после sudo -iu postgres не спрашивает никакие пароли, но только у postgres'а) и md5 для всего остального.

    Базово создание новой базы с отдельным пользователем-владельцем выглядит так (от суперпользователя базы):
    CREATE USER "$NEWOWNER" PASSWORD '$NEWPASS';
    CREATE DATABASE ${NEWDB} OWNER "$NEWOWNER";
    REVOKE ALL ON DATABASE $NEWDB FROM public;


    В соседнем ответе вам неверно подсказывают, что "можно сразу указать какому юзеру разрешен доступ". create database разрешит доступ всем (но именно подключение к базе, а не ко всему внутри базы - что частая проблема непонимания прав). И имеет смысл наоборот отобрать доступ от всех прочих, т.е. от public. Owner, конечно, доступ сохранит.

    Чуть ближе к production имеет смысл использовать такой шаблон:
    CREATE USER "$NEWOWNER" PASSWORD '$NEWPASS';
    CREATE DATABASE ${NEWDB} OWNER "$NEWOWNER";
    CREATE ROLE ${NEWDB}_role;
    CREATE ROLE ${NEWDB}_ro;
    CREATE ROLE ${NEWDB}_rw;
    GRANT ${NEWDB}_role TO ${NEWDB}_ro, ${NEWDB}_rw;
    REVOKE ALL ON DATABASE $NEWDB FROM public;
    GRANT CONNECT ON DATABASE $NEWDB TO ${NEWDB}_role;
    GRANT ${NEWDB}_rw TO "$NEWOWNER";
    \c $NEWDB
    ALTER SCHEMA public OWNER TO "$NEWOWNER";
    REVOKE ALL ON SCHEMA public FROM public;
    GRANT USAGE ON SCHEMA public TO ${NEWDB}_ro, ${NEWDB}_rw;
    ALTER DEFAULT PRIVILEGES FOR ROLE postgres GRANT SELECT ON SEQUENCES TO ${NEWDB}_ro;
    ALTER DEFAULT PRIVILEGES FOR ROLE postgres GRANT SELECT,USAGE ON SEQUENCES TO ${NEWDB}_rw;
    ALTER DEFAULT PRIVILEGES FOR ROLE postgres GRANT SELECT ON TABLES TO ${NEWDB}_ro;
    ALTER DEFAULT PRIVILEGES FOR ROLE postgres GRANT SELECT,INSERT,DELETE,UPDATE ON TABLES TO ${NEWDB}_rw;
    ALTER DEFAULT PRIVILEGES FOR ROLE "$NEWOWNER" GRANT SELECT ON SEQUENCES TO ${NEWDB}_ro;
    ALTER DEFAULT PRIVILEGES FOR ROLE "$NEWOWNER" GRANT SELECT,USAGE ON SEQUENCES TO ${NEWDB}_rw;
    ALTER DEFAULT PRIVILEGES FOR ROLE "$NEWOWNER" GRANT SELECT ON TABLES TO ${NEWDB}_ro;
    ALTER DEFAULT PRIVILEGES FOR ROLE "$NEWOWNER" GRANT SELECT,INSERT,DELETE,UPDATE ON TABLES TO ${NEWDB}_rw;

    В результате получим:
    - пользователя-владельца базы, который предназначен выполнять всякие миграции схемы данных
    - роль имя_базы_role которую можно давать другим пользователям для возможности подключения к этой базе, но без доступа к таблицам приложения (например, используем для мониторинга)
    - роль имя_базы_ro которая даст select-only права ко всем (в том числе будущим) таблицам, созданным от пользователя-владельца это базы
    - роль имя_базы_rw - соответственно для выполнения select,insert,update,delete
    Ответ написан
    Комментировать
  • Существуют ли дистрибутивы Linux где изначально встроен весь основной репозитарий?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Невозможно иметь всё в установленном виде - некоторые пакеты банально конфликтуют между собой (например, потому что выполняют одну и ту же задачу)

    А для работы без доступа к глобальной сети - это пожалуйста. Только брать нужно не что-то хипстерское-молодёжное
    Например, репозиторий debian актуального выпуска для amd64 доступен на 19 DVD дисках. Прямо на этапе установки с диска будет предложение вставить другие диски репозитория, затем при попытке установки чего-либо apt будет запрашивать "дайте диск такой-то"
    Обновления релиза так же можно загрузить на дисках.
    Хотя именно iso'шки и прекратили публиковать кроме самого первого (места и сети много жрут, а ресурсы серверов-то не коммерческие), их можно собрать по инструкции через jigdo.
    Ответ написан
    Комментировать
  • Что значит 100% колонка idle в iostat –dx?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    iostat, как бы это ни было неожиданно по своему названию, показывает статистику устройств I/O, а так же CPU.

    Заинтересовавший вас %idle относится avg-cpu секции и как поясняет прямым текстом man iostat
    %idle
    Show the percentage of time that the CPU or CPUs were
    idle and the system did not have an outstanding disk I/O
    request.

    Это процент времени, когда CPU не был чем-либо занят.
    То есть 99% idle - система фактически ничем не занята.

    Обычно смотрится вживую в iostat -x 1
    Ответ написан
    Комментировать
  • Как перенести bd Mysql c частично неработающего жесткого диска, примонтированного к работающей Linux?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    • перепроверяете, что СУБД остановлена и не запущена
    • находите datadir (например, /var/lib/mysql/ )
    • ставите на рабочей системе mariadb (или mysql - выясните, какая именно была установлена) той же самой версии
    • копируете целиком всё что есть в datadir в новое место жительства
    • запускаете СУБД и смотрите в лог
    Ответ написан
    6 комментариев
  • Опасно ли на сервере использовать http-зеркала репозиториев, вместо https? Есть ли риск того, что пакеты могут быть подделаны?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Вопрос неполон без указания пакетного менеджера.

    Например, вот перевод объяснений позиции Debian, почему не торопятся переводить транспортный уровень на https.

    Если интересующий вас пакетный менеджер так же верифицирует скачиваемые пакеты - то и вывод будет аналогичным: это достаточно безопасно.
    Ответ написан
    Комментировать
  • Почему не уменьшается размер раздела?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Это бывает неожиданностью, но совершенно верно, размер файловой системы не обязан совпадать с размером раздела.
    resize2fs меняет размер только файловой системы. После этого необходимо изменить размер раздела. parted умеет команду resizepart. Про cfdisk не в курсе.

    При том, при уменьшении раздела будьте предельно аккуратны. Как и многое с правами root, система разрешит вам сделать размер раздела меньше чем файловая система. С фатальными последствиями для файловой системы.
    Неплохой идеей будет сначала подрезать размер файловой системы сильнее, чем предполагается (до 7,5гб, например), уменьшить раздел, затем выполнить вновь resize2fs без явного указания размера что увеличит размер ФС до размера раздела. Так будет гораздо ниже риск того, что где-то ошиблись (например, в единицах измерения килобайты либо кибибайты) и отрезали часть файловой системы
    Ответ написан
    2 комментария
  • Почему cron запускается не по локальному времени?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если после запуска крона меняли таймзону - то крону об этом никто не сказал. Перезапустите демона крона.
    Ответ написан
    Комментировать
  • Как в си узнать какой пользователь вошёл в систему linux?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если это подходит для postgresql, то, вероятно, подойдёт и для вас: https://github.com/postgres/postgres/blob/REL_13_S...

    (geteuid + getpwuid под linux)
    Ответ написан
    Комментировать
  • Как увеличить диска LVM больше 4 разделов?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    А зачем добавлять ещё раздел, если вы его в lvm так же хотите добавлять? Просто расширьте раздел
    parted resizepart + pvresize
    Ответ написан
    Комментировать
  • Можно ли делать image resize в lxc (proxmox ve) без остановки PostgreSQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Можно ли делать resize диска без остановки работы СУБД

    Да.
    postgresql использует рядовые sysctl работы с файлами и не взаимодействует с устройством напрямую.
    Ответ написан
    1 комментарий
  • Как корректно запустить базу postgresql после полного удаления каталога wal?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Корректно - абсолютно никак. WAL критичная часть базы.

    Некорректно, без всяких гарантий, но на clean shutdown базе можно надеяться без потери данных - pg_resetwal. Перед использованием сделайте бекап всего PGDATA ( /var/lib/postgresql/10/ut/ в вашем случае судя по пути до pg_wal). После старта базы - pg_dumpall и initdb всего кластера заново, как прямым текстом указано в документации к pg_resetwal.

    как нужно было сделать по уму если валы от слота не удаляются при удалении слота.

    Дождаться или сделать руками чекпойнт.
    Ответ написан
    Комментировать
  • Как перенести базу данных на другой диск?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если простой не критичен:
    - остановить базу
    - убедиться что они завершила работу
    - посмотреть в список процессов и убедиться, что база на самом деле выключена
    - переместить директорию базы
    - положить симлинк со старого до нового местоположения
    - запустить базу

    Если простой критичен - поднять реплику (в пределах одного сервера, да). После запуска реплики остановить старый инстанс, реплику поднять до нового мастера.
    Ответ написан
    Комментировать
  • Можно ли расширить RAID5 в Linux, на ходу, если не использован LVM?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Предположу что речь о программном raid (mdadm), иначе бы в вопросе звучало какое железо
    XFS расширяется только на ходу, у него нет режима расширяться не будучи уже смонтированным куда-то.
    mdadm умеет увеличивать размер массива налету как при добавлении новых дисков, так и при замене всех дисков массива на более ёмкие
    https://raid.wiki.kernel.org/index.php/Growing
    Ответ написан
    4 комментария
  • Postgresql может работать без pg_log, pg_clog и pg_xlog?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    postgresql 11

    pg_xlog не относится к базе. Была критично важна до pg10, затем переименована в pg_wal. Аналогично функция pg_current_xlog_location.
    Вероятно ваш мониторинг не умеет pg10+.

    pg_clog тогда же в pg10 был переименован в pg_xact. Так же критична. Оба переименования с целью мешать думать. что это "какие-то ненужные логи, удалю"

    pg_log не относится к базе.
    Ответ написан
    Комментировать
  • Как отключить автоматический запуск одного из экземпляров PostgreSQL 10?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Специфично для debian/ubuntu.
    Измените в /etc/postgresql/версия/название_кластера/start.conf
    auto (дефолт) - автоматический старт
    manual - вручную

    Если вы используете systemd, то после изменения файла выполнить systemctl daemon-reload
    Ответ написан
    1 комментарий
  • Почему команда curl -I (--head) отдает код 404, а curl -i отдает код 200?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    curl 127.0.0.1 -I
    melkij@melkij:~$ nc -l 8081
    HEAD / HTTP/1.1
    Host: 127.0.0.1:8081
    User-Agent: curl/7.64.0
    Accept: */*


    curl 127.0.0.1:8081 -i
    melkij@melkij:~$ nc -l 8081
    GET / HTTP/1.1
    Host: 127.0.0.1:8081
    User-Agent: curl/7.64.0
    Accept: */*


    И что мешает веб-серверу на разные запросы реагировать по-разному?
    Ответ написан
    Комментировать
  • Почему я не могу apt update в ubuntu 19.04?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    EOL потому что. https://wiki.ubuntu.com/Releases
    Обращайте внимание на сроки поддержки релизов. Промежуточные релизы убунты специально сделаны с коротким временем жизни.
    Ответ написан
    2 комментария
  • Увеличение раздела Linux?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Раздел на диске непрерывен. У вас не может быть раздел 1, затем свап, затем продолжение раздела 1. Выключите и снесите свап, расширьте раздел. Собственно свап можно затем сделать файлом чтобы не извращаться.
    Ответ написан
  • Resize Software RAID 60?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    mdadm --grow /dev/md0 --size=max
    Насколько по ману вижу увеличение размера для raid0 поддерживается. Сначала командуете для нижележащих массивов, потом для верхнего raid0.

    Проверить что массиву вообще есть куда расширяться можно запросив -E для каждого из томов массива:
    sudo mdadm -E /dev/sde2
    ....
     Avail Dev Size : 5767168000 (2750.00 GiB 2952.79 GB)
         Array Size : 7759462400 (7400.00 GiB 7945.69 GB)
      Used Dev Size : 3879731200 (1850.00 GiB 1986.42 GB)
    ...

    Если есть отдельная строка Used Dev Size с размером меньше Avail Dev Size - расширять есть куда.
    Ответ написан
    Комментировать