среда, 17 августа 2011 г.
MySQL настройка репликации
Пример быстрой настройки репликации.
на том же master сервере вносим в главный конфигурационный файл my.cnf
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
bind-address = 0.0.0.0
На master сервере создаем mysql пользователя специально для репликации с соответствующими правами
mysql> grant replication slave on *.* to 'repl_user'@'%' identified by 'secret';
выполняем первоначальную синхронизацию master и slave серверов, копируем базы данных с master на slave. Это можно сделать просто через бэкап всех баз на master'e и разворачивании этого бэкапа на slave сервере. После чего выключаем mysql сервер
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
bind-address = 0.0.0.0
запускаем mysql сервер и выполняем очистку существующих бинарных логов на нем
mysql> reset master;
выключаем slave сервер, если он включен, вносим в my.cnf и обратно включаем
server-id = 2
master-host = 192.168.1.100
master-user = repl_user
master-password = secret
на Debian потребуется перенос файла /etc/mysql/debian.cnf на slave сервер, так как в нем хранятся данные для доступа скриптов ОС к mysql серверу
Теперь проверяем состояние и работоспособность настроенной репликации
на master сервере
на master сервере
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 191 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
на slave сервере
mysql> show slave status;
часть вывода
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.100
Master_User: repl_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 191
Relay_Log_File: mysqld-relay-bin.000006
Relay_Log_Pos: 336
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
вторник, 16 августа 2011 г.
Лимитирование ресурсов системных пользователей
Ограничить ресурсы пользователям можно через /etc/security/limits.conf (оперативная память, процессорное время, кол-во процессов и т.д.). Пример записи устанавливающей максимальное кол-во процессов для пользователя user в десять
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
user hard nproc 10
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
user hard nproc 10
Без лимитирования пользователей по ресурсам (в данном случае на кол-во процессов) простейшая fork-бомба на python кладет сервер безвозвратно и приходится его перезагружать по питанию.
#!/usr/bin/python
import os
while(1):
os.fork()
понедельник, 15 августа 2011 г.
MySQL ограничение ресурсов пользователя
Выполняем команду
mysql -u root -p mysql -e "desc user;"
вывод части описания таблицы MySQL пользователей касающейся ограничения ресурсов
...
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+
max_questions - количество запросов в час
max_updates - количество апдейтов в час, т.е. любая команда которая изменяет данные в таблице или базе данных
max_connections - количество коннектов сделанных за час, т.е. все новые соединения открытые за час
max_user_connections - количество одновременных подключений к серверу
выставить ограничение можно таким запросом
update user set max_connections = '150' where user = 'test';
при превышении одного из ограничений будет возвращаться соответствующая ошибка, например
ERROR 1226 (42000): User 'test' has exceeded the 'max_connections_per_hour' resource (current value: 150)
Сбросить счетчики можно с помощью команды flush user_resources;
mysql -u root -p mysql -e "desc user;"
вывод части описания таблицы MySQL пользователей касающейся ограничения ресурсов
...
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+
max_updates - количество апдейтов в час, т.е. любая команда которая изменяет данные в таблице или базе данных
max_connections - количество коннектов сделанных за час, т.е. все новые соединения открытые за час
max_user_connections - количество одновременных подключений к серверу
выставить ограничение можно таким запросом
update user set max_connections = '150' where user = 'test';
ERROR 1226 (42000): User 'test' has exceeded the 'max_connections_per_hour' resource (current value: 150)
Сбросить счетчики можно с помощью команды flush user_resources;
Дисковые квоты
Активация дисковых квот для разделов монтируемых автоматически происходит через /etc/fstab, опции usrquota и grpquota для пользователей и групп соответственно. После добавления опции можно просто перемонитровать раздел, например
mount -o remount /home
Создание служебных файлов для хранения информации о квотах и включение квотирования.
quotacheck - проверяет квотирование на всех ФС и создает служебные файлы aquota.user, aquota.group, если их не существует. Так же данная утилита пересчитывает квоты и восстанавливает поврежденные файлы квот. Пример запуска утилиты
quotacheck -augv
-a для всех ФС в /etc/fstab для которых разрешено автомонтирование
-u для пользовательских квот
-g для групповых квот
-v включение подробного вывода
quotaon -ugva - включение квот
edquota - утилита для установки квот для отдельного пользователя
Мягкие пределы (soft) - пределы при достижении которых пользователь получает предупреждение о превышении дисковой квоты.
Жесткие пределы (hard) - границы которые пользователь не может превысить
Ограничение на блоки (blocks) - это ограничение на объем сохраняемой информации
Ограничение по inodes - это ограничение на количество файлов и каталогов
Копирование квот - ключ -p утилиты edquota использует значение квот пользователя прототипа для установки квот другому пользователю. Пример
edquota -p ivanov petrova sidorov
квоты пользователя petrova и sidorov станут такими же как и у пользователя ivanov
Задание квот для группы
edquota -g <имя_группы>
Для создания служебных файлов aquota.user, aquota.group на новом разделе требуется указывать этот раздел как целевой
quotacheck -ugv /data
также возможно добавление ключа -f для принудительного сканирования нужного раздела
repquota - утилита для вывода информации о текущем состоянии дисковых квот
-a вывод отчета о всех ФС отмеченных в /etc/fstab
-g вывод отчета о квотах на группы
-u вывод отчета о квотах на пользователей
пример вывода по пользователям
server:~# repquota -uva
*** Report for user quotas on device /dev/simfs
Block grace time: 00:00; Inode grace time: 00:00
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 803900 0 0 37354 0 0
man -- 840 0 0 65 0 0
news -- 4 0 0 1 0 0
www-data -- 1036 0 0 80 0 0
nobody -- 4 0 0 1 0 0
libuuid -- 4 0 0 1 0 0
bind -- 16 0 0 4 0 0
fetchmail -- 4 0 0 1 0 0
stunnel4 -- 12 0 0 3 0 0
smmta -- 12 0 0 3 0 0
postfix -- 84 0 0 48 0 0
ftp -- 4 0 0 1 0 0
mysql -- 21360 0 0 73 0 0
sysadmin -- 120 0 0 30 0 0
virtuser_501 -- 4 0 0 2 0 0
virtuser_502 -- 4 0 0 2 0 0
virtuser_503 -- 4 0 0 2 0 0
Statistics:
Total blocks: 131594
Data blocks: 5
Entries: 17
Used average: 3.400000
пример вывода по группам
server:~# repquota -gva
*** Report for group quotas on device /dev/simfs
Block grace time: 00:00; Inode grace time: 00:00
Block limits File limits
Group used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 791112 0 0 37248 0 0
adm -- 12672 0 0 67 0 0
tty -- 24 0 0 14 0 0
disk -- 0 0 0 25 0 0
mail -- 128 0 0 5 0 0
news -- 4 0 0 1 0 0
kmem -- 0 0 0 3 0 0
audio -- 0 0 0 33 0 0
www-data -- 1016 0 0 72 0 0
src -- 12 0 0 4 0 0
shadow -- 124 0 0 5 0 0
utmp -- 456 0 0 6 0 0
video -- 0 0 0 1 0 0
staff -- 60 0 0 16 0 0
nogroup -- 8 0 0 2 0 0
libuuid -- 16 0 0 4 0 0
crontab -- 40 0 0 3 0 0
ssh -- 104 0 0 1 0 0
bind -- 28 0 0 7 0 0
ssl-cert -- 8 0 0 2 0 0
stunnel4 -- 12 0 0 3 0 0
smmsp -- 44 0 0 9 0 0
mgrsecure -- 4 0 0 1 0 0
postfix -- 40 0 0 30 0 0
postdrop -- 40 0 0 9 0 0
dovecot -- 12 0 0 4 0 0
mysql -- 21324 0 0 62 0 0
sysadmin -- 124 0 0 34 0 0
Statistics:
Total blocks: 131594
Data blocks: 8
Entries: 28
Used average: 3.500000
mount -o remount /home
Создание служебных файлов для хранения информации о квотах и включение квотирования.
quotacheck - проверяет квотирование на всех ФС и создает служебные файлы aquota.user, aquota.group, если их не существует. Так же данная утилита пересчитывает квоты и восстанавливает поврежденные файлы квот. Пример запуска утилиты
quotacheck -augv
-a для всех ФС в /etc/fstab для которых разрешено автомонтирование
-u для пользовательских квот
-g для групповых квот
-v включение подробного вывода
quotaon -ugva - включение квот
edquota - утилита для установки квот для отдельного пользователя
Мягкие пределы (soft) - пределы при достижении которых пользователь получает предупреждение о превышении дисковой квоты.
Жесткие пределы (hard) - границы которые пользователь не может превысить
Ограничение на блоки (blocks) - это ограничение на объем сохраняемой информации
Ограничение по inodes - это ограничение на количество файлов и каталогов
Копирование квот - ключ -p утилиты edquota использует значение квот пользователя прототипа для установки квот другому пользователю. Пример
edquota -p ivanov petrova sidorov
квоты пользователя petrova и sidorov станут такими же как и у пользователя ivanov
Задание квот для группы
edquota -g <имя_группы>
Для создания служебных файлов aquota.user, aquota.group на новом разделе требуется указывать этот раздел как целевой
quotacheck -ugv /data
также возможно добавление ключа -f для принудительного сканирования нужного раздела
repquota - утилита для вывода информации о текущем состоянии дисковых квот
-a вывод отчета о всех ФС отмеченных в /etc/fstab
-g вывод отчета о квотах на группы
-u вывод отчета о квотах на пользователей
пример вывода по пользователям
server:~# repquota -uva
*** Report for user quotas on device /dev/simfs
Block grace time: 00:00; Inode grace time: 00:00
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 803900 0 0 37354 0 0
man -- 840 0 0 65 0 0
news -- 4 0 0 1 0 0
www-data -- 1036 0 0 80 0 0
nobody -- 4 0 0 1 0 0
libuuid -- 4 0 0 1 0 0
bind -- 16 0 0 4 0 0
fetchmail -- 4 0 0 1 0 0
stunnel4 -- 12 0 0 3 0 0
smmta -- 12 0 0 3 0 0
postfix -- 84 0 0 48 0 0
ftp -- 4 0 0 1 0 0
mysql -- 21360 0 0 73 0 0
sysadmin -- 120 0 0 30 0 0
virtuser_501 -- 4 0 0 2 0 0
virtuser_502 -- 4 0 0 2 0 0
virtuser_503 -- 4 0 0 2 0 0
Statistics:
Total blocks: 131594
Data blocks: 5
Entries: 17
Used average: 3.400000
пример вывода по группам
server:~# repquota -gva
*** Report for group quotas on device /dev/simfs
Block grace time: 00:00; Inode grace time: 00:00
Block limits File limits
Group used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 791112 0 0 37248 0 0
adm -- 12672 0 0 67 0 0
tty -- 24 0 0 14 0 0
disk -- 0 0 0 25 0 0
mail -- 128 0 0 5 0 0
news -- 4 0 0 1 0 0
kmem -- 0 0 0 3 0 0
audio -- 0 0 0 33 0 0
www-data -- 1016 0 0 72 0 0
src -- 12 0 0 4 0 0
shadow -- 124 0 0 5 0 0
utmp -- 456 0 0 6 0 0
video -- 0 0 0 1 0 0
staff -- 60 0 0 16 0 0
nogroup -- 8 0 0 2 0 0
libuuid -- 16 0 0 4 0 0
crontab -- 40 0 0 3 0 0
ssh -- 104 0 0 1 0 0
bind -- 28 0 0 7 0 0
ssl-cert -- 8 0 0 2 0 0
stunnel4 -- 12 0 0 3 0 0
smmsp -- 44 0 0 9 0 0
mgrsecure -- 4 0 0 1 0 0
postfix -- 40 0 0 30 0 0
postdrop -- 40 0 0 9 0 0
dovecot -- 12 0 0 4 0 0
mysql -- 21324 0 0 62 0 0
sysadmin -- 124 0 0 34 0 0
Statistics:
Total blocks: 131594
Data blocks: 8
Entries: 28
Used average: 3.500000
Льготный период (block grace, inode grace) - пользователи могут превысить мягкие пределы (soft) в течение льготного периода, который по умолчанию составляет 7 дней. По истечению этого периода мягкие пределы становятся жесткими (hard).
edquota -t установить grace-period используемый по умолчанию для пользователей
edquota -tg установить grace-period используемый по умолчанию для групп
edquota -T <имя_пользователя> установить grace-period для конкретного пользователя
setquota - утилита для управления квотами
setquota -u <имя_пользователя> block-softlimit block-hardlimit inode-softlimit inode-hardlimit <файловая_система>
пример
setquota -u sidorova 0 50000 0 0 /home установит hard-limit на объем данных в домашнем каталоге в 50Мб.
воскресенье, 14 августа 2011 г.
Сборка программного RAID массива на Solaris 10
Cборка зеркального массива для корневого раздела
Копируем таблицу разделов с основного диска на жесткий диск который добавляем в массив (при возникновении ошибки для добавляемого диска требуется выполнить команду format)
prvtoc /dev/rdsk/c0d0s0 | fmthard -s - /dev/rdsk/c0d1s0
(по завершению будет примерно такой вывод: fmthard: New volume table of contents ...)
добавляем в пул-зеркало новый диск
zpool attach rpool c0d0s0 c0d1s0
и проверяем состояние пула
zpool status
устанавливаем загрузчик на добавляемый диск
installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0d1s0
(по завершению будет вывод: stage1 written to... stage2 written to...)
Сборка массива RAID-5, RAID-6
сборка массива RAIDZ (RAID-5)
zpool create raid5_pool raidz c2t0d0 c2t1d0 c2t2d0
сборка массива RAIDZ2 (RAID-6)
zpool create raid6_pool raidz2 c2t0d0 c2t1d0 c2t2d0 c2t3d0
Работа с hotspare диском
добавление диска горячей замены (hotspare) к пулу
zpool add rpool spare c1d1s0
удаление hotspare диска из пула
zpool remove rpool c1d1s0
Скраббинг (scrubbing)
Выполнение скраббинга пула для проверки того что все контрольные суммы верны.
zpool scrub rpool
Копируем таблицу разделов с основного диска на жесткий диск который добавляем в массив (при возникновении ошибки для добавляемого диска требуется выполнить команду format)
prvtoc /dev/rdsk/c0d0s0 | fmthard -s - /dev/rdsk/c0d1s0
(по завершению будет примерно такой вывод: fmthard: New volume table of contents ...)
добавляем в пул-зеркало новый диск
zpool attach rpool c0d0s0 c0d1s0
и проверяем состояние пула
zpool status
устанавливаем загрузчик на добавляемый диск
installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0d1s0
(по завершению будет вывод: stage1 written to... stage2 written to...)
Сборка массива RAID-5, RAID-6
сборка массива RAIDZ (RAID-5)
zpool create raid5_pool raidz c2t0d0 c2t1d0 c2t2d0
сборка массива RAIDZ2 (RAID-6)
zpool create raid6_pool raidz2 c2t0d0 c2t1d0 c2t2d0 c2t3d0
Работа с hotspare диском
добавление диска горячей замены (hotspare) к пулу
zpool add rpool spare c1d1s0
удаление hotspare диска из пула
zpool remove rpool c1d1s0
Скраббинг (scrubbing)
Выполнение скраббинга пула для проверки того что все контрольные суммы верны.
zpool scrub rpool
Подписаться на:
Сообщения (Atom)