<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cbanta</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cbanta"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Cbanta"/>
	<updated>2026-05-05T23:40:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Setting_up_PGCluster&amp;diff=2855</id>
		<title>Setting up PGCluster</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Setting_up_PGCluster&amp;diff=2855"/>
		<updated>2009-06-10T16:12:39Z</updated>

		<summary type="html">&lt;p&gt;Cbanta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PGCluster is a fork of PostgreSQL that allows multi-master replication. This document explains how to set it up.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* All hosts in conf files are referenced by name - these must resolve properly to thier IPs.&lt;br /&gt;
* PGCluster xml conf files are case sensitive&lt;br /&gt;
* PGCluster 1.9.0 is based off PostgreSQL 8.3&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
First install the packages&lt;br /&gt;
 apk add pgcluster pgcluster-client&lt;br /&gt;
&lt;br /&gt;
For recovery, you&#039;ll need ssh and rsync&lt;br /&gt;
 apk add openssh rsync&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Edit /etc/hosts file if necessary so all names can be resolved.&lt;br /&gt;
&lt;br /&gt;
Check the data path in /etc/conf.d/pgcluster. Also check here to see which processes the init script will start on this host.&lt;br /&gt;
&lt;br /&gt;
Create the database files (same as for postgresql)&lt;br /&gt;
 /etc/init.d/pgcluster setup&lt;br /&gt;
&lt;br /&gt;
Edit the config files in the data path found above (usually /var/lib/posgresql/pgcluster)&lt;br /&gt;
&lt;br /&gt;
=== postgres (postmaster) ===&lt;br /&gt;
&lt;br /&gt;
postgres has 3 configuration files of interest here: postgresql.conf, pg_hba.conf, cluster.conf. &lt;br /&gt;
&lt;br /&gt;
To start it manually:&lt;br /&gt;
 su postgres&lt;br /&gt;
 cd /var/lib/postgresql/pgcluster&lt;br /&gt;
 pg_ctl -D . start&lt;br /&gt;
or &lt;br /&gt;
 postgres -D .&lt;br /&gt;
&lt;br /&gt;
==== postgresql.conf ====&lt;br /&gt;
&lt;br /&gt;
This is the standard postgresql config file. Just make sure of this:&lt;br /&gt;
 listen_addresses=&#039;*&#039;&lt;br /&gt;
&lt;br /&gt;
You might also want to changed the logging settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== pg_hba.conf ====&lt;br /&gt;
This is also a standard postgresql config file. Make sure all the hosts involved trust each other. Here&#039;s an example line you can use to get a test cluster running (it&#039;s a bit permissive for production use):&lt;br /&gt;
 host    all         all         192.168.0.0/16        trust&lt;br /&gt;
&lt;br /&gt;
==== cluster.conf ====&lt;br /&gt;
&lt;br /&gt;
This file is new with PGCLuster - it configures the patched database instance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a block like this for each replication server:&lt;br /&gt;
 &amp;lt;Replicate_Server_Info&amp;gt;&lt;br /&gt;
 	&amp;lt;Host_Name&amp;gt;     pgrep1  &amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
 	&amp;lt;Port&amp;gt;          8001    &amp;lt;/Port&amp;gt;&lt;br /&gt;
 	&amp;lt;Recovery_Port&amp;gt; 8101    &amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;/Replicate_Server_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also add the following:&lt;br /&gt;
 &amp;lt;Host_Name&amp;gt;		pgdb1				&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
 &amp;lt;Recovery_Port&amp;gt;	7001				&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;Rsync_Path&amp;gt;		/usr/bin/rsync			&amp;lt;/Rsync_Path&amp;gt;&lt;br /&gt;
 &amp;lt;Rsync_Option&amp;gt;	        ssh -1				&amp;lt;/Rsync_Option&amp;gt;&lt;br /&gt;
 &amp;lt;Rsync_Compress&amp;gt;	yes				&amp;lt;/Rsync_Compress&amp;gt;&lt;br /&gt;
 &amp;lt;Rsync_Timeout&amp;gt;	10min				&amp;lt;/Rsync_Timeout&amp;gt;&lt;br /&gt;
 &amp;lt;Rsync_Bwlimit&amp;gt;	0KB				&amp;lt;/Rsync_Bwlimit&amp;gt;&lt;br /&gt;
 &amp;lt;Pg_Dump_Path&amp;gt;	        /usr/bin/pg_dump	        &amp;lt;/Pg_Dump_Path&amp;gt;&lt;br /&gt;
 &amp;lt;Ping_Path&amp;gt;		/bin/ping			&amp;lt;/Ping_Path&amp;gt;&lt;br /&gt;
 &amp;lt;When_Stand_Alone&amp;gt;	read_only			&amp;lt;/When_Stand_Alone&amp;gt;&lt;br /&gt;
 &amp;lt;Replication_Timeout&amp;gt;	1min				&amp;lt;/Replication_Timeout&amp;gt;&lt;br /&gt;
 &amp;lt;LifeCheck_Timeout&amp;gt;	3s				&amp;lt;/LifeCheck_Timeout&amp;gt;&lt;br /&gt;
 &amp;lt;LifeCheck_Interval&amp;gt;	11s				&amp;lt;/LifeCheck_Interval&amp;gt;&lt;br /&gt;
And this bit is optional:&lt;br /&gt;
 &amp;lt;Not_Replicate_Info&amp;gt;&lt;br /&gt;
 	&amp;lt;DB_Name&amp;gt;		test_db		&amp;lt;/DB_Name&amp;gt;&lt;br /&gt;
 #	&amp;lt;Table_Name&amp;gt;		log_table	&amp;lt;/Table_Name&amp;gt;&lt;br /&gt;
 &amp;lt;/Not_Replicate_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pgreplicate ===&lt;br /&gt;
&lt;br /&gt;
This process replicates to the other servers.&lt;br /&gt;
&lt;br /&gt;
To start it manually:&lt;br /&gt;
 su postgres&lt;br /&gt;
 cd /var/lib/postgresql/pgcluster&lt;br /&gt;
 pgreplicate -D . &lt;br /&gt;
&lt;br /&gt;
If you want debug output change the last line to:&lt;br /&gt;
 pgreplicate -D . -n -v&lt;br /&gt;
&lt;br /&gt;
==== pgreplicate.conf ====&lt;br /&gt;
&lt;br /&gt;
Add a block like this for each database (also called cluster) instance:&lt;br /&gt;
 &amp;lt;Cluster_Server_Info&amp;gt;&lt;br /&gt;
    &amp;lt;Host_Name&amp;gt;pgdb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
    &amp;lt;Port&amp;gt;5432&amp;lt;/Port&amp;gt;&lt;br /&gt;
    &amp;lt;Recovery_Port&amp;gt;7001&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;/Cluster_Server_Info&amp;gt;&lt;br /&gt;
Add this block for your load balancer instance:&lt;br /&gt;
 &amp;lt;LoadBalance_Server_Info&amp;gt;&lt;br /&gt;
    &amp;lt;Host_Name&amp;gt;pglb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
    &amp;lt;Recovery_Port&amp;gt;6001&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;/LoadBalance_Server_Info&amp;gt;&lt;br /&gt;
And add this to describe the replicator instance you&#039;re configuring:&lt;br /&gt;
 &amp;lt;Host_Name&amp;gt;pgrep1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
 &amp;lt;Replication_Port&amp;gt;8002&amp;lt;/Replication_Port&amp;gt;&lt;br /&gt;
 &amp;lt;Recovery_Port&amp;gt;8101&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;RLog_Port&amp;gt;8301&amp;lt;/RLog_Port&amp;gt;&lt;br /&gt;
 &amp;lt;Response_Mode&amp;gt;normal&amp;lt;/Response_Mode&amp;gt;&lt;br /&gt;
 &amp;lt;Use_Replication_Log&amp;gt;no&amp;lt;/Use_Replication_Log&amp;gt;&lt;br /&gt;
Optional Logging info:&lt;br /&gt;
 &amp;lt;Log_File_Info&amp;gt;&lt;br /&gt;
         &amp;lt;File_Name&amp;gt;pg_log/pgreplicate.log&amp;lt;/File_Name&amp;gt;&lt;br /&gt;
 &amp;lt;/Log_File_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pglb ===&lt;br /&gt;
&lt;br /&gt;
This process provides load balancing.&lt;br /&gt;
&lt;br /&gt;
To start it manually:&lt;br /&gt;
 su postgres&lt;br /&gt;
 cd /var/lib/postgresql/pgcluster&lt;br /&gt;
 pglb -D . &lt;br /&gt;
&lt;br /&gt;
If you want debug output change the last line to:&lt;br /&gt;
 pglb -D . -n -v&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== pglb.conf ====&lt;br /&gt;
Similar to pgreplicate, add the following block for each database instance:&lt;br /&gt;
 &amp;lt;Cluster_Server_Info&amp;gt;&lt;br /&gt;
    &amp;lt;Host_name&amp;gt;pgdb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
    &amp;lt;Port&amp;gt;5432&amp;lt;/Port&amp;gt;&lt;br /&gt;
    &amp;lt;Max_Connect&amp;gt;30&amp;lt;/Max_Connect&amp;gt;&lt;br /&gt;
 &amp;lt;/Cluster_Server_Info&amp;gt;&lt;br /&gt;
