Postgres BDR 1.0 发布了,该版本基于PostgreSQL 9.4.9,本次发布也包含一些性能提升,DDL相关改进,序列化改进,消除UDR组件的支持。
一些提升:
improvements to DDL locking to reduce its operational impact by allowing write transactions a grace period before cancellation, blocking new write transactions instead of ERRORing, and allowing many DDL operations to avoid blocking row writes at all
the removal of UDR
a fix for dropped column handling when cloning new nodes via bdr_node_join
global sequence improvements to improve behavior when rapidly consuming sequence values
改进记录:
Fix handling of dropped columns during logical node init to prevent "tuple natts mismatch" errors (git 9323f3, #113, #114)
Remove UDR
Wait up to a minute for new sequence values from an exhausted global sequence before ERRORing (git f7e9b4)
Don't acquire global DDL lock for non-schema-qualified temp table DROPs (#124)
Add a grace period before killing all write transactions when acquiring DDL lock, configured by bdr.max_ddl_lock_delay (git 0e02cc27, 91a0d2505)
Make DML wait when DDL lock held, instead of ERRORing (git b754c0c4)
Add a DDL-lock-specific timeout, bdr.bdr_ddl_lock_timeout (git 91a0d2505)
Add a new DDL lock type that only blocks other DDL, not DML (insert/update/delete) (git 10b331fe, 6d2a09fb)
Cache more values for global sequences, make cache size configurable with cache_chunks reloption (git 071e94)
Ensure sequence cache is never re-used after physical node copy (#101)
Increase default sequence chunk size to 10k (git ff0726)
Expand node part/join sanity checks and error messages (git 6c58df and others)
Permit DML on pg_catalog tables (#102)
Create BDR's internal TRUNCATE triggers as internal triggers (git 0c96b9ff, #62)
Apply workers notice replication set changes and DSN changes without manual termination/restart (git 7faf648e)
Make bdr_apply_resume() take immediate effect (git 72eb77)
Ignore dangling bdr_connections rows without a corresponding bdr_nodes entry (git 509848, #50, #97, #126)
Don't acquire the global DDL lock when creating or dropping indexes on temporary tables (git aebd93, courtesy of Michael Allen)
Fix crash on insert into a table with an expression index (git 06f52b, courtesy of Abdul Yadi)
Make bdr_supervisordb checks less strict to fix vacuumdb -a and other tools (git dba912, #154)
Group multiple replicated TRUNCATEs into a single command to fix TRUNCATE with foreign keys or TRUNCATE CASCADE (git fcdf1b, #48)
Add management functions for connection replication sets
Add low level apply/replay tracing via bdr.trace_replay (git 4feb4004b, #185)
Add DDL lock tracing/logging via bdr.trace_ddl_locks_level (git beee79dd4)
Allow specification of connection options for all BDR connections with bdr.extra_apply_connection_options (git 491f5e90a, #173)
Enable TCP keepalives by default on apply worker (#173)
Backport access to 'pid' and 'confirmed_flush_lsn' columns of pg_replication_slots from 9.5 and 9.6 via new bdr.pg_replication_slots view (#186).
Add functions to terminate apply and walsender workers (bdr_terminate_walsender_workers and bdr_terminate_apply_workers)
Add a function to allow BDR workers to skip over changes (#181)
Add functions to control replication sets configured for a connection
Add a function to completely remove BDR from a node, bdr.remove_bdr_from_local_node()
Extensive documentation updates
下载地址: