Switchover s5 master (db1210 -> db1230)
Closed, ResolvedPublic

Description

When: During a pre-defined DBA maintenance windows

Affected wikis:: https://noc.wikimedia.org/conf/highlight.php?file=dblists/s5.dblist

Checklist:

NEW primary: db1230
OLD primary: db1210

  • Check configuration differences between new and old primary:
sudo pt-config-diff --defaults-file /root/.my.cnf h=db1210.eqiad.wmnet h=db1230.eqiad.wmnet

Failover prep:

  • Silence alerts on all hosts:
sudo cookbook sre.hosts.downtime --hours 1 -r "Primary switchover s5 T415893" 'A:db-section-s5'
  • Set NEW primary with weight 0
sudo dbctl instance db1230 set-weight 0
sudo dbctl config commit -m "Set db1230 with weight 0 T415893"
  • Topology changes, move all replicas under NEW primary, open orchestartor to monitor the process and check it at the end.
sudo db-switchover --timeout=25 --replicating-master --read-only-master --only-slave-move db1210 db1230
  • Disable puppet on both nodes
sudo cumin 'db1210* or db1230*' 'disable-puppet "primary switchover T415893"'

Failover:

  • Log the failover:
!log Starting s5 eqiad failover from db1210 to db1230 - T415893
  • Switch primaries:
sudo db-switchover --replicating-master --read-only-master --skip-slave-move db1210 db1230
echo "===== db1210 (OLD)"; sudo db-mysql db1210 -e 'show slave status\G'
echo "===== db1230 (NEW)"; sudo db-mysql db1230 -e 'show slave status\G'
  • Promote NEW primary in dbctl
sudo dbctl --scope eqiad section s5 set-master db1230
sudo dbctl config commit -m "Promote db1230 to s5 primary T415893"
  • Clean up heartbeat table(s).
sudo db-mysql db1230 heartbeat -e "delete from heartbeat where file like 'db1210%';"
  • Restart puppet on both hosts:
sudo cumin 'db1210* or db1230*' 'run-puppet-agent -e "primary switchover T415893"'

Clean up tasks:

  • change events for query killer:
curl -sS 'https://gerrit.wikimedia.org/r/plugins/gitiles/operations/software/+/refs/heads/master/dbtools/events_coredb_master.sql?format=TEXT' | base64 -d | sudo db-mysql db1230
curl -sS 'https://gerrit.wikimedia.org/r/plugins/gitiles/operations/software/+/refs/heads/master/dbtools/events_coredb_slave.sql?format=TEXT' | base64 -d | sudo db-mysql db1210
  • Update candidate primary dbctl and orchestrator notes
sudo dbctl instance db1210 set-candidate-master --section s5 true
sudo dbctl instance db1230 set-candidate-master --section s5 false
sudo cumin 'dborch*' 'orchestrator-client -c untag -i db1230 --tag name=candidate'
sudo cumin 'dborch*' 'orchestrator-client -c tag -i db1210 --tag name=candidate'
sudo db-mysql db1215 zarcillo -e "select * from masters where section = 's5';"
  • Depool db1210 for maintenance.
sudo dbctl instance db1210 depool
sudo dbctl config commit -m "Depool db1210 T415893"
  • Change db1210 weight to mimic the previous weight db1230:
sudo dbctl instance db1210 edit
  • Update/resolve this ticket.

Event Timeline

Change #1235032 had a related patch set uploaded (by Gerrit maintenance bot; author: Gerrit maintenance bot):

[operations/puppet@production] mariadb: Promote db1230 to s5 master

https://gerrit.wikimedia.org/r/1235032

Marostegui triaged this task as Medium priority.
Marostegui updated the task description. (Show Details)
Marostegui moved this task from Triage to In progress on the DBA board.

Mentioned in SAL (#wikimedia-operations) [2026-01-29T14:27:17Z] <marostegui@cumin1003> dbctl commit (dc=all): 'Set db1230 with weight 0 T415893', diff saved to https://phabricator.wikimedia.org/P88139 and previous config saved to /var/cache/conftool/dbconfig/20260129-142716-marostegui.json

Mentioned in SAL (#wikimedia-operations) [2026-01-29T14:27:38Z] <marostegui@cumin1003> DONE (PASS) - Cookbook sre.hosts.downtime (exit_code=0) for 1:00:00 on 23 hosts with reason: Primary switchover s5 T415893

Change #1235032 merged by Marostegui:

[operations/puppet@production] mariadb: Promote db1230 to s5 master

https://gerrit.wikimedia.org/r/1235032

Mentioned in SAL (#wikimedia-operations) [2026-01-29T14:29:06Z] <marostegui> Starting s5 eqiad failover from db1210 to db1230 - T415893

Mentioned in SAL (#wikimedia-operations) [2026-01-29T14:29:54Z] <marostegui@cumin1003> dbctl commit (dc=all): 'Promote db1230 to s5 primary T415893', diff saved to https://phabricator.wikimedia.org/P88142 and previous config saved to /var/cache/conftool/dbconfig/20260129-142953-marostegui.json

Mentioned in SAL (#wikimedia-operations) [2026-01-29T14:30:30Z] <marostegui@cumin1003> dbctl commit (dc=all): 'Depool db1210 T415893', diff saved to https://phabricator.wikimedia.org/P88143 and previous config saved to /var/cache/conftool/dbconfig/20260129-143030-marostegui.json

Marostegui updated the task description. (Show Details)
Marostegui updated the task description. (Show Details)

Leaving db1210 depooled as it needs a schema change.