date now()

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
agat
мл. сержант
Сообщения: 138
Зарегистрирован: 2009-10-27 1:21:55
Откуда: Солнечная система, планета Земля, Россия
Контактная информация:

date now()

Непрочитанное сообщение agat » 2010-01-13 12:38:25

Забыл как делал и терь всю голову сломал
Как создать поле что бы в него без явного указания в запросе запихивать дату и время

Код: Выделить всё

ALTER TABLE `data` ADD `data_add` DATE NOT NULL DEFAULT 'now()' AFTER `user`
:no:

Код: Выделить всё

ALTER TABLE `data` ADD `data_add` DATE NULL DEFAULT 'now()' AFTER `user`
тоже не хочет

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: date now()

Непрочитанное сообщение hizel » 2010-01-13 12:59:29

тригером
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
agat
мл. сержант
Сообщения: 138
Зарегистрирован: 2009-10-27 1:21:55
Откуда: Солнечная система, планета Земля, Россия
Контактная информация:

Re: date now()

Непрочитанное сообщение agat » 2010-01-13 13:08:46

а SQL запрос есть, как это сделать?

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: date now()

Непрочитанное сообщение hizel » 2010-01-13 13:12:58

В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
agat
мл. сержант
Сообщения: 138
Зарегистрирован: 2009-10-27 1:21:55
Откуда: Солнечная система, планета Земля, Россия
Контактная информация:

Re: date now()

Непрочитанное сообщение agat » 2010-01-13 13:23:00

не как то проще было без тригеров

Пусть MySQL автоматически установит значение столбца с типом TIMESTAMP при создании данной строки. Столбец будет установлен в исходное состояние со значением текущих даты и времени.
При выполнении последующих обновлений других столбцов в данной строке необходимо явно установить столбец TIMESTAMP в его текущее значение.
Однако, с другой стороны, для этих целей, возможно, будет проще использовать столбец DATETIME. При создании строки его следует инициализировать функцией NOW() и оставить в покое при последующих обновлениях.

Как результат выполнения функции, возвращающей величину, приемлемую в контекстах типов данных DATETIME, DATE или TIMESTAMP (например, функции NOW() или CURRENT_DATE).
Недопустимые значения величин DATETIME, DATE или TIMESTAMP преобразуются в значение ``ноль'' соответствующего типа величин ('0000-00-00 00:00:00', '0000-00-00', или 00000000000000).
etc....
ни каких тригеров не нужно

в общем не работает, Хотя я точно помню, что в sql запросе указывал default now() и все работало
память память, все не упомнить,

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: date now()

Непрочитанное сообщение hizel » 2010-01-13 13:27:00

В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
agat
мл. сержант
Сообщения: 138
Зарегистрирован: 2009-10-27 1:21:55
Откуда: Солнечная система, планета Земля, Россия
Контактная информация:

Re: date now()

Непрочитанное сообщение agat » 2010-01-13 13:34:20

Код: Выделить всё

CREATE TABLE `data` (
  `doctets` int(11) NOT NULL,
  `srcaddr` text NOT NULL,
  `dstaddr` text NOT NULL,
  `srcport` int(11) NOT NULL,
  `dstport` int(11) NOT NULL,
  `data_add` timestamp NOT NULL default CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
значения в экспорте

Код: Выделить всё

INSERT INTO `data` (`doctets`, `srcaddr`, `dstaddr`, `srcport`, `dstport`, `data_add`) VALUES
(131, '192.168.2.2', '80.121.89.67', 64525, 16945, '2010-01-13 13:29:07'),
'2010-01-13 13:29:07'

Это то мне и надо было, в общем как то работает :crazy: пока потом разберусь что к чему и с какогот TIMESTAMP
приобрел такой формат

Аватара пользователя
Gamerman
капитан
Сообщения: 1723
Зарегистрирован: 2009-05-17 21:01:23
Откуда: Украина, Ужгород - Днепр
Контактная информация:

Re: date now()

Непрочитанное сообщение Gamerman » 2010-01-13 15:18:35

Какой формат?
Глюк глюком вышибают!

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: date now()

Непрочитанное сообщение hizel » 2010-01-13 15:25:45

держать сырые аля нетфлов данные в мускуле - fail!
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Gamerman
капитан
Сообщения: 1723
Зарегистрирован: 2009-05-17 21:01:23
Откуда: Украина, Ужгород - Днепр
Контактная информация:

Re: date now()

Непрочитанное сообщение Gamerman » 2010-01-13 15:33:06

Э-э-э. А расшифровать можно, что сие значит? Вы о таймстамте или о сети?
Глюк глюком вышибают!

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: date now()

Непрочитанное сообщение zg » 2010-01-13 17:14:26

Gamerman писал(а):что сие значит?
это значит, что логам не место в базе

Аватара пользователя
agat
мл. сержант
Сообщения: 138
Зарегистрирован: 2009-10-27 1:21:55
Откуда: Солнечная система, планета Земля, Россия
Контактная информация:

Re: date now()

Непрочитанное сообщение agat » 2010-01-13 18:49:08

:) Оо!!! с netflow-export знакомы?

