Skip to content

Instantly share code, notes, and snippets.

@repodevs
Forked from iledarn/instruction.rst
Created October 21, 2017 07:27
Show Gist options
  • Save repodevs/49ed52b6b6b8ca06b94cd8dd4d3f6f62 to your computer and use it in GitHub Desktop.
Save repodevs/49ed52b6b6b8ca06b94cd8dd4d3f6f62 to your computer and use it in GitHub Desktop.
instruction about replicated odoo

Here you may see about bi-directional replication we have used http://2ndquadrant.com/en/resources/bdr/

We use here 64bit ubuntu 14.04 with docker to demonstrate our replication solution. First we need to install docker .

sudo su
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
apt-get update
apt-get purge lxc-docker
apt-cache policy docker-engine
apt-get install linux-image-extra-$(uname -r) # ubuntu 14.04
apt-get install docker-engine
sudo usermod -aG docker iii
exit

Use your account on ubuntu instead iii in the last command. Here we should log out and log in.

https://docs.docker.com/engine/installation/linux/ubuntulinux/

For demonstration we used docker image from here: https://hub.docker.com/r/agios/postgres-bdr/

docker pull agios/postgres-bdr
docker run --name testhost1 -d agios/postgres-bdr
docker run --name testhost2 -d agios/postgres-bdr

Connect to testhost1:

docker exec -i --user=root -t testhost1 /bin/bash
su - postgres
createdb bdrdemo

We must know IP of testhost:

ip addr

My IP for testhost1 was 172.17.0.2

psql bdrdemo

Do queryes in psql:

CREATE EXTENSION IF NOT EXISTS btree_gist;
CREATE EXTENSION IF NOT EXISTS bdr;
SELECT bdr.bdr_group_create(
 local_node_name := 'node01',
 node_external_dsn := 'host=172.17.0.2 port=5432 dbname=bdrdemo'
);
SELECT bdr.bdr_node_join_wait_for_ready();

Connect to the second host:

docker exec -i --user=root -t testhost2 /bin/bash
su - postgres
createdb bdrdemo
psql bdrdemo

Do queries on second host:

CREATE EXTENSION IF NOT EXISTS btree_gist;
CREATE EXTENSION IF NOT EXISTS bdr;
SELECT bdr.bdr_group_join(
 local_node_name := 'node02',
 node_external_dsn := 'host=172.17.0.3 port=5432 dbname=bdrdemo',
 join_using_dsn := 'host=172.17.0.2 port=5432 dbname=bdrdemo'
);
SELECT bdr.bdr_node_join_wait_for_ready();

Testing 1):

from testhost1:
su - postgres
psql bdrdemo
CREATE TABLE test_table1 (column1 integer);

from testhost2: (see how test_table1 was replicated on testhost2)

su - postgres
psql bdrdemo
\d

Testing 2): from testhost1:

INSERT INTO test_table1 VALUES(33);
SELECT * FROM test_table1;
from testhost2:
SELECT * FROM test_table1;

We can create table only if two servers will be online. All operations with existing tables are available on each server independently.

Here you can see video tutorial on this instruction (5 Parts):

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment