mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-22 22:56:29 +00:00
Add instructions for upgrading from repmgr2 to repmgr3
This commit is contained in:
76
sql/repmgr2_repmgr3.sql
Normal file
76
sql/repmgr2_repmgr3.sql
Normal file
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Update a repmgr 2.x installation to repmgr 3.0
|
||||
* ----------------------------------------------
|
||||
*
|
||||
* 1. Stop any running repmgrd instances
|
||||
* 2. On the master node, execute the SQL statements listed below,
|
||||
* taking care to identify the master node and any inactive
|
||||
* nodes
|
||||
* 3. Restart repmgrd (being sure to use repmgr 3.0)
|
||||
*/
|
||||
|
||||
/*
|
||||
* Set the search path to the name of the schema used by
|
||||
* your rempgr installation
|
||||
* (this should be "repmgr_" + the cluster name defined in
|
||||
* 'repmgr.conf')
|
||||
*/
|
||||
|
||||
-- SET search_path TO 'name_of_repmgr_schema';
|
||||
|
||||
BEGIN;
|
||||
|
||||
ALTER TABLE repl_nodes RENAME TO repl_nodes2_0;
|
||||
|
||||
CREATE TABLE repl_nodes (
|
||||
id INTEGER PRIMARY KEY,
|
||||
type TEXT NOT NULL CHECK (type IN('master','standby','witness')),
|
||||
upstream_node_id INTEGER NULL REFERENCES repl_nodes (id),
|
||||
cluster TEXT NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
conninfo TEXT NOT NULL,
|
||||
slot_name TEXT NULL,
|
||||
priority INTEGER NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT TRUE
|
||||
);
|
||||
|
||||
INSERT INTO repl_nodes
|
||||
(id, type, cluster, name, conninfo, priority)
|
||||
SELECT id,
|
||||
CASE
|
||||
WHEN witness IS TRUE THEN 'witness'
|
||||
ELSE 'standby'
|
||||
END AS type,
|
||||
cluster,
|
||||
name,
|
||||
conninfo,
|
||||
priority
|
||||
FROM repl_nodes2_0;
|
||||
|
||||
/*
|
||||
* You'll need to set the master explicitly; the following query
|
||||
* should identify the master node ID but will only work if all
|
||||
* standby servers are connected:
|
||||
*
|
||||
* SELECT id FROM repmgr_test.repl_nodes WHERE name NOT IN (SELECT application_name FROM pg_stat_replication)
|
||||
*
|
||||
* If in doubt, execute 'repmgr cluster show' will definitively identify
|
||||
* the master.
|
||||
*/
|
||||
UPDATE repl_nodes SET type = 'master' WHERE id = $master_id;
|
||||
|
||||
/* If any nodes are known to be inactive, update them here */
|
||||
|
||||
-- UPDATE repl_nodes SET active = FALSE WHERE id IN (...);
|
||||
|
||||
/* When you're sure of your changes, commit them */
|
||||
|
||||
-- COMMIT;
|
||||
|
||||
|
||||
/*
|
||||
* execute the following command when you are sure you no longer
|
||||
* require the old table:
|
||||
*/
|
||||
|
||||
-- DROP TABLE repl_nodes2_0;
|
||||
Reference in New Issue
Block a user