database operations at groupon using ansible
play

Database Operations at Groupon using Ansible Mani Subramanian Sr. - PowerPoint PPT Presentation

Database Operations at Groupon using Ansible Mani Subramanian Sr. Manager Global Database Services Groupon manidba@groupon.com About me Worked as an Oracle DBA for 15+ years Branched out to MySQL since 2011 Branched out to


  1. Database Operations at Groupon using Ansible Mani Subramanian Sr. Manager Global Database Services Groupon manidba@groupon.com

  2. About me ● Worked as an Oracle DBA for 15+ years ● Branched out to MySQL since 2011 ● Branched out to PostgreSQL since 2014 ● Now - Managing Global Databases Services in Groupon

  3. Global Database Services ● Supports Production Operations ● Managing databases at scale both MySQL and PostgreSQL ● DaaS (Database as Service) ● Develop Tools and scripts for internal purpose ● Teams worldwide.

  4. Agenda Provisioning new MySQL DB instances (Demo) ● Setting up MySQL replication (Demo) ● Provisioning new PostgreSQL DB instances (Demo) ● Setting up Streaming replication (Demo) ● ● Creating new users and grants. ● Database failover using MHA (Demo) ● Destroy DB instances. ● Backup ● Validate the Backup restore ● Future potential developments

  5. Environment FreeBSD Operating System ● ZFS FileSystem ● MySQL - Percona 5.6 ● PostgreSQL - 9.4 ● CARP - Common Address Redundancy Protocol (VIP) ● ● Ansible 2.4 ● Runit ● MHA for MySQL failover ● ZFS snapshots (FS level consistent backup) ● Xtrabackup (MySQL) ● Pg_basebackup(PostgreSQL)

  6. Ansible What is Ansible? ● Radically simple IT automation engine. ○ Why Ansible? ● Automate tasks (sequence of tasks) ○ Save time and be more productive ○ Reduce mistakes or errors. ○ How does it work? ● SSH Keys are your friends ○ No additional agents ○ Uses simple language (YAML in the form of Ansible playbooks) ○

  7. Ansible

  8. Simple Ansible Terms Roles ● Tasks ○ Handlers ○ Defaults ○ Vars ○ Files ○ Templates ○ Meta ○ Documentation : http://docs.ansible.com/ansible/latest/user_guide/

  9. Ansible inventory file [gds_snc1_test_db001] gds-snc1-test-db001m1.snc1 gds-snc1-test-db001s1.snc1 [gds_snc1_test_db002] gds-snc1-test-db002m1.snc1 gds-snc1-test-db002s1.snc1 [gds_snc1_test_db003] gds-snc1-test-db003m1.snc1 gds-snc1-test-db003s1.snc1

  10. Ansible usage - Example1

  11. Ansible usage - Example2

  12. Ansible usage - Example3

  13. Ansible usage - Example4

  14. DB Instances Provisioning ansible-playbook plays/mysql/create-instance.yml -e "node=gds-snc1-test- db001m1.snc1 instance=gds_sandbox_demo inst_type=master" <<< DEMO >>> ansible-playbook plays/mysql/create-instance.yml -e "node=gds-snc1-test- db001s1.snc1 instance=gds_sandbox_demo inst_type=slave" <<< DEMO >>>

  15. YAML file on Instance Provisioning

  16. plays/mysql/create-instance.yml

  17. check-params.yml

  18. Configuring MHA using Ansible playbook Configure MHA ansible-playbook plays/mysql/create-admin.yml -e "node=gds-snc1-test- db001m1.snc1 instance=gds_sandbox_demo" ansible-playbook plays/mysql/create-admin.yml -e "node=gds-snc1-test- db001s1.snc1 instance=gds_sandbox_demo" <<< DEMO >>>

  19. Cloning the Slave box(es) ansible-playbook plays/mysql/clone-instance.yml -e "master_server=gds-snc1- test-db001m1.snc1 slave_server=gds-snc1-test-db001s1.snc1 instance=gds_sandbox_demo" <<< DEMO >>>

  20. Destroying DB instances ansible-playbook plays/mysql/destroy-instance.yml -e "node=gds-snc1-test- db001s1.snc1 instance=gds_sandbox_demo" <<< DEMO >>> It does Checks for connections ● Removes monitoring ● Stops the service ● Deletes instances ● Removes snapshots ● Removes ZFS filesystem ●

  21. ZFS Snapshots It is a life saver in multiple scenarios like ● When User drops tables/wipes data mistakenly. ● Rollback faster on any planned data changes. ● Repeated load test on same data set is possible. ● Shipping ZFS filesystem to different box/data center for Research/Recovery purpose. << Demo >>

  22. Yaml file to schedule backup sandbox-ro-vip.snc1-J1: host: sandbox-ro-vip.snc1 instance_name: - sandbox_demo pool: us retention: 31d-1m-2y target: mysql template: daas_mysql_v2 zfs_fs: snc1-prod-sandbox

  23. Scheduling backups Run the key generation play: ansible-playbook -i inventory/percona-demo plays/test-gen-ssh-keys.yml Run the key installation play: ansible-playbook -i inventory/percona-demo plays/test-install-keys.yml Installing Backup Jobs: ansible-playbook -i inventory/percona-demo plays/test-install-jobs.yml

  24. Monitoring Ansible play creates instance and also pushes monitoring scripts to the ● hosts. Check-Mk agent executes to collect data for monitoring alerts ● More details http://mathias-kettner.com/check_mk.html ●

  25. Future potential development ● Backfill and bulk DML using ansible ● Operations using CMDB ● Self service on DB instance provisioning and whitelisting app servers ● Schema change using ansible

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend