Архивы по Категориям: man - Page 7

Резервное копирование данных на сервере ( backup mysql)

часть первая mysql
Важная часть стабильности жизни сервера.

создаём каталог для бэкапа например
/var/backup
в нём будет находится скрипт бэкапа и подкаталоги для различных баз.
у меня на сервере несколько сайтов для каждого сайта я создам отдельные подкаталоги
/var/backup/site1
/var/backup/site2
в них будут находится непосредственно бэкапы

далее создаём скрипт бэкапа mysql сервера.

#touch database.sh

делаем файл исполняемым

#chmod +x database.sh

первой строкой в файле указываем исполнять данный файл интерпретатором bash

#!/bin/bash

далее делаем дап

mysqldump -u root -pMyPass database_name > site1/database_name.sql

где
-u root имя пользователя БД
-p Указывает на пароль пользователя root в данном примере MyPass
database_name – имя базы данных
> site1/database_name.sql положить дам в данный файл.

Далее надо упаковать данный дамп и указать дату его создания

7z a -t7z site1/$(date +%d_%b_%Y)_database_name.sql.7z site1/database_name.sql

7zip упаковывает файл site1/database_name.sql в каталоге site1 с именем сегодняшняя_дата_database_name.sql.7z

$(date +%d_%b_%Y) – задаётся формат даты. в данном примере имя файла будет выглядеть так:
14_Янв_2009_database_name.sql.7z

Теперь можно удалить временный файл дампа, ведь есть его архив :))

find ./ -name “*.sql” -exec rm {} \;

утилита find находит все файлы в данном каталоге и подкаталогах соответствующие формату “*.sql” и удаляет их.
в итоге в каталогах остаются лишь архивные копии дампов.

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

редактируем список задач крона

crontab -e

дописываем наш скрипт
00 01 * * * /var/backup/database.sh

выходим с сохранением
Ctrl+X
и подтверждаем наши намерения Y

В итоге каждый день в час ночи будет запускаться скрипт резервного копирования баз данных mysql

Создать раздел linux

просмотр linux разделов

[cc lang=”bash”]root@SERVER:/# fdisk -l
Disk /dev/sda: 499.9 GB, 499989348352 bytes
255 heads, 63 sectors/track, 60786 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0000849c

Device Boot Start End Blocks Id System
/dev/sda1 * 1 59650 479138593+ 83 Linux
/dev/sda2 59651 60786 9124920 5 Extended
/dev/sda5 59651 60786 9124888+ 82 Linux swap / Solaris

Disk /dev/sdb: 1499.9 GB, 1499989016576 bytes
255 heads, 63 sectors/track, 182363 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00093e0c[/cc]
Создание linux раздела
[cc lang=”bash”]#fdisk /dev/sdb[/cc]
далее жмём n
далее жирным что вводил
[cc lang=”bash”]Command action
e extended
p primary partition (1-4)
[/cc]
p
[cc lang=”bash”]
Partition number (1-4):1
First cylinder (1-182363, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-182363, default 182363):
Using default value 182363[/cc]
Сохраняем и выходим
[cc lang=”bash”]Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.[/cc]
раздел sdb1 создан. далее форматируем его.
[cc lang=”bash”]# mkfs -t ext3 /dev/sdb1
mke2fs 1.40.2 (12-Jul-2007)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
183107584 inodes, 366207691 blocks
18310384 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
11176 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.[/cc]
Монтируем и вперёд 🙂

После обновления ALERT – canary mismatch on efree() – heap overflow detected

После очередного обновления ubuntu 8.04 LTS, Апач начал вываливаться с ошибкой
ALERT – canary mismatch on efree() – heap overflow detected
Долгие поиски выявили что баг описан уже и я не первый.
Для меня это первый баг, который повлиял на стабильность работы сервера

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.

Thank you for the report, and for helping us make PHP better.

Собирать свежий пхп из сорцов мне не хотелось(суровое детсво, где я много компилил..), я слил с ubuntu 8.10 sources.list
сделал
apt-get update
apt-get install php5-common
после чего установилась php 5.2.6
После ночи работы пока всё работает

Оптимизация web-сервера: eAccelerator

продолжаю облегчать жизнь серверу.
eAccelerator – все мы знаем что при обращении к файлу пхп вэб сервер компилирует пхп файл в некую программу, которая в дальнейшем, что-то делает и выдаёт нам результат в виде html, ну и кто-то задумался(может отбукился 🙂 ): “а зачем постоянно делать одну и туже работу – компилировать при каждом обращении один и тот же файл”, и вот eAccelerator берёт откомпилированный php файл и складывает во временную папку и когда пользователь обращается к очередному пхп файлу в дело вступает eAccelerator, который проверяет есть ли уже “готовый” запрашиваемый файл, если находит готовый то сразу запускает его, тем самым облегчает жизнь серверу (значительно снижает нагрузку на процессор) например у меня нагрузка в часы пик с 70% упала до 7-25%

ставим php5-dev

apt-get install php5-dev

берём свежий дистрибутив с http://eaccelerator.net/
распаковываем, заходим в извлечённый каталог

phpize

./configure –enable-eaccelerator=shared

make

make install

cd /etc/php5/conf.d

Создаём конфигурационный файл для акселератора

touch eacclerator.ini

вставляем в него содержимое

zend_extension = “/usr/lib/php5/20060613+lfs/eaccelerator.so”
eaccelerator.shm_size = “0”
eaccelerator.cache_dir = “/var/cache/eaccelerator”
eaccelerator.enable = “1”
eaccelerator.optimizer = “1”
eaccelerator.check_mtime = “1”
eaccelerator.debug = “0”
eaccelerator.filter = “”
eaccelerator.shm_max = “0”
eaccelerator.shm_ttl = “0”
eaccelerator.shm_prune_period = “0”
eaccelerator.shm_only = “0”
eaccelerator.compress = “1”
eaccelerator.compress_level = “7”
eaccelerator.allowed_admin_path = “/var/www/”

создаю каталог для кэша

mkdir /var/cache/eaccelerator

chmod 777 /var/cache/eaccelerator

теперь можно перезапустить apache

для контроля над тех процессом есть файл control.php
в нём находим логин пароль и перекидываем в нужную нам папку на территории вэб сервера ну и заходим 🙂

iptables пробросить порт

есть ubuntu шлюз надо чтоб с инета был доступен нейкий сервис на внутренней машине

[cc lang=”bash”]
iptables -t nat -A PREROUTING -p tcp -d 91.195.101.20 –dport 7888 -j DNAT –to-destination 192.168.100.251:7888
iptables -t nat -A POSTROUTING -p tcp –dst 192.168.100.251 –dport 7888 -j SNAT –to-source 91.195.101.20
[/cc]

Первое правило подменяет ip приёмника на внутренний ип, а второе обратно подменяет ип отправителя на внешний.