логам место в базе на сутки.

сеть небольшая порядка 20 юзерей и логируется только внешний интерфейс
За сутки набегает порядка 5000 записей(5000 строк/сут в общем то вы правы), Затем все это дело прочитывается с базы, суммируется, считается трафик за сутки и по каким портам были обращения, через сутки таблица чистится, обработанные данные вливаются в другую, для истории 1запись в сути не накладно (я не особо хорошо знаком с shell но с PHP дружу плотно поэтому мне так удобнее)
В основном все это затеяно дабы посчитать количество трафика прошедшего не от пользователей а с внешнего интерфейса шлюза и самое главное по каким портам было больше всего обращений, подозреваю что будет http трафик https а что еще?... и в каком процентном отношении, накропаю веб морду для него и ....

Хранить все логи за 3 месяца я не собираюсь, да и не буду делать это ни когда, стоит настроенный нетУп он все хранит в файлах как положено/

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

Аватара пользователя
agat
мл. сержант
Сообщения: 138
Зарегистрирован: 2009-10-27 1:21:55
Откуда: Солнечная система, планета Земля, Россия
Контактная информация:

Re: date now()

Непрочитанное сообщение agat » 2010-01-13 18:51:50

Gamerman писал(а):Какой формат?
2010-01-13 13:29:07 . 0000-00-00 00:00:00

вот такой

_______________________________________________________________________________________________________
Что это мне ефрейтора повесили? я им и в армии ни когда не был, соплю на погоны!!!

Аватара пользователя
Gamerman
капитан
Сообщения: 1723
Зарегистрирован: 2009-05-17 21:01:23
Откуда: Украина, Ужгород - Днепр
Контактная информация:

Re: date now()

Непрочитанное сообщение Gamerman » 2010-01-13 22:37:11

Да вроде нормальный формат, а что не так?
Глюк глюком вышибают!

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: date now()

Непрочитанное сообщение hizel » 2010-01-13 22:40:28

http://dev.mysql.com/doc/refman/5.0/en/datetime.html

просто датетайме до конца времен, а таймштамп поближе будет :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Gamerman
капитан
Сообщения: 1723
Зарегистрирован: 2009-05-17 21:01:23
Откуда: Украина, Ужгород - Днепр
Контактная информация:

Re: date now()

Непрочитанное сообщение Gamerman » 2010-01-14 16:45:31

На жизнь сервера - хватит :)
Глюк глюком вышибают!

Аватара пользователя
agat
мл. сержант
Сообщения: 138
Зарегистрирован: 2009-10-27 1:21:55
Откуда: Солнечная система, планета Земля, Россия
Контактная информация:

Re: date now()

Непрочитанное сообщение agat » 2010-01-16 18:38:56

Продолжу, пока написал вот такой запрос

Код: Выделить всё

SELECT (SUM( doctets ))/8192 AS sdoctets, `srcport` 
FROM `data` 
WHERE `dstaddr` = '192.168.2.2' AND `data_add` > DATE_SUB(NOW(), INTERVAL 1 DAY)
GROUP BY `data`.`srcport` 
ORDER BY `sdoctets` DESC 
LIMIT 0 , 10
Что он делает, бегает по таблице, выбирает данные за сутки,
складывает значения с поля doctets и выводит рейтинг первых 10 часто используемых портов

Я как увидел значения, сразу побежал ковырять свой фаер, и не безрезультатно.
теперь в рейтенге 80 порт

Код: Выделить всё

2355888.3354   80 
11131.6691     56712 
8278.0594       18768 
7996.6954       23206 
7913.1682       64258 
7589.6412       48601 
6791.8517       20253 
5115.1610       16567 
4724.0021       20829 
3208.8488       48437 

Канал нагружали торрентщики, сделал практически полноценный QoS, торрентам зарезал 10 коннектов, ну и подрихтовал напильником чуть, пока на тестах....

C TIMESTAMP тоже разобрался, все правильно такой формат у него и есть

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: date now()

Непрочитанное сообщение zg » 2010-01-16 20:33:03

agat писал(а):логам место в базе на сутки.
если в базе лог только за сутки, то зачем это условие?
agat писал(а):AND `data_add` > DATE_SUB(NOW(), INTERVAL 1 DAY)

Аватара пользователя
agat
мл. сержант
Сообщения: 138
Зарегистрирован: 2009-10-27 1:21:55
Откуда: Солнечная система, планета Земля, Россия
Контактная информация:

Re: date now()

Непрочитанное сообщение agat » 2010-01-17 10:48:33

Ну пока база не чистится, поэтому это условие, за 3е суток набегает 45метров
база чистится руками(автоматом еще не сделал) и не реализован перенос рейтинга портов в новую таблицу за сутки.

Поэтому воть.... занимался конфигурением фаера, и злобными торрентщиками. Провел так сказать разьяснительную беседу путем зарезания коннектов на неугодны порты, врнее наоборот разрешил известные порты без ограничения, все остальные загнал в linit src-port 10

Аватара пользователя
lolwut
мл. сержант
Сообщения: 123
Зарегистрирован: 2010-01-26 4:39:23

Re: date now()

Непрочитанное сообщение lolwut » 2010-01-26 4:47:04

agat писал(а):Как создать поле что бы в него без явного указания в запросе запихивать дату и время
ЕМНИП только так:

Код: Выделить всё

ALTER TABLE foo ADD bar timestamp on update CURRENT_TIMESTAMP;

Аватара пользователя
lolwut
мл. сержант
Сообщения: 123
Зарегистрирован: 2010-01-26 4:39:23

Re: date now()

Непрочитанное сообщение lolwut » 2010-03-01 17:01:02

я тут подумал ... agat, а что если Вам сделать так:
  1. создать БД:

    Код: Выделить всё

    DROP DATABASE IF EXISTS netflow;
    CREATE DATABASE netflow DEFAULT CHARACTER SET koi8r COLLATE koi8r_general_ci;
    
    -- --------------------------------------------------------
    
    CREATE TABLE raw (
      unix_secs int(10) unsigned NOT NULL default '0',
      dpkts int(10) unsigned NOT NULL default '0',
      doctets int(10) unsigned NOT NULL default '0',
      srcaddr varchar(45) NOT NULL default '0',
      dstaddr varchar(45) NOT NULL default '0',
      srcport smallint(5) unsigned NOT NULL default '0',
      dstport smallint(5) unsigned NOT NULL default '0',
      prot tinyint(3) unsigned NOT NULL default '0'
    ) TYPE=MyISAM;
    
    -- --------------------------------------------------------
    
    CREATE TABLE raw_data (
      unix_secs int(10) unsigned NOT NULL default '0',
      src_ip int(10) unsigned NOT NULL default '0',
      dst_ip int(10) unsigned NOT NULL default '0',
      packets int(10) unsigned NOT NULL default '0',
      bytes int(10) unsigned NOT NULL default '0',
      src_port smallint(5) unsigned NOT NULL default '0',
      dst_port smallint(5) unsigned NOT NULL default '0',
      proto tinyint(3) unsigned NOT NULL default '0',
      KEY scr_idx (src_ip,dst_port),
      KEY time_idx (unix_secs)
    ) TYPE=MyISAM;
    
  2. написать скриптец

    Код: Выделить всё

    #!/bin/sh
    
    flow_base="/path/to/netflow/flows"
    flow_dir="$flow_base/`date -v -1m +%Y/%Y-%m`"
    #flow_dir="$flow_base/2003/2003-12"
    tmp_file="$flow_base/tmp.csv"
    
    flow_export="/usr/local/bin/flow-export"
    
    mysql_user='root'
    mysql_pass='root'
    mysql="/usr/local/bin/mysql -u $mysql_user -p$mysql_pass "
    
    if [ -d $flow_dir ]; then
        for i in `ls -1 $flow_dir | grep ^ft-`; do
            if [ -r $flow_file_in ]; then
                $flow_export -f 2 -m UNIX_SECS,DFLOWS,DPKTS,DOCTETS,SRCADDR,DSTADDR,SRCPORT,DSTPORT,PROT < $flow_dir/$i > $tmp_file
            fi
    
            if [ -r $tmp_file ]; then
                $mysql -D netflow -B -e "LOAD DATA INFILE '$tmp_file' INTO TABLE raw FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\n'; DELETE FROM raw WHERE srcaddr = 'srcaddr' AND dstaddr = 'dstaddr'; INSERT INTO raw_data SELECT unix_secs, INET_ATON(srcaddr), INET_ATON(dstaddr), dpkts, doctets, srcport, dstport, prot FROM raw; TRUNCATE TABLE raw;"
                rm -f $tmp_file
            fi
        done
    fi
    
ну и заливать Ваши flow-tools файлы с netflow данными в БД, а т.к. на выхлопе работы скрипта IP адреса будут в виде UNSIGNED INT то оперировать ими будет вполне удобно (GROUP BY будет корректно работать)