Add the following for the load balancer:&lt;br /&gt;
 &amp;lt;Host_Name&amp;gt;pglb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
 &amp;lt;Backend_Socket_Dir&amp;gt;/tmp&amp;lt;/backend_socket_dir&amp;gt;&lt;br /&gt;
 &amp;lt;Receive_Port&amp;gt;5433&amp;lt;/Receive_Port&amp;gt;&lt;br /&gt;
 &amp;lt;Recovery_Port&amp;gt;6001&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;Max_Cluster_Num&amp;gt;128&amp;lt;/Max_Cluster_Num&amp;gt;&lt;br /&gt;
 &amp;lt;Use_Connection_Pooling&amp;gt;no&amp;lt;/Use_Connection_Pooling&amp;gt;&lt;br /&gt;
Optional Logging info:&lt;br /&gt;
 &amp;lt;Log_File_Info&amp;gt;&lt;br /&gt;
         &amp;lt;File_Name&amp;gt;pg_log/pgreplicate.log&amp;lt;/File_Name&amp;gt;&lt;br /&gt;
 &amp;lt;/Log_File_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recovery ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
http://pgfoundry.org/projects/pgcluster/&lt;br /&gt;
&lt;br /&gt;
http://pgcluster.i-logic.hu/cgi-bin/trac.cgi&lt;br /&gt;
&lt;br /&gt;
http://pgcluster.projects.postgresql.org/&lt;br /&gt;
&lt;br /&gt;
http://odyssi.blogspot.com/2007/08/postgresql-replication-with-pgcluster.html&lt;/div&gt;</summary>
		<author><name>Cbanta</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Setting_up_PGCluster&amp;diff=2837</id>
		<title>Setting up PGCluster</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Setting_up_PGCluster&amp;diff=2837"/>
		<updated>2009-06-05T18:52:24Z</updated>

		<summary type="html">&lt;p&gt;Cbanta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PGCluster is a fork of PostgreSQL that allows multi-master replication. This document explains how to set it up.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* All hosts in conf files are referenced by name - these must resolve properly to thier IPs.&lt;br /&gt;
* PGCluster xml conf files are case sensitive&lt;br /&gt;
* PGCluster 1.9.0 is based off PostgreSQL 8.3&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
First install the packages&lt;br /&gt;
 apk add pgcluster pgcluster-client&lt;br /&gt;
&lt;br /&gt;
For recovery, you&#039;ll need ssh and rsync&lt;br /&gt;
 apk add openssh rsync&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Edit /etc/hosts file if necessary so all names can be resolved.&lt;br /&gt;
&lt;br /&gt;
Check the data path in /etc/conf.d/pgcluster. Also check here to see which processes the init script will start on this host.&lt;br /&gt;
&lt;br /&gt;
Create the database files (same as for postgresql)&lt;br /&gt;
 /etc/init.d/pgcluster setup&lt;br /&gt;
&lt;br /&gt;
Edit the config files in the data path found above (usually /var/lib/posgresql/pgcluster)&lt;br /&gt;
&lt;br /&gt;
=== postgres (postmaster) ===&lt;br /&gt;
&lt;br /&gt;
postgres has 3 configuration files of interest here: postgresql.conf, pg_hba.conf, cluster.conf. &lt;br /&gt;
&lt;br /&gt;
To start it manually:&lt;br /&gt;
 su postgres&lt;br /&gt;
 cd /var/lib/postgresql/pgcluster&lt;br /&gt;
 pg_ctl -D . start&lt;br /&gt;
or &lt;br /&gt;
 postgres -D .&lt;br /&gt;
&lt;br /&gt;
==== postgresql.conf ====&lt;br /&gt;
&lt;br /&gt;
This is the standard postgresql config file. Just make sure of this:&lt;br /&gt;
 listen_addresses=&#039;*&#039;&lt;br /&gt;
&lt;br /&gt;
You might also want to changed the logging settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== pg_hba.conf ====&lt;br /&gt;
This is also a standard postgresql config file. Make sure all the hosts involved trust each other. Here&#039;s an example line you can use to get a test cluster running (it&#039;s a bit permissive for production use):&lt;br /&gt;
 host    all         all         192.168.0.0/16        trust&lt;br /&gt;
