Version 4 (modified by yitz, 7 years ago)

Added initial copy and rsync, as suggested by Ian

Migration From Etch

Services to migrate

  • RT on PostgreSQL
  • Trac
  • http
  • Exim
  • ClamAV
  • mrtg
  • darcs
  • ghc
  • mailman
  • nagios
  • planet

User data to be transfered

  • User accounts and home directories
  • Project groups in /etc/group
  • Darcs repos from /srv/projects
  • Project data from /srv/code
  • Trac projects
  • Mailman lists
  • Planet Haskell
  • Physical mailboxes (igloo and malcolm)

Domains to be transferred

  • community
  • code
  • rt
  • planet
  • trac
  • projects

Migration plan - preparatory stage

  1. Formulate plan on how to communicate with users during the migration process; begin gathering required contact info if necessary
  2. Calculate the approximate size and rate of change of each type of data on the server
  3. Give preliminary notice to users and ask for feedback
  4. Configure domain name (will later become read-only copy and left active for a while as a backup)
  5. Set up an IRC channel for admins to coordinate during the migration process
  6. Change TTL on all domains to be short
  7. Provision the new server
  8. Install and perform basic configuration of all services
  9. Test all installed services
  10. Write scripts to copy user accounts and rsync home directories, and to verify
  11. Write scripts to copy project groups in /etc/group, and to verify
  12. Write scripts to rsync darcs repos from /srv/projects, and to verify
  13. Write scripts to rsync project data from /srv/code, and to verify
  14. Write scripts to rsync trac projects, and to verify
  15. Write scripts to copy mailman lists and rsync archives, and to verify
  16. Write scripts to rsync Planet Haskell, and to verify
  17. Write a script to make all user data and projects read-only (except mailman archives), and to verify.
  18. Write a script to *undo* making things read-only, in case of emergency.
  19. Test all scripts thoroughly
  20. Fix dates for beginning initial copy and final migration, and give advance notice and instructions to users.
  21. Transfer RT database and verify (as a dry run, go through the entire migration process just for RT)
  22. Move the rt domain
  23. After TTL, verify that RT is working on the new server

Migration plan - Initial copy

  1. Run script to copy user accounts. Verify.
  2. Run script to copy /etc/group entries for projects. Verify.
  3. Run scripts to rsync home directories, darcs repos, project data, trac projects, mailman archives, and Planet data
  4. Monitor progress; update schedule and notify users as needed
  5. When completed, verify.

Migration plan - D-Day

  1. Notify users.
  2. Stop the Planet Haskell hourly cron job.
  3. Run script to make all user data and projects read-only. Verify.
  4. If any user accounts or projects were added since initial copy began, add them.
  5. Run scripts to rsync home directories, darcs repos, project data, and Trac projects. Verify.
  6. Stop mailman service on etch.
  7. Run the scripts to rsync mailman archives. Verify.
  8. Move the domain CNAME for community, trac, projects, and code.
  9. After TTL, verify remotely that the domains moved and that services are working.
  10. Notify users of current status.
  11. Tell Ian and Malcolm to check their mail.
  12. Move the domain MX records.
  13. Run the scripts to rsync Planet Haskell. Verify.
  14. Move the planet domain.
  15. Start the Planet Haskell hourly cron job.
  16. After TTL, verify remotely that all domains are moved and that all services are working.
  17. Notify users and community.

Post-migration tasks

  1. Monitor and tune settings of PostgreSQL for resource usage on the new server
  2. Monitor and tune settings of Apache for resource usage on the new server
  3. After a day or two, raise TTL back to normal levels on all domains
  4. After a month or two, delete the Etch server