ноября 29, 2008

миграция с mysql на postgresql (mysql to postgresql migration)

Сначала с MyISAM на InnoDB, теперь с MySQL на Postgresql. Короче, пока не забыл...

mysqldump DATABASE_NAME -nt -v --compatible=ansi,postgresql --complete-insert=TRUE --extended-insert=FALSE --compact --default-character-set=UTF8 -u DATABASE_USER -p -r OUTPUT_FILE.sql



psql DATABASE_NAME < OUTPUT_FILE.sql

ноября 18, 2008

Чудо :)

Оказывается FreeBSD-шный боурновский шел (тот самый sh) поддерживает редактирование командной строки в стиле VI или Emacs:

set -o vi

set -o emacs

Век живи - век учись :)

ноября 17, 2008

Облом...

hardy-server-amd64.iso (02-Sep-2008 09:30 555M Server install CD for 64-bit PC (AMD64) computers (standard download))

утанавливаю сразу на программный рэйд. вылетает с ошибкой на этапе базовой системы.

начал разбираться - mdamd not found. странно и не вовремя.

ноября 03, 2008

Перезд базы MySQL со сменой MyISAM на InnoDB.

просто как заметка:

делаем копию

mysqldump database -u sergey -p  | sed -e 's/ENGINE=MyISAM/ENGINE=InnoDB/g'  > dump_database_innodb.sql

восстанавливаем

mysql database -u root -p < dump_database_innodb.sql

октября 18, 2008

Начало положено :) (создаю свой репозиторий)

Ну вот и случилось:

- зарегистрировал домен

- закончил тестировать ядро с патчем

- нашел несколько часов на пересборку ядра, создание репозитория

"Альфа" версия моих стараний вот здесь: http://uname.su/ubuntu/

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

октября 11, 2008

Ubuntu и обоина в консоли (framebuffer console decorator && splashutils)

Короче сделал. Зачем? Не подшучивайте - сам понимаю, что баловства ради. Гентушный патч наложил на ядро ubuntu почти без правки. splashutils и иже с ними взял собранные под дебиан у Берлиоза (может сам пересоберу со временем).

вот скрин:                      скрин с заставкой cmatrix:



Обнаружил, что почти во всех статьях и how-to по пересборке ядра ubuntu описывается либо чисто дебиановский метод (kpkg) либо классический "простой как молоток" make menuconfig - make bzimage ,etc.

ubuntu-way представляет интерес, чтобы, например при пересборке ядра (разумеется в пределах доступных версий в используемой версии ubuntu) не отвалились драйвера nvidia.

думаю, что с меня:

- скрин консоли (когда разберусь как в вордпресс картинки выкладывать :)))

- заметка про убунтовскую пересборку ядра.

объединение сетевых интерфейсов в FreeBSD

проще не бывает:

/etc/rc.conf:
cloned_interfaces="lagg0"
ifconfig_bge0="up"
ifconfig_bge1="up"
ifconfig_lagg0="laggproto lacp laggport bge0 laggport bge1 192.168.111.100 netmask 0xffffff00"


работает без лишних телодвижений в сторону настройки procurve 2626, к которому подключен сервер.

дополнительно: man lagg

сентября 26, 2008

startup скрипты Oracle 11g и Oracle EM 11g

проверено на RHEL 5.1-5.2 и CentOS 5.1-5.2

% cat /etc/init.d/oracle

#!/bin/bash
#
# oracle Init file for starting and stopping
# Oracle Database. Script is valid for 11g versions.
#
# chkconfig: 35 80 30
# description: Oracle Database startup script# Source function library.

. /etc/rc.d/init.d/functions

ORACLE_OWNER="oracle"
ORACLE_HOME="/opt/oracle/orahome11/11.1.0/db_1"

case "$1" in

start)
echo -n $"Starting Oracle DB:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
echo "OK"
;;

stop)
echo -n $"Stopping Oracle DB:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
echo "OK"
;;

restart)
$0 stop
$0 start
echo "OK"
;;

*)
echo $"Usage: $0 {start|stop|restart}"

esac



% cat /etc/init.d/oraemctl
#!/bin/bash
#
# oraemctl Starting and stopping Oracle Enterprise Manager Database Control.
# Script is valid for 11g versions.
#
# chkconfig: 35 80 30
# description: Enterprise Manager DB Control startup script# Source function library.

. /etc/rc.d/init.d/functions

ORACLE_OWNER="oracle"
ORACLE_HOME="/opt/oracle/orahome11/11.1.0/db_1"

case "$1" in
start)
echo -n $"Starting Oracle EM DB Console:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl start dbconsole"
echo "OK"
;;

stop)
echo -n $"Stopping Oracle EM DB Console:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
echo "OK"
;;

restart)
$0 stop
$0 start
echo "OK"
;;

*)
echo $"Usage: $0 {start|stop|restart}"

esac







сентября 19, 2008

как минимизировать потери при "реанимации" зависшей системы Линукс.

скорее в дополнение к заметке: http://blogs.sysfaq.ru/kukulkan/2008/08/19/forced-reboot-shutdown-in-linuxb/



Итак, ситуация: система в аварийном состоянии. сервисы не отвечают, ssh отваливается по таймауту - приходится идти в аппаратную или использовать kvm. Холодная перезагрузка (отключением питания, кнопкой reset) не всегда возможна, поскольку может привести к потере данных.
Достаточно часто к зависшей системе получается обратиться с помощью "магических" сочетаний клавиш:

ALT + SysReq + ? - вывод справки о возможных комбинациях
ALT + SysReq + s - сбросить буферы FS на диск (на высоконагруженных системах может занять очень много времени, однако для уверенности необходимо дождаться сообщения OK от этой комманды).
ALT + SysReq + e - отправить SIGTERM процессам (мягкое завершение с сохранением данных).
ALT + SysReq + i - отправить SIGKILL процессам (принудительное завершение)
ALT + SysReq + u - отмонтировать дисковые разделы. рекомендуется и следует выполнять ТОЛЬКО после успешно выполненной синхронизации буферов (ALT + SysReq + s)
ALT + SysReq + b - перезагрузить систему
ALT + SysReq + r - перевести клавиатуру в сырой (raw) режим.

порядок действий:
синхронизируем для уверенности буферы FS, посылаем процессам SIGTERM, затем SIGKILL, снова синхронизируем буферы и отправляем систему в перезагрузку.
для работы этих сочетаний клавиш необходима опция в ядре CONFIG_MAGIC_SYSRQ (по-умолчанию включена в серверных и десктопных ядрах UBUNTU)

как это работает с описанием  можно прочесть в исходниках (файл ./drivers/char/sysrq.c)

заставка/скринсэйвер а-ля "код матрицы" в консоли

С помощью маленькой утилиты cmatrix можно немного разрядить рабочую обстановку :)

установка в debian/ubuntu:

apt-get install cmatrix

у программки есть опции, влияющих на выводимый поток символов.

скриншот работы cmatrix в xterm:

netams и pf

Около года назад я давал совет на одном форуме о совместном использовании во FreeBSD пакетного фильтра PF и NETAMS (www.netams.com) для учета трафика и блокировки. На днях понадобилось вспомнить это решение. На поиск ушло много времени, поэтому сейчас сделаю заметку на более надежном хостинге.

Итак, есть сенсор netflow - pfflowd. С его помощью мы можем генерит поток netwlow о трафике, прошедшим через пакетный фильтр pf. Netams в этой схеме будет коллектором netflow и считать трафик. По сравнению с использованием IPFW и divert, в конфигурации netams поменяется только source. Однако в этом случае нетамс не может блокировать аккаунты. Решение: связать через сервис processor (например):

в конфиге нетамса

access-script "/sbin/inet.sh"

сам скрипт:

#!/bin/sh

case "$1" in

DENY)

pfctl -q -t allow_inet-T delete $3 pfctl -q -k $3

;;

ALLOW)

pfctl -q -t allow_inet -T add $3 ;;

esac

в настройках PF:

# создаем таблицу вот так:

table <allow_inet> persist file "/etc/pf/allow_inet"
# или  так:
table <allow_inet> persist


nat on $ext_if inet proto tcp from <allow_inet> to any -> $ext_if
pass in on $int_if inet proto tcp from <allow_inet> to any


Обратите внимание на  аргументы $1 - действие (DENNY|ALLOW ) и $3 - IP адрес. Они передаются скрипту нетамсом.

P.S. сейчас модно netflow генерить через ng_netflow. pfflowd - просто "элегантное" решение, которое мне нравится.

августа 20, 2008

Создание программного массива RAID-1, FreeBSD.

- первоначальная настройка массива
загрузка модуля
% echo 'geom_mirror_load=YES' >> /boot/loader.conf
% gmirror load
cоздать mirror, добавить в него диск
% gmirror label -v -n -b round-robin gm0 /dev/da1
если диск используется, то операция завершится ощибкой. решение:
% sysctl kern.geom.debugflags=16
добавить второй диск:
% gmirror insert gm0 /dev/da2

- проверить состояние массива
% gmirror status

- заменить диск в массиве после отключения\поломки
% gmirror forget gm0
% gmirror configure -a gm0
% gmirror insert gm0 /dev/da3

- заменить диск в массиве
% gmirror remove gm0 /dev/da1
% gmirror configure -a gm0
% gmirror insert gm0 /dev/da3

Forced reboot & shutdown in linux.

Forced Reboot
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger

Forced Shutdown
echo 1 > /proc/sys/kernel/sysrq
echo o > /proc/sysrq-trigger