&lt;br /&gt;
==== cluster.conf ====&lt;br /&gt;
&lt;br /&gt;
This file is new with PGCLuster - it configures the patched database instance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a block like this for each replication server:&lt;br /&gt;
 &amp;lt;Replicate_Server_Info&amp;gt;&lt;br /&gt;
 	&amp;lt;Host_Name&amp;gt;     pgrep1  &amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
 	&amp;lt;Port&amp;gt;          8001    &amp;lt;/Port&amp;gt;&lt;br /&gt;
 	&amp;lt;Recovery_Port&amp;gt; 8101    &amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;/Replicate_Server_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also add the following:&lt;br /&gt;
 &amp;lt;Host_Name&amp;gt;		pgdb1				&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
 &amp;lt;Recovery_Port&amp;gt;	7001				&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;Rsync_Path&amp;gt;		/usr/bin/rsync			&amp;lt;/Rsync_Path&amp;gt;&lt;br /&gt;
 &amp;lt;Rsync_Option&amp;gt;	ssh -1				&amp;lt;/Rsync_Option&amp;gt;&lt;br /&gt;
 &amp;lt;Rsync_Compress&amp;gt;	yes				&amp;lt;/Rsync_Compress&amp;gt;&lt;br /&gt;
 &amp;lt;Rsync_Timeout&amp;gt;	10min				&amp;lt;/Rsync_Timeout&amp;gt;&lt;br /&gt;
 &amp;lt;Rsync_Bwlimit&amp;gt;	0KB				&amp;lt;/Rsync_Bwlimit&amp;gt;&lt;br /&gt;
 &amp;lt;Pg_Dump_Path&amp;gt;	/var/lib/pgcluster/pg_dump	&amp;lt;/Pg_Dump_Path&amp;gt;&lt;br /&gt;
 &amp;lt;Ping_Path&amp;gt;		/bin/ping			&amp;lt;/Ping_Path&amp;gt;&lt;br /&gt;
 &amp;lt;When_Stand_Alone&amp;gt;	read_only			&amp;lt;/When_Stand_Alone&amp;gt;&lt;br /&gt;
 &amp;lt;Replication_Timeout&amp;gt;	1min				&amp;lt;/Replication_Timeout&amp;gt;&lt;br /&gt;
 &amp;lt;LifeCheck_Timeout&amp;gt;	3s				&amp;lt;/LifeCheck_Timeout&amp;gt;&lt;br /&gt;
 &amp;lt;LifeCheck_Interval&amp;gt;	11s				&amp;lt;/LifeCheck_Interval&amp;gt;&lt;br /&gt;
And this bit is optional:&lt;br /&gt;
 &amp;lt;Not_Replicate_Info&amp;gt;&lt;br /&gt;
 	&amp;lt;DB_Name&amp;gt;		test_db		&amp;lt;/DB_Name&amp;gt;&lt;br /&gt;
 #	&amp;lt;Table_Name&amp;gt;		log_table	&amp;lt;/Table_Name&amp;gt;&lt;br /&gt;
 &amp;lt;/Not_Replicate_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pgreplicate ===&lt;br /&gt;
&lt;br /&gt;
This process replicates to the other servers.&lt;br /&gt;
&lt;br /&gt;
To start it manually:&lt;br /&gt;
 su postgres&lt;br /&gt;
 cd /var/lib/postgresql/pgcluster&lt;br /&gt;
 pgreplicate -D . &lt;br /&gt;
&lt;br /&gt;
If you want debug output change the last line to:&lt;br /&gt;
 pgreplicate -D . -n -v&lt;br /&gt;
&lt;br /&gt;
==== pgreplicate.conf ====&lt;br /&gt;
&lt;br /&gt;
Add a block like this for each database (also called cluster) instance:&lt;br /&gt;
 &amp;lt;Cluster_Server_Info&amp;gt;&lt;br /&gt;
    &amp;lt;Host_Name&amp;gt;pgdb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
    &amp;lt;Port&amp;gt;5432&amp;lt;/Port&amp;gt;&lt;br /&gt;
    &amp;lt;Recovery_Port&amp;gt;7001&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;/Cluster_Server_Info&amp;gt;&lt;br /&gt;
Add this block for your load balancer instance:&lt;br /&gt;
 &amp;lt;LoadBalance_Server_Info&amp;gt;&lt;br /&gt;
    &amp;lt;Host_Name&amp;gt;pglb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
    &amp;lt;Recovery_Port&amp;gt;6001&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;/LoadBalance_Server_Info&amp;gt;&lt;br /&gt;
And add this to describe the replicator instance you&#039;re configuring:&lt;br /&gt;
 &amp;lt;Host_Name&amp;gt;pgrep1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
 &amp;lt;Replication_Port&amp;gt;8002&amp;lt;/Replication_Port&amp;gt;&lt;br /&gt;
 &amp;lt;Recovery_Port&amp;gt;8101&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;RLog_Port&amp;gt;8301&amp;lt;/RLog_Port&amp;gt;&lt;br /&gt;
 &amp;lt;Response_Mode&amp;gt;normal&amp;lt;/Response_Mode&amp;gt;&lt;br /&gt;
 &amp;lt;Use_Replication_Log&amp;gt;no&amp;lt;/Use_Replication_Log&amp;gt;&lt;br /&gt;
Optional Logging info:&lt;br /&gt;
 &amp;lt;Log_File_Info&amp;gt;&lt;br /&gt;
         &amp;lt;File_Name&amp;gt;pg_log/pgreplicate.log&amp;lt;/File_Name&amp;gt;&lt;br /&gt;
 &amp;lt;/Log_File_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pgreplicate ===&lt;br /&gt;
