Вот еще более свежая версия:

Нотатки про Linux та корисні поради для системних адміністраторів
Вот еще более свежая версия:
Posted in Misc.
rev="post-1547" No comments
– 02.09.2014
Posted in Fun.
rev="post-1533" 3 коментарі
– 02.06.2014
Уж простите за тавтологию, но иногда создавать новый дисковый раздел под раздел подкачки (swap) не представляется возможным. В таких случаях можно создать его в виде файла в файловой системе. Для примера рассмотрим создание дополнительного swap-файла размером 8ГБ:
# dd if=/dev/zero of=/swapfile bs=1M count=8192 8192+0 records in 8192+0 records out 8589934592 bytes (8,6 GB) copied, 13,2861 s, 647 MB/s # ls -l /swapfile -rw-r--r--. 1 root root 8589934592 Май 12 11:13 /swapfile # mkswap /swapfile mkswap: /swapfile: warning: dont erase bootbits sectors on whole disk. Use -f to force. Setting up swapspace version 1, size = 8388604 KiB no label, UUID=278eca1b-2af8-4e42-be11-5025ba0f3d8d
Обратите внимание на размер свободного swap-а после первой и второй команд free:
# free; swapon /swapfile ; free total used free shared buffers cached Mem: 32867736 30405392 2462344 0 153196 8790844 -/+ buffers/cache: 21461352 11406384 Swap: 8388600 7596 8381004 total used free shared buffers cached Mem: 32867736 30411360 2456376 0 153196 8790844 -/+ buffers/cache: 21467320 11400416 Swap: 16777200 7596 16769604 # echo '/swapfile none swap sw 0 0' >> /etc/fstab
Posted in *nix.
rev="post-1528" 1 comment
– 12.05.2014
После переезда с версии MySQL 5.5.13 на 5.6.10 стали вылезать странные грабли.
Симптом №1:
Caused by: java.sql.SQLException: Incorrect string value: '\xE6\xAF\x94FOX...' for column 'parameter_value' at row 4 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)
Симптом №2:
Data truncation: Data too long for column 'channel' at row 1 org.hibernate.exception.DataException: could not execute native bulk manipulation query
Так как "раньше всё работало" и в код приложения никто изменений не вносил, закралось подозрение, что новый mysql работает в каком-то более строгом режиме. Гугление вывело на глобальную переменную sql_mode.
mysql> show global variables like 'sql_mode'; +--------------------------+--------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------+ | sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | +--------------------------+--------------------------------------------+
Читаем официальное руководство и видим:
STRICT_TRANS_TABLES
If a value could not be inserted as given into a transactional table, abort the statement. For a nontransactional table, abort the statement if the value occurs in a single-row statement or the first row of a multiple-row statement.
На основе этой инфы приходит в голову мысль, что надо этот режим STRICT_TRANS_TABLES попробовать отключить:
mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION'; mysql> show global variables like 'sql_mode'; +---------------+------------------------+ | Variable_name | Value | +---------------+------------------------+ | sql_mode | NO_ENGINE_SUBSTITUTION | +---------------+------------------------+
И таки да, после этого запросы, ранее выполнявшиеся с ошибками, стали отрабатывать нормально, как и было на версии 5.5.13. Чтобы сохранить изменения навсегда, в /etc/my.cnf я добавил в секции [mysqld]
sql-mode="NO_ENGINE_SUBSTITUTION"
Однако далее меня ждала еще одна засада – после рестарта mysql-сервера я опять увидел знакомую картину, несмотря на внесенные в /etc/my.cnf изменения:
mysql> show global variables like 'sql_mode'; +--------------------------+--------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------+ | sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | +--------------------------+--------------------------------------------+
Это было непостижимо и удивительно. Я уже и еще раз проверил hostname у сервера, дабы убедиться, что всё ранее сделанное происходило именно на том сервере, где и должно было происходить. Почесав пару минут репу, решил проверить наличие других конфигов mysql-сервера в системе. И таки нашёл один такой в /usr/my.cnf:
$ cat /usr/my.cnf | grep -vE "^#" | sed -r "/^$/ d" sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Вот он, вражеский конфиг, который переопределял моё значение sql_mode! Что самое прикольное, больше ничего в этом конфиге не было. Как будто его специально всунули, чтобы добавить мне головняка. После удаления файла /usr/my.cnf и рестарта mysql-сервера я уже раз и навсегда получил возможность наслаждаться значением sql_mode без STRICT_TRANS_TABLES.
Posted in Howto.
rev="post-1522" 3 коментарі
– 29.04.2014