Skip to Content
Menu
This question has been flagged
4 Replies
9872 Views

Hi all,

I'm trying to set another server that will be the duplicate of the first server (production). So I set up 2 exactly same servers, tuned PG same too, installed pgpool2 on first server, installed postgresql-9.1-pgpool2 on both servers. I set up OpenERP to connect to pgpool2 on port 5433. Set the 2 backends as follow in pgpool.conf (for now , its on LAN for testing purpose) :

backend_hostname0 = '192.168.1.110'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/var/lib/postgresql/9.1/main/'
backend_flag0 = 'ALLOW_TO_FAILOVER'

backend_hostname1 = '192.168.1.120'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/var/lib/postgresql/9.1/main/'
backend_flag1 = 'ALLOW_TO_FAILOVER'

All works fine.
I can connect to OpenERP on server 1 and data is well duplicated on both PG.

But it seems to have some troubles with transientModel.

Each time I call a module  (I made) that uses TransientModel, I get an error like below :

 ---

File "/usr/lib/pymodules/python2.7/openerp/tools/image.py", line 103, in
image_resize_image_medium
    return image_resize_image(base64_source, size, encoding, filetype,
avoid_if_small)
  File "/usr/lib/pymodules/python2.7/openerp/tools/image.py", line 67, in
image_resize_image
    image_stream = io.BytesIO(base64_source.decode(encoding))
  File "/usr/lib/python2.7/encodings/base64_codec.py", line 42, in base64_decode
    output = base64.decodestring(input)
  File "/usr/lib/python2.7/base64.py", line 321, in decodestring
    return binascii.a2b_base64(s)
Error: Incorrect padding

If I go back to standard config (one server and direct to PG) , OpenERP works fine. So I think there is a problem with binary fields and transientmodel ??

Can anyone help me please ?

Thanks a lot

 

EDIT 2014-05-22:

It seems that Openerp makes SELECT queries that are operated on both PG servers, so that binary fields are corrupted because of transient model ? Id o not have any trouble with models, except with transient ones.

I'm looking for a simple replication solution for PostgreSQL. I searched on GG but I did not find anything so "easy" to install. I do not need load balancing, I just want to save data (streaming replication) for backup purpose and switch on failover.

Avatar
Discard
Best Answer

Pg-bouncer or Pg-Pool-II does not work for Odoo because queries are in transactions.  

You can try the Heimdall Proxy (https://www.heimdalldata.com/odoo). The Heimdall Proxy was specifically designed for Odoo to handle transactions and data consistency. It can support connection pooling, query caching, automated Postgres failover, and Read/Write split with Strong Consistency. Query caching will give you the biggest performance/scale boost. We have seen cache hit rates up to 90% on Odoo.

Avatar
Discard
Best Answer

You can try pgbouncer 

Avatar
Discard
Author Best Answer

Thanks but I'm not sure pgbouncer is for replication.

Anyway, I've finally gone with native PG replication thanks to the excellent tutorial found on Greg Reinacker's Blog

http://www.rassoc.com/gregr/weblog/2013/02/16/zero-to-postgresql-streaming-replication-in-10-mins/

Avatar
Discard
Best Answer

You only need to turn off replication in pgpool.conf. I have this issue and get resolved turning replication off

Avatar
Discard
Related Posts Replies Views Activity
1
Aug 21
6912
0
Aug 21
2574
0
Feb 25
90
2
Jan 25
4785
2
Jan 24
10136