&lt;br /&gt;
This process provides load balancing.&lt;br /&gt;
&lt;br /&gt;
To start it manually:&lt;br /&gt;
 su postgres&lt;br /&gt;
 cd /var/lib/postgresql/pgcluster&lt;br /&gt;
 pglb -D . &lt;br /&gt;
&lt;br /&gt;
If you want debug output change the last line to:&lt;br /&gt;
 pglb -D . -n -v&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== pglb.conf ====&lt;br /&gt;
Similar to pgreplicate, add the following block for each database instance:&lt;br /&gt;
 &amp;lt;Cluster_Server_Info&amp;gt;&lt;br /&gt;
    &amp;lt;Host_name&amp;gt;pgdb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
    &amp;lt;Port&amp;gt;5432&amp;lt;/Port&amp;gt;&lt;br /&gt;
    &amp;lt;Max_Connect&amp;gt;30&amp;lt;/Max_Connect&amp;gt;&lt;br /&gt;
 &amp;lt;/Cluster_Server_Info&amp;gt;&lt;br /&gt;
Add the following for the load balancer:&lt;br /&gt;
 &amp;lt;Host_Name&amp;gt;pglb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
 &amp;lt;Backend_Socket_Dir&amp;gt;/tmp&amp;lt;/backend_socket_dir&amp;gt;&lt;br /&gt;
 &amp;lt;Receive_Port&amp;gt;5433&amp;lt;/Receive_Port&amp;gt;&lt;br /&gt;
 &amp;lt;Recovery_Port&amp;gt;6001&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
 &amp;lt;Max_Cluster_Num&amp;gt;128&amp;lt;/Max_Cluster_Num&amp;gt;&lt;br /&gt;
 &amp;lt;Use_Connection_Pooling&amp;gt;no&amp;lt;/Use_Connection_Pooling&amp;gt;&lt;br /&gt;
Optional Logging info:&lt;br /&gt;
 &amp;lt;Log_File_Info&amp;gt;&lt;br /&gt;
         &amp;lt;File_Name&amp;gt;pg_log/pgreplicate.log&amp;lt;/File_Name&amp;gt;&lt;br /&gt;
 &amp;lt;/Log_File_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recovery ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
http://pgfoundry.org/projects/pgcluster/&lt;br /&gt;
&lt;br /&gt;
http://pgcluster.i-logic.hu/cgi-bin/trac.cgi&lt;br /&gt;
&lt;br /&gt;
http://pgcluster.projects.postgresql.org/&lt;br /&gt;
&lt;br /&gt;
http://odyssi.blogspot.com/2007/08/postgresql-replication-with-pgcluster.html&lt;/div&gt;</summary>
		<author><name>Cbanta</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Setting_up_PGCluster&amp;diff=2836</id>
		<title>Setting up PGCluster</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Setting_up_PGCluster&amp;diff=2836"/>
		<updated>2009-06-05T18:44:22Z</updated>

		<summary type="html">&lt;p&gt;Cbanta: Created page with &amp;#039;PGCluster is a fork of PostgreSQL that allows multi-master replication. This document explains how to set it up.  == Notes ==  * All hosts in conf files are referenced by name - ...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PGCluster is a fork of PostgreSQL that allows multi-master replication. This document explains how to set it up.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* All hosts in conf files are referenced by name - these must resolve properly to thier IPs.&lt;br /&gt;
* PGCluster xml conf files are case sensitive&lt;br /&gt;
* PGCluster 1.9.0 is based off PostgreSQL 8.3&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
First install the packages&lt;br /&gt;
  apk add pgcluster pgcluster-client&lt;br /&gt;
&lt;br /&gt;
For recovery, you&#039;ll need ssh and rsync&lt;br /&gt;
  apk add openssh rsync&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Edit /etc/hosts file if necessary so all names can be resolved.&lt;br /&gt;
&lt;br /&gt;
Check the data path in /etc/conf.d/pgcluster. Also check here to see which processes the init script will start on this host.&lt;br /&gt;
&lt;br /&gt;
Create the database files (same as for postgresql)&lt;br /&gt;
  /etc/init.d/pgcluster setup&lt;br /&gt;
&lt;br /&gt;
Edit the config files in the data path found above (usually /var/lib/posgresql/pgcluster)&lt;br /&gt;
&lt;br /&gt;
=== postgres (postmaster) ===&lt;br /&gt;
&lt;br /&gt;
postgres has 3 configuration files of interest here: postgresql.conf, pg_hba.conf, cluster.conf. &lt;br /&gt;
&lt;br /&gt;
To start it manually:&lt;br /&gt;
  su postgres&lt;br /&gt;
  cd /var/lib/postgresql/pgcluster&lt;br /&gt;
  pg_ctl -D . start&lt;br /&gt;
or &lt;br /&gt;
  postgres -D .&lt;br /&gt;
&lt;br /&gt;
==== postgresql.conf ====&lt;br /&gt;
&lt;br /&gt;
This is the standard postgresql config file. Just make sure of this:&lt;br /&gt;
  listen_addresses=&#039;*&#039;&lt;br /&gt;
&lt;br /&gt;
You might also want to changed the logging settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== pg_hba.conf ====&lt;br /&gt;
This is also a standard postgresql config file. Make sure all the hosts involved trust each other. Here&#039;s an example line you can use to get a test cluster running (it&#039;s a bit permissive for production use):&lt;br /&gt;
  host    all         all         192.168.0.0/16        trust&lt;br /&gt;
&lt;br /&gt;
==== cluster.conf ====&lt;br /&gt;
&lt;br /&gt;
This file is new with PGCLuster - it configures the patched database instance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a block like this for each replication server:&lt;br /&gt;
  &amp;lt;Replicate_Server_Info&amp;gt;&lt;br /&gt;
  	&amp;lt;Host_Name&amp;gt;     pgrep1  &amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
  	&amp;lt;Port&amp;gt;          8001    &amp;lt;/Port&amp;gt;&lt;br /&gt;
  	&amp;lt;Recovery_Port&amp;gt; 8101    &amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
  &amp;lt;/Replicate_Server_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also add the following:&lt;br /&gt;
  &amp;lt;Host_Name&amp;gt;		pgdb1				&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
  &amp;lt;Recovery_Port&amp;gt;	7001				&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
  &amp;lt;Rsync_Path&amp;gt;		/usr/bin/rsync			&amp;lt;/Rsync_Path&amp;gt;&lt;br /&gt;
  &amp;lt;Rsync_Option&amp;gt;	ssh -1				&amp;lt;/Rsync_Option&amp;gt;&lt;br /&gt;
  &amp;lt;Rsync_Compress&amp;gt;	yes				&amp;lt;/Rsync_Compress&amp;gt;&lt;br /&gt;
  &amp;lt;Rsync_Timeout&amp;gt;	10min				&amp;lt;/Rsync_Timeout&amp;gt;&lt;br /&gt;
  &amp;lt;Rsync_Bwlimit&amp;gt;	0KB				&amp;lt;/Rsync_Bwlimit&amp;gt;&lt;br /&gt;
  &amp;lt;Pg_Dump_Path&amp;gt;	/var/lib/pgcluster/pg_dump	&amp;lt;/Pg_Dump_Path&amp;gt;&lt;br /&gt;
  &amp;lt;Ping_Path&amp;gt;		/bin/ping			&amp;lt;/Ping_Path&amp;gt;&lt;br /&gt;
  &amp;lt;When_Stand_Alone&amp;gt;	read_only			&amp;lt;/When_Stand_Alone&amp;gt;&lt;br /&gt;
  &amp;lt;Replication_Timeout&amp;gt;	1min				&amp;lt;/Replication_Timeout&amp;gt;&lt;br /&gt;
  &amp;lt;LifeCheck_Timeout&amp;gt;	3s				&amp;lt;/LifeCheck_Timeout&amp;gt;&lt;br /&gt;
  &amp;lt;LifeCheck_Interval&amp;gt;	11s				&amp;lt;/LifeCheck_Interval&amp;gt;&lt;br /&gt;
And this bit is optional:&lt;br /&gt;
  &amp;lt;Not_Replicate_Info&amp;gt;&lt;br /&gt;
  	&amp;lt;DB_Name&amp;gt;		test_db		&amp;lt;/DB_Name&amp;gt;&lt;br /&gt;
  #	&amp;lt;Table_Name&amp;gt;		log_table	&amp;lt;/Table_Name&amp;gt;&lt;br /&gt;
  &amp;lt;/Not_Replicate_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pgreplicate ===&lt;br /&gt;
&lt;br /&gt;
This process replicates to the other servers.&lt;br /&gt;
&lt;br /&gt;
To start it manually:&lt;br /&gt;
  su postgres&lt;br /&gt;
  cd /var/lib/postgresql/pgcluster&lt;br /&gt;
  pgreplicate -D . &lt;br /&gt;
&lt;br /&gt;
If you want debug output change the last line to:&lt;br /&gt;
  pgreplicate -D . -n -v&lt;br /&gt;
&lt;br /&gt;
==== pgreplicate.conf ====&lt;br /&gt;
&lt;br /&gt;
Add a block like this for each database (also called cluster) instance:&lt;br /&gt;
  &amp;lt;Cluster_Server_Info&amp;gt;&lt;br /&gt;
     &amp;lt;Host_Name&amp;gt;pgdb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
     &amp;lt;Port&amp;gt;5432&amp;lt;/Port&amp;gt;&lt;br /&gt;
     &amp;lt;Recovery_Port&amp;gt;7001&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
  &amp;lt;/Cluster_Server_Info&amp;gt;&lt;br /&gt;
Add this block for your load balancer instance:&lt;br /&gt;
  &amp;lt;LoadBalance_Server_Info&amp;gt;&lt;br /&gt;
     &amp;lt;Host_Name&amp;gt;pglb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
     &amp;lt;Recovery_Port&amp;gt;6001&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
  &amp;lt;/LoadBalance_Server_Info&amp;gt;&lt;br /&gt;
And add this to describe the replicator instance you&#039;re configuring:&lt;br /&gt;
  &amp;lt;Host_Name&amp;gt;pgrep1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
  &amp;lt;Replication_Port&amp;gt;8002&amp;lt;/Replication_Port&amp;gt;&lt;br /&gt;
  &amp;lt;Recovery_Port&amp;gt;8101&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
  &amp;lt;RLog_Port&amp;gt;8301&amp;lt;/RLog_Port&amp;gt;&lt;br /&gt;
  &amp;lt;Response_Mode&amp;gt;normal&amp;lt;/Response_Mode&amp;gt;&lt;br /&gt;
  &amp;lt;Use_Replication_Log&amp;gt;no&amp;lt;/Use_Replication_Log&amp;gt;&lt;br /&gt;
Optional Logging info:&lt;br /&gt;
  &amp;lt;Log_File_Info&amp;gt;&lt;br /&gt;
          &amp;lt;File_Name&amp;gt;pg_log/pgreplicate.log&amp;lt;/File_Name&amp;gt;&lt;br /&gt;
  &amp;lt;/Log_File_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pgreplicate ===&lt;br /&gt;
&lt;br /&gt;
This process provides load balancing.&lt;br /&gt;
&lt;br /&gt;
To start it manually:&lt;br /&gt;
  su postgres&lt;br /&gt;
  cd /var/lib/postgresql/pgcluster&lt;br /&gt;
  pglb -D . &lt;br /&gt;
&lt;br /&gt;
If you want debug output change the last line to:&lt;br /&gt;
  pglb -D . -n -v&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== pglb.conf ====&lt;br /&gt;
Similar to pgreplicate, add the following block for each database instance:&lt;br /&gt;
  &amp;lt;Cluster_Server_Info&amp;gt;&lt;br /&gt;
     &amp;lt;Host_name&amp;gt;pgdb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
     &amp;lt;Port&amp;gt;5432&amp;lt;/Port&amp;gt;&lt;br /&gt;
     &amp;lt;Max_Connect&amp;gt;30&amp;lt;/Max_Connect&amp;gt;&lt;br /&gt;
  &amp;lt;/Cluster_Server_Info&amp;gt;&lt;br /&gt;
Add the following for the load balancer:&lt;br /&gt;
  &amp;lt;Host_Name&amp;gt;pglb1&amp;lt;/Host_Name&amp;gt;&lt;br /&gt;
  &amp;lt;Backend_Socket_Dir&amp;gt;/tmp&amp;lt;/backend_socket_dir&amp;gt;&lt;br /&gt;
  &amp;lt;Receive_Port&amp;gt;5433&amp;lt;/Receive_Port&amp;gt;&lt;br /&gt;
  &amp;lt;Recovery_Port&amp;gt;6001&amp;lt;/Recovery_Port&amp;gt;&lt;br /&gt;
  &amp;lt;Max_Cluster_Num&amp;gt;128&amp;lt;/Max_Cluster_Num&amp;gt;&lt;br /&gt;
  &amp;lt;Use_Connection_Pooling&amp;gt;no&amp;lt;/Use_Connection_Pooling&amp;gt;&lt;br /&gt;
Optional Logging info:&lt;br /&gt;
  &amp;lt;Log_File_Info&amp;gt;&lt;br /&gt;
          &amp;lt;File_Name&amp;gt;pg_log/pgreplicate.log&amp;lt;/File_Name&amp;gt;&lt;br /&gt;
  &amp;lt;/Log_File_Info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recovery ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
http://pgfoundry.org/projects/pgcluster/&lt;br /&gt;
http://pgcluster.i-logic.hu/cgi-bin/trac.cgi&lt;br /&gt;
http://pgcluster.projects.postgresql.org/&lt;br /&gt;
http://odyssi.blogspot.com/2007/08/postgresql-replication-with-pgcluster.html&lt;/div&gt;</summary>
		<author><name>Cbanta</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Native_Harddisk_Install_1.6&amp;diff=2674</id>
		<title>Native Harddisk Install 1.6</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Native_Harddisk_Install_1.6&amp;diff=2674"/>
		<updated>2009-03-02T20:05:14Z</updated>

		<summary type="html">&lt;p&gt;Cbanta: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Alpine HD install=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: This document covers 1.6 release. From version 1.7.3 there is an albootstrap script that will install the basic packages (except grub) into a subdir. The script is available here: http://dev.alpinelinux.org/alpine/v1.7/albootstrap&lt;br /&gt;
&lt;br /&gt;
Alpine is more geared toward live-cd or usb-key usage, but it is possible to install it to a harddisk.&lt;br /&gt;
&lt;br /&gt;
This is how it is done. The Alpine version is 1.6.1&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Create partitions with fdisk. &lt;br /&gt;
&lt;br /&gt;
 fdisk /dev/hda&lt;br /&gt;
&lt;br /&gt;
You should have 2 partitions: /dev/hda1 as &amp;quot;Linux&amp;quot; (type 83) and /dev/hda2 as &amp;quot;linux swap&amp;quot; (type 82). &lt;br /&gt;
&lt;br /&gt;
Install needed programs for the setup &lt;br /&gt;
&lt;br /&gt;
 apk_add e2fsprogs rsync grub&lt;br /&gt;
&lt;br /&gt;
Create filesystem and swap &lt;br /&gt;
&lt;br /&gt;
 mkfs.ext3 /dev/hda1&lt;br /&gt;
 mkswap /dev/hda2&lt;br /&gt;
&lt;br /&gt;
Turn on swap already now &lt;br /&gt;
&lt;br /&gt;
 swapon /dev/hda2&lt;br /&gt;
&lt;br /&gt;
Mount file-system &lt;br /&gt;
&lt;br /&gt;
 mount -t ext3 /dev/hda1 /mnt&lt;br /&gt;
&lt;br /&gt;
Install base packages on harddisk &lt;br /&gt;
&lt;br /&gt;
 ROOT=/mnt apk_add uclibc busybox apk-tools alpine-baselayout alpine-conf grub&lt;br /&gt;
&lt;br /&gt;
If you want pcmcia support, then also add the pcmciautils package &lt;br /&gt;
&lt;br /&gt;
 ROOT=/mnt apk_add pcmciautils&lt;br /&gt;
&lt;br /&gt;
Install busybox links &lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/proc&lt;br /&gt;
 mount --bind /proc /mnt/proc&lt;br /&gt;
 chroot /mnt /bin/busybox --install -s&lt;br /&gt;
 umount /mnt/proc&lt;br /&gt;
&lt;br /&gt;
For convenience, copy the apk repository. &lt;br /&gt;
&lt;br /&gt;
 rsync -ruav /media/cdrom/apks /mnt&lt;br /&gt;
&lt;br /&gt;
Create the apk.conf: &lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/etc/apk&lt;br /&gt;
 echo &amp;quot;APK_PATH=file://apks&amp;quot; &amp;amp;gt; /mnt/etc/apk/apk.conf&lt;br /&gt;
&lt;br /&gt;
Copy the hd/ext3 initramfs image, kernel and kernel modules. &lt;br /&gt;
&lt;br /&gt;
 rsync -ruav /media/cdrom/kernel/generic/hd-ext3.gz /media/cdrom/kernel/generic/bzImage /mnt&lt;br /&gt;
 rsync -ruav /lib/modules/* /mnt/lib/modules/&lt;br /&gt;
&lt;br /&gt;
Configure grub &lt;br /&gt;
&lt;br /&gt;
 grub-install --root-directory=/mnt /dev/hda1&lt;br /&gt;
 vi /mnt/boot/grub/menu.lst&lt;br /&gt;
&lt;br /&gt;
It should contain something like: &lt;br /&gt;
&lt;br /&gt;
 default 0&lt;br /&gt;
 timeout 0&lt;br /&gt;
 title Alpine Linux&lt;br /&gt;
 root (hd0,0)&lt;br /&gt;
 kernel /bzImage root_dev=hda1:ext3 alpine_dev=../:ext3&lt;br /&gt;
 initrd /hd-ext3.gz&lt;br /&gt;
&lt;br /&gt;
Install grub on MBR: &lt;br /&gt;
&lt;br /&gt;
 grub&lt;br /&gt;
 root (hd0,0)&lt;br /&gt;
 setup (hd0)&lt;br /&gt;
 quit&lt;br /&gt;
&lt;br /&gt;
Append the swap to fstab: &lt;br /&gt;
&lt;br /&gt;
 echo -e &amp;quot;/dev/hda2 none swap sw 0 0&amp;quot; &amp;amp;gt;&amp;amp;gt; /mnt/etc/fstab&lt;br /&gt;
&lt;br /&gt;
Unmount, remove cdrom and reboot. (If you can&#039;t eject, just remove it manually as the machine reboots) &lt;br /&gt;
&lt;br /&gt;
 umount /mnt&lt;br /&gt;
 eject &lt;br /&gt;
 reboot&lt;br /&gt;
&lt;br /&gt;
After reboot, log in as &amp;quot;root&amp;quot; and run: &lt;br /&gt;
&lt;br /&gt;
 setup-alpine&lt;/div&gt;</summary>
		<author><name>Cbanta</name></author>
	</entry>
</feed>