Этот пост содержит подробное пошаговое описание процесса настройки репликации на основе Londiste, системы асинхронной мастер-слэйв репликации из пакета SkyTools от Skype.
Допустим есть 2 сервера - host1 и host2. На host1 работает кластер с одной или несколькими базами, которые необходимо реплицировать на host2. Другими словами host1 будет мастером, а host2 слейвом.
Прежде всего необходимо установить пакет SkyTools. Его исходники можно найти на официальном сайте проекта или в wiki. Там же найдёте всю документацию и ссылки на дополнительные материалы. Советую обращаться к ним если захотите узнать дополнительные подробности о вещах, которых я буду в данной статье касаться поверхностно.
Итак, всё ПО необходимое для репликации установлено, но, прежде чем начать настройку, хочу рассказать о принципах работы Londiste в очень общих словах.
April 27, 2010
Установка Londiste в подробностях
Posted by
grayhemp
at
3:51 AM
2
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
londiste,
pgq,
postgresql,
replication,
russian,
Sergey Konoplev,
skytools
April 14, 2010
Перенимаем NoSQL
Перевод Learning from NoSQL с Bruce Momjian: Postgres Blog
Я думаю, что первый урок, который PostgreSQL сообщество может вынести из NoSQL, в том, что не всем нужны все наши возможности, и, если это не будет сложно, нам необходимо дать пользователям возможность отказаться от некоторых из них, в пользу желаемых NoSQL преимуществ. В некоторых случаях мы уже можем это сделать:
- Вы можете улучшить скорость за счёт откладывания или отказа от надежности (synchronous_commit, fsync)
- Вы можете убрать затраты на целостность не устанавливая ограничения (constraints)
- Можете использовать подготовленные (prepared) запросы для устранения затрат на парсера и оптимизатора
- Массивы часто могут быть использованы для ухода от затрат на join
- Можно хранить не структурированные данные в hstore
- Устаревшие данные можно обслуживать с помощью асинхронной мульти-мастер репликации (Bucardo)
Однако есть некоторые вещи, которые будет сложно осуществить:
- Доступ к данным без SQL
- Снижение затрат за счёт отказа от атомарности и изоляции
Я думаю о новых опциональных возможностях, которые мы могли бы предоставлять потенциальным NoSQL пользователям, но тут надо всё хорошо продумывать.
Дополнение: Один из пунктов в нашем TODO-листе, который может помочь потенциальным NoSQL пользователям, это реализация встроенного типа данных JSON. JSON используется в качестве формата хранилища во многих NoSQL базах.
Я думаю, что первый урок, который PostgreSQL сообщество может вынести из NoSQL, в том, что не всем нужны все наши возможности, и, если это не будет сложно, нам необходимо дать пользователям возможность отказаться от некоторых из них, в пользу желаемых NoSQL преимуществ. В некоторых случаях мы уже можем это сделать:
- Вы можете улучшить скорость за счёт откладывания или отказа от надежности (synchronous_commit, fsync)
- Вы можете убрать затраты на целостность не устанавливая ограничения (constraints)
- Можете использовать подготовленные (prepared) запросы для устранения затрат на парсера и оптимизатора
- Массивы часто могут быть использованы для ухода от затрат на join
- Можно хранить не структурированные данные в hstore
- Устаревшие данные можно обслуживать с помощью асинхронной мульти-мастер репликации (Bucardo)
Однако есть некоторые вещи, которые будет сложно осуществить:
- Доступ к данным без SQL
- Снижение затрат за счёт отказа от атомарности и изоляции
Я думаю о новых опциональных возможностях, которые мы могли бы предоставлять потенциальным NoSQL пользователям, но тут надо всё хорошо продумывать.
Дополнение: Один из пунктов в нашем TODO-листе, который может помочь потенциальным NoSQL пользователям, это реализация встроенного типа данных JSON. JSON используется в качестве формата хранилища во многих NoSQL базах.
Posted by
grayhemp
at
10:48 PM
2
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
Bruce Momjian,
nosql,
performance,
postgresql,
russian,
translation
Несколько слов о NoSQL
Перевод Settling for NoSQL с Bruce Momjian: Postgres Blog
В последнее время вокруг NoSQL баз данных довольно много шума, и, багодаря посещению конференции Emerging Technologies for the Enterprise Conference, я узнал о них больше. Я прослушал рассказ о Cassandra, и ещё один о MongoDB.
NoSQL базы имеют несколько отличий от реляционных:
- "голое" обращение к данным, другими словами отсутствие языка запросов (клиент делает большинство того, что обычно делается с помощью SQL)
- отсутствие join-ов (данные должны соединяться на стороне клиента)
- жертвуется ACID и транзакционные свойства ради скорости, отказоустойчивости, простоты добавления/выведения нод
Кого-то может смутить отсутствие этих значительных возможностей реляционных баз, но, если нужный вам отклик и требования к инфраструктуре не вписываются в рамки реляционных баз, и вы можете принять такие ограничения (думаю социальные медиа или поисковые движки), тогда NoSQL вполне имеет смысл.
В последнее время вокруг NoSQL баз данных довольно много шума, и, багодаря посещению конференции Emerging Technologies for the Enterprise Conference, я узнал о них больше. Я прослушал рассказ о Cassandra, и ещё один о MongoDB.
NoSQL базы имеют несколько отличий от реляционных:
- "голое" обращение к данным, другими словами отсутствие языка запросов (клиент делает большинство того, что обычно делается с помощью SQL)
- отсутствие join-ов (данные должны соединяться на стороне клиента)
- жертвуется ACID и транзакционные свойства ради скорости, отказоустойчивости, простоты добавления/выведения нод
Кого-то может смутить отсутствие этих значительных возможностей реляционных баз, но, если нужный вам отклик и требования к инфраструктуре не вписываются в рамки реляционных баз, и вы можете принять такие ограничения (думаю социальные медиа или поисковые движки), тогда NoSQL вполне имеет смысл.
Posted by
grayhemp
at
10:14 PM
0
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
Bruce Momjian,
cassandra,
mongodb,
nosql,
postgresql,
russian,
translation
April 12, 2010
Как передать NEW из правила в хранимую функцию.
Всё началось на форуме sql.ru - PostgreSQL. Вопрос был следующим:
Описание:
Интересное генерализирующее решение на основе курсоров сегодня в своём блоге опубликовал автор этого вопроса - Vhubuo. Очень не обычный подход.
А вы бы как это сделали?
Как передать NEW из правила в хранимую функцию?
Описание:
Есть много представлений, в которых в базу записывается, например, адрес. И это везде происходит одинаково. Хочется вынести этот процесс в отдельную процедуру.
Интересное генерализирующее решение на основе курсоров сегодня в своём блоге опубликовал автор этого вопроса - Vhubuo. Очень не обычный подход.
А вы бы как это сделали?
Posted by
grayhemp
at
10:33 AM
0
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
April 7, 2010
Переносим pg_xlog на другой диск под Windows
На днях на форуме sql.ru - PostgreSQL был задан вопрос о переносе pg_xlog под Windows. Т.к. вопрос актуален для России - 1С, Windows сервера, и т.п., решил сделать этот пост.
Собственно особенность прцедуры переноса лишь в одном - символические ссылки.
Собственно особенность прцедуры переноса лишь в одном - символические ссылки.
Posted by
grayhemp
at
8:09 PM
1 comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
junction,
pg_xlog,
postgresql,
q and a,
russian,
Sergey Konoplev,
windows
April 5, 2010
Использование страниц разделяемой памяти
Требуется расширение pg_buffercache.
Запрос помогает понять как используется разделяемая память разными сущностями.
Запрос помогает понять как используется разделяемая память разными сущностями.
SELECT
c.relname, -- отношение
count(*) AS pages, -- количество страниц
-- использование страниц
sum((usagecount = 0)::int4) as "0",
sum((usagecount = 1)::int4) as "1",
sum((usagecount = 2)::int4) as "2",
sum((usagecount = 3)::int4) as "3",
sum((usagecount = 4)::int4) as "4",
sum((usagecount = 5)::int4) as "5"
FROM
pg_buffercache b
INNER JOIN pg_class c ON
b.relfilenode = c.relfilenode AND
b.reldatabase IN (
0, (SELECT oid FROM pg_database WHERE datname = current_database())
)
GROUP BY c.relname
ORDER BY 2 DESC
LIMIT 10;
Posted by
grayhemp
at
7:36 PM
0
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
buffers,
pg_buffercache,
q and a,
russian,
Sergey Konoplev
April 1, 2010
PostgreSQL 9.0: Добавлена эмуляция MySQL (MySQL Emulation Layer)
Перевод PostgreSQL 9.0: Includes the new MySQL Emulation Layer с ads' corner
(В январе 2010 г. команда разработчиков решила, что следующая версия PostgreSQL будет нумероваться 9.0, а не 8.5)
Сегодня в PostgreSQL 9.0 была добавлена возможность эмуляции MySQL, так называемый MySQL Emulation Layer.
Для активации этой возможности просто включите CUG опцию mysql_compatible в "on".
(В январе 2010 г. команда разработчиков решила, что следующая версия PostgreSQL будет нумероваться 9.0, а не 8.5)
Сегодня в PostgreSQL 9.0 была добавлена возможность эмуляции MySQL, так называемый MySQL Emulation Layer.
Для активации этой возможности просто включите CUG опцию mysql_compatible в "on".
postgres=# SELECT * FROM pg_settings WHERE name = 'mysql_compatible';
-[ RECORD 1 ]----------------------------------------------------------------
name | mysql_compatible
setting | ON
unit |
category | Version AND Platform Compatibility / Other Platforms AND Clients
short_desc | Enable MySQL Emulation Layer
extra_desc |
context | backend
vartype | bool
source | DEFAULT
min_val |
max_val |
Posted by
grayhemp
at
11:18 AM
2
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
Andreas Scherbaum,
fun,
mysql,
pg85,
pg90,
postgresql,
russian,
translation
Панель CPU conky + dzen2 + xmonad
Итак, в след за постом о панели питания публикую мою панель состояния CPU. Напомню что речь идёт о dzen2 панели для Xmonad генерируемой с помощью conky.
Что я хотел получить (постановка задачи):
- график общей активности процессора во времени;
- индикатор текущей активности для каждого ядра;
- текущую частоту для каждого ядра;
- общий процент текущего использования;
- общую температуру.
Как это выглядит в итоге:
Что я хотел получить (постановка задачи):
- график общей активности процессора во времени;
- индикатор текущей активности для каждого ядра;
- текущую частоту для каждого ядра;
- общий процент текущего использования;
- общую температуру.
Как это выглядит в итоге:
Posted by
grayhemp
at
1:47 AM
1 comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
configuration,
conky,
cpu,
dzen,
graph,
russian,
Sergey Konoplev,
xmonad