Ошибка пула IP адресов в Plesk

Случается так, что при работе с Plesk версии 10 вылетает ошибка пула ip адресов:

Error: There is no IP address x.x.x.x in the pool

Появляется она в том случае, когда ip адрес абонемента (subscription) меняется через Websites & Domains > Web Hosting Access. При этом пул IP адресов абонемента очищается. Проблема существует в Plesk 10.4.4 в случае если включена опция Open hosting operations в панели администрирования Tools & Settings > Interface Management.

Фикситься через базу данных. Для начала учтем, что Plesk работает с базой psa и сделаем запасную копию:

mysqldump -uadmin -p`cat /etc/psa/.psa.shadow ` psa > psa.sql

Дальше подключаемся к БД:

mysql -uadmin -p`cat /etc/psa/.psa.shadow ` psa

И выполняем следующий запрос. В результате получаем список пулов, у которых нету значения pool_id:

select distinct c.id, c.pname from clients c, domains d where d.cl_id = c.id and c.pool_id = 0;

Screenshot from 2014-06-30 09:50:31

Дальше нужно узнать какой ip адрес был назначен клиенту с нашим idшником. Обратите внимание, что в значение c.id я подставил id с первого вывода:

select distinct ip.id, ip.ip_address from domains d, clients c, dom_param dp, IP_Addresses ip where ip.id = dp.val and dp.param = 'ip_addr_id' and dp.dom_id = d.id and d.cl_id = c.id and c.id = 94;

Screenshot from 2014-06-30 09:50:41

Теперь тип пула в котором значится наш ip адрес:

select type from ip_pool where id = (select pool_id from clients where type = 'admin') and ip_address_id = 6;

Screenshot from 2014-06-30 09:55:13

Узнаем значение последней записи в таблице ip_pool и прибавляем к ней единицу:

select max(id) + 1 from ip_pool;

Вставляем нужные значения в таблицу ip_pool. При этом учитываем номер последней записи в этой таблице, id ip адреса, который был назначен клиенту и тип ip адреса:

insert into ip_pool (id, ip_address_id, type) values (101, 6, 'shared');

Обновляем таблицу clients:

update clients set pool_id = 101 where id = 94;

http://kb.parallels.com/en/116060