SlideShare ist ein Scribd-Unternehmen logo
1 von 45
MySQL Backup and Security
Best practices on how to run MySQL
on Linux & OpenSolaris in a secure way
          Sun Microsystems
Lenz Grimmer <lenz@sun.com>
Overview
• Improving MySQL Server security
  – Built-in functionality
  – Operating System support
• Backing up MySQL
  – Physical vs. logical
  – Methods and Utilities
Improving MySQL security
• Essential part of the post-installation
  process
• Default installation pretty secure already
• Some additional steps have to be
  performed
• Utilize additional security features provided
  by the OS (where applicable)
 http://dev.mysql.com/doc/refman/5.0/en/security.html
MySQL Server post-installation
• Password for the root account
  $ mysql -u root mysql
  mysql> SET PASSWORD FOR
  root@localhost PASSWORD('password')
• Remove the anonymous account
  (or assign a password)
• Remove the test database
• Script: mysql_secure_installation
• Only the necessary accounts
• Only the essential privileges
Access Control Check
• Connect
  – Server checks in the user table for a matching
    entry for the username, host and password

• Query
  – Server checks the user, db, tables_priv
    and column_privs tables
 http://dev.mysql.com/doc/refman/5.0/en/privilege-system.html
Query Access Control
    Do you have sufficient privileges to execute the query?

                                 true
          Query       user
                         false
                                 true
                      db                 Query
                                        executed
                         false

                  tables_priv    true

                         false
                                 true
                  columns_priv
                         false

                   Permission
                     denied
MySQL Server security hints
• bind-address option in my.cfg binds the TCP
  port to a specific interface (e.g. 127.0.0.1)
• skip-networking option only allows connections
  via the local socket file
• Allow access from selected hosts only
• Restrict access to the mysql.user table to the
  root user
• SHOW GRANTS, SET PASSWORD, GRANT/REVOKE
• Use phpMyAdmin, MySQL Administrator or other GUI
  tools for easier user administration
• Do not edit mysql.user directly!
MySQL Server security hints
• Restrict PROCESS/SUPER/FILE privileges to a
  minimum
• Disable LOAD DATA LOCAL by setting local-
  infile=0 in my.cnf
• Always run run mysqld using a non-privileged
  user account
• For developers:
  – Do not store plain-text passwords in the
    database and don't use password()
    (esp. when using MySQL versions before 4.1)
  – Use MD5(), SHA1() or some other one-way
    hashing function instead
MySQL Server security hints
• For the paranoid:
  – Replace the name of the root account with a
    different (harder to guess) one, to avoid brute-
    force dictionary attacks
  – Remove/clean the client's history file
    (~/.mysql_history), if you edited or added
    user accounts/passwords




                                                       9
Views and Stored Procedures
• Use Views to restrict access to certain
  columns of tables
• Stored Procedures shield tables from
  being accessed/modified by the
  user/application directly
• Available since MySQL 5.0.x
        http://dev.mysql.com/doc/refman/5.0/en/views.html
http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html




                                                                10
Improving access restrictions
• Lock down permissions on the data
  directory with chown and chmod
  – Avoid that users can corrupt or access table
    data
• Log files must also be kept secure:
  – Shielding data from user access
  – GRANT statements in logfiles could reveal user
    passwords
• Generally don't allow shell logins to the DB
  server for normal users

                                                     11
Reducing security risks
•   Use iptables to firewall the server
•   Run MySQL in a chroot() environment
•   Enable SELinux or Novell AppArmor
•   Run the MySQL server in a VM
    –   Xen / Sun xVM
    –   Solaris Zones/Container
    –   KVM
    –   VMware / Parallels / VirtualBox




                                          12
Securing data and communication
• Encrypt network traffic
  – OpenSSL
  – SSH tunnel
  – OpenVPN
  – Cipe
• Encrypt the Data Directory
  – cryptoloop devices
  – dm_crypt kernel module




                                  13
Backing up MySQL data
•   When do you need backups?
•   What needs to be backed up?
•   When should backups be performed?
•   Where will the backups be stored?
•   How can backups be performed?




                                        14
When Do You Need Backups?
• Hardware failure
  – A system crash may cause some of the data in
    the databases to be lost
  – A hard-disk failure will most certainly lead to
    lost data
• User/Application failure
  – Accidental DROP TABLE or malformed DELETE
    FROM statements
  – Editing the table files with text editors, usually
    leading to corrupt tables


                                                     15
What needs to be backed up?
• Database content
  – for full backups
  – logical or physical backup
• Log files
  – for incremental backups
  – point-in-time recovery
• Configuration Data
  – /etc/my.cnf
  – Cron-Jobs



                                 16
When should backups be performed?

• On a regular basis
• Not during high usage peaks (off hours)
• Static data can be backed up less
  frequently




                                            17
Where to store backups?
• On the database server
  – At least on a separate file system/volume or
    hard disk drive
• Copied to another server
  – On or off site
  – Cloud storage (using encryption)
• Backed up to tape/disk
  – Stored on or off site
• Choose multiple locations!


                                                   18
The Data Directory
• Databases and most log and status files are
  stored in the data directory by default
• Default directory compiled into the server
  – /usr/local/mysql/data/ (tarball installation)
  – /var/lib/mysql (RPM packages)
• Data directory location can be specified during
  server startup with
  --datadir=/path/to/datadir/
• Find out the location by asking the server
  mysql> SHOW VARIABLES like 'data%';
  mysql> SHOW VARIABLES like 'innodb_%_dir';


                                                    19
The Binary Log
• Contains DML SQL statements (statement based) or
  actual modified data (row-based)
• Also contains additional information about each query
  (e.g. query execution time)
• Binary log is stored in an efficient binary format
• mysqlbinlog to decode the log contents
• Enable binlogging with --log-bin[=file_name]
• Logs are created in sequence e.g.
  file_name-bin.001, file_name-bin.002, etc.
• Binary log is transaction-compatible
• mysqld creates binary log index file which contains
  names of the binary log files used


                                                          20
Managing The Binary Log
• Purpose of the Binary Log:
  – Enable replication
  – Ease crash recovery
• SHOW MASTER LOGS shows all binary log files
  residing on the server
• FLUSH LOGS or restarting the server creates a
  new file
• RESET MASTER deletes all binary log files
• PURGE MASTER deletes all binary log files up to
  a certain point
• Don't delete logs that slaves still need!

                                                    21
The Error Log
• When started with mysqld_safe, all error
  messages are directed to the error log
• The log contains info on when mysqld was
  started and stopped as well as errors found
  when running
  $ cat /var/log/mysql.err
  000929 15:29:45 mysqld started
  /usr/sbin/mysqld: ready for connections
  000929 15:31:15 Aborted connection 1 to db: 'unconnected'
  user: 'root' host: `localhost' (Got an error writing communication
     packets)
  000929 15:31:15 /usr/local/mysql/bin/mysqld: Normal shutdown
  000929 15:31:15 /usr/local/mysql/bin/mysqld: Shutdown Complete
  000929 15:31:54 mysqld started
  /usr/sbin/mysqld: ready for connections



                                                                       22
mysqldump
• mysqldump dumps table structure and data
  into SQL statements
  $ mysqldump mydb > mydb.20050925.sql
• CREATE TABLE statements for table structure
• INSERT statements for the data
• Can dump individual tables or whole
  databases
• mysqldump can also be used directly as input
  into another server (without creating any files)
  $ mysqldump --opt world |
  mysql -h work.mysql.com world

                                                 23
mysqldump hints
• Use --single-transaction when
  backing up InnoDB tables
• --lock-all-tables is useful for
  performing consistent MyISAM backups
  – But locks all DML statements until backup is
    done
• --flush-logs flushes the binary log file
  (checkpointing)



                                                   24
Recovering from Backups
• Restoring tables to the state before a crash
  requires both the backup files and the
  binary log
  – Restore the tables to the state they were at the
    time of the backup from the backup files
  – Extract the queries issued between the backup
    and now from synchronised binary logs
• When recovering lost data due to unwise
  queries, remember not to issue them again
  DB Recovery = Last full backup & binlogs

                                                   25
Example SQL level restore
• Restore the last full backup
  mysql < backup.sql

• Apply all incremental changes done after
  the last full backup
  mysqlbinlog hostname-bin.000001 | mysql




                                             26
MySQL table files backup
• Also called “physical” backup
• MyISAM Database files can simply be
  copied after issuing FLUSH TABLES WITH
  READ LOCK;
• The mysqlhotcopy Perl script automates
  this process
• Locking all tables for consistency can be
  expensive, if the file backup operation
  takes a long time


                                          27
Backing Up InnoDB Databases
• To take a ’binary’ backup, do the following:
   1. Shutdown the MySQL server
   2. Copy your data files, InnoDB log files, .frm files and
      my.cnf file(s) to a safe location
   3. Restart the server
• It is a good idea to backup with mysqldump also,
  since errors might occur in a binary file without you
  noticing it
• Use mysqldump --single transaction to
  make an on-line backup
• Use InnoDB Hot Backup (commercial)

                                                               28
XtraBackup / Maatkit
• http://percona.com/percona-lab.html
• Online backup for InnoDB (and XtraDB)
• Does not work with the InnoDB plugin
  – Add this to my.cnf:
    [xtrabackup]
    target_dir = /home/backups
  – To backup:
    $ xtrabackup –backup
• http://maatkit.org/
  – Multithreaded Perl wrapper scripts:
    mk-parallel-dump / mk-parallel-restore


                                             29
OSS backup tools
• The usual suspects: cp, tar, cpio, gzip,
  zip called in a shell script via a cron job
• rsync or unison for incremental,
  bandwidth-friendly, remote backups
• Complete network-based backup solutions
  like afbackup, Amanda or Bacula provide
  more sophisticated features (e.g. catalogs)




                                            30
Linux backup support
• File system snapshots
  – LVM
  – Zumastor
  – btrfs
  – R1Soft Linux Hot Copy
• DRBD (“RAID1 over the network”)
• Distributed file systems
  –   OpenAFS
  –   GFS
  –   Lustre
  –   Novell iFolder

                                    31
Backup using file system snapshots
• Snapshots provide a convenient and fast
  backup solution for backing up entire
  databases without disruption
• Snapshot volume size does not need to be
  very large (10-15% are sufficient in a
  typical scenario)
• Backup of files from a snapshot volume
  can be performed with any tool



                                         32
Benefits of MySQL Snapshot Backups

•   “Almost hot” (no downtime)
•   Supports all storage engines
•   Fast, low overhead
•   Easy integration
•   Can be combined with log recovery
•   Fast recovery
•   (Usually) Free
Snapshot Backup Caveats
• Not incremental
• InnoDB ignores FLUSH TABLES WITH
  READ LOCK
• FLUSH TABLES performance impact
• Possible I/O performance impact while
  snapshot is active (Linux LVM)
• Handling data spread on multiple volumes
  (DB logs on separate LV or DBs spread
  across multiple LVs)
Linux LVM snapshot creation
 Basic principle:
 mysql> FLUSH TABLES WITH READ LOCK
 $ lvcreate -s –-size=<size> --name=backup
 <LV>
 mysql> UNLOCK TABLES
 $ mount /dev/<VG>/backup /mnt
 $ tar czvf backup.tar.gz /mnt/*
 $ umount /mnt
 $ lvremove /dev/<VG>/backup




                                             35
The mylvmbackup script
• http://www.lenzg.net/mylvmbackup/
• Perl script for quickly creating MySQL backups
  using Linux LVM snapshots
• Snapshots are mounted to a temporary directory
  and all data is backed up using tar, rsync or
  rsnap
• Timestamped archive names allow running
  mylvmbackup many times without risking to
  overwrite old archives
• Can perform InnoDB log recovery on the
  snapshot prior to backup (LVM2)
• Requires Perl, DBI and DBD::mysql

                                                   36
MySQL replication
• Backing up a replication slave is less time-
  critical (Master is not blocked for updates)
• A slave can use different storage engines
• One Master can replicate to many slaves
• Keep the limitations of MySQL replication
  in mind
• Make sure to back up the master.info
  and relay-log.info files as well as any
  SQL_LOAD-* files (if LOAD DATA INFILE
  is replicated)

                                             37
The MySQL Online Backup API
• API to perform a streaming MySQL online
  backup, Storage Engine-independent
• Transactional tables will contain data only from
  committed transactions
• Non-transactional tables will contain data only
  from completed statements
• Referential integrity will be maintained between
  all tables backed up with a specific backup
  command
• Preview available on MySQL Forge:
  http://forge.mysql.com/wiki/OnlineBackup


                                                     38
Online Backup example
• Future versions (MySQL 6.x)
• Example Commands
  BACKUP DATABASE sakila TO 'sakila-
  backup.sql';
  Metadata:
  SELECT * FROM mysql.online_backup
  WHERE backup_id = 1 G
  RESTORE FROM 'sakila-backup.sql';
  Metadata:
  SELECT * FROM mysql.online_backup
  WHERE backup_id = 2 G

                                       39
Commercial backup solutions
•   Acronis True Image
•   ARCServe
•   Arkeia
•   InnoDB HotBackup
•   SEP sesam
•   Veritas vxfs snapshots
•   Zmanda Recovery Manager (ZRM)
•   R1Soft CDP


                                    40
Backup Method Comparison
• Output from mysqldump is portable to any other
  DBMS (without the --opt option) whereas
  copied files only work with MySQL
• Full backups are expensive
• Restoring from logs can be tricky
• The file copying methods are much faster than
  mysqldump
• So it comes down to your preferences:
  – Which tool do you prefer to use
  – Speed vs. portability


                                                   41
Backup Principles
• Perform backups regularly
• Turn on the binary update log
  – Update logs are needed to restore the database
    without losing any data
• Synchronise binary logs with the backup files
  – Use FLUSH LOGS
• Name your backups consistently and
  understandably
  – Include the date in the file name
    mydb.20050925.sql
• Store your backups away from where your
  databases are

                                                     42
General backup notes
• Put the binary logs on a different file
  system (or even a different drive)
  – Increases performance
  – Avoids data loss
• Verify the backup is consistent and
  complete!
• Define backup schedules and policies as
  well as recovery procedures
• Test that these actually work!


                                            43
Q&A




  Questions, Comments?
Thank you!




    Lenz Grimmer <lenz@sun.com>
         http://www.lenzg.net/




                                  45

Weitere ähnliche Inhalte

Was ist angesagt?

ORACLE 12C DATA GUARD: FAR SYNC, REAL-TIME CASCADE STANDBY AND OTHER GOODIES
ORACLE 12C DATA GUARD: FAR SYNC, REAL-TIME CASCADE STANDBY AND OTHER GOODIESORACLE 12C DATA GUARD: FAR SYNC, REAL-TIME CASCADE STANDBY AND OTHER GOODIES
ORACLE 12C DATA GUARD: FAR SYNC, REAL-TIME CASCADE STANDBY AND OTHER GOODIESLudovico Caldara
 
Oracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret InternalsOracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret InternalsAnil Nair
 
Glibc内存管理ptmalloc源代码分析4
Glibc内存管理ptmalloc源代码分析4Glibc内存管理ptmalloc源代码分析4
Glibc内存管理ptmalloc源代码分析4hans511002
 
SR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and ImprovementSR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and ImprovementLF Events
 
MariaDB MaxScale
MariaDB MaxScaleMariaDB MaxScale
MariaDB MaxScaleMariaDB plc
 
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱PgDay.Seoul
 
Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0Mydbops
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel SourceMotaz Saad
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PGConf APAC
 
Replication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTIDReplication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTIDMydbops
 
What is new in PostgreSQL 14?
What is new in PostgreSQL 14?What is new in PostgreSQL 14?
What is new in PostgreSQL 14?Mydbops
 
InnoDB Internal
InnoDB InternalInnoDB Internal
InnoDB Internalmysqlops
 
Connection Pooling in PostgreSQL using pgbouncer
Connection Pooling in PostgreSQL using pgbouncer Connection Pooling in PostgreSQL using pgbouncer
Connection Pooling in PostgreSQL using pgbouncer Sameer Kumar
 

Was ist angesagt? (20)

Linux Huge Pages
Linux Huge PagesLinux Huge Pages
Linux Huge Pages
 
ORACLE 12C DATA GUARD: FAR SYNC, REAL-TIME CASCADE STANDBY AND OTHER GOODIES
ORACLE 12C DATA GUARD: FAR SYNC, REAL-TIME CASCADE STANDBY AND OTHER GOODIESORACLE 12C DATA GUARD: FAR SYNC, REAL-TIME CASCADE STANDBY AND OTHER GOODIES
ORACLE 12C DATA GUARD: FAR SYNC, REAL-TIME CASCADE STANDBY AND OTHER GOODIES
 
Oracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret InternalsOracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret Internals
 
Glibc内存管理ptmalloc源代码分析4
Glibc内存管理ptmalloc源代码分析4Glibc内存管理ptmalloc源代码分析4
Glibc内存管理ptmalloc源代码分析4
 
Postgre sql best_practices
Postgre sql best_practicesPostgre sql best_practices
Postgre sql best_practices
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
PostgreSQL Replication Tutorial
PostgreSQL Replication TutorialPostgreSQL Replication Tutorial
PostgreSQL Replication Tutorial
 
SR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and ImprovementSR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and Improvement
 
MariaDB MaxScale
MariaDB MaxScaleMariaDB MaxScale
MariaDB MaxScale
 
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
 
Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0
 
Backup And Recovery
Backup And RecoveryBackup And Recovery
Backup And Recovery
 
Treinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19cTreinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19c
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel Source
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs
 
Oracle Data Guard
Oracle Data GuardOracle Data Guard
Oracle Data Guard
 
Replication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTIDReplication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTID
 
What is new in PostgreSQL 14?
What is new in PostgreSQL 14?What is new in PostgreSQL 14?
What is new in PostgreSQL 14?
 
InnoDB Internal
InnoDB InternalInnoDB Internal
InnoDB Internal
 
Connection Pooling in PostgreSQL using pgbouncer
Connection Pooling in PostgreSQL using pgbouncer Connection Pooling in PostgreSQL using pgbouncer
Connection Pooling in PostgreSQL using pgbouncer
 

Andere mochten auch

MySQL's new Secure by Default Install -- All Things Open October 20th 2015
MySQL's new Secure by Default Install -- All Things Open October 20th 2015MySQL's new Secure by Default Install -- All Things Open October 20th 2015
MySQL's new Secure by Default Install -- All Things Open October 20th 2015Dave Stokes
 
The care and feeding of a MySQL database
The care and feeding of a MySQL databaseThe care and feeding of a MySQL database
The care and feeding of a MySQL databaseDave Stokes
 
Replication, Durability, and Disaster Recovery
Replication, Durability, and Disaster RecoveryReplication, Durability, and Disaster Recovery
Replication, Durability, and Disaster RecoverySteven Francia
 
Best practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High AvailabilityBest practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High AvailabilityColin Charles
 
Best practices for MySQL High Availability
Best practices for MySQL High AvailabilityBest practices for MySQL High Availability
Best practices for MySQL High AvailabilityColin Charles
 

Andere mochten auch (6)

MySQL's new Secure by Default Install -- All Things Open October 20th 2015
MySQL's new Secure by Default Install -- All Things Open October 20th 2015MySQL's new Secure by Default Install -- All Things Open October 20th 2015
MySQL's new Secure by Default Install -- All Things Open October 20th 2015
 
Mysql security 5.7
Mysql security 5.7 Mysql security 5.7
Mysql security 5.7
 
The care and feeding of a MySQL database
The care and feeding of a MySQL databaseThe care and feeding of a MySQL database
The care and feeding of a MySQL database
 
Replication, Durability, and Disaster Recovery
Replication, Durability, and Disaster RecoveryReplication, Durability, and Disaster Recovery
Replication, Durability, and Disaster Recovery
 
Best practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High AvailabilityBest practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High Availability
 
Best practices for MySQL High Availability
Best practices for MySQL High AvailabilityBest practices for MySQL High Availability
Best practices for MySQL High Availability
 

Ähnlich wie MySQL Backup Security Best Practices

MySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery PlanningMySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery PlanningLenz Grimmer
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAsMark Leith
 
Scalabe MySQL Infrastructure
Scalabe MySQL InfrastructureScalabe MySQL Infrastructure
Scalabe MySQL InfrastructureBalazs Pocze
 
Make Your Life Easier With Maatkit
Make Your Life Easier With MaatkitMake Your Life Easier With Maatkit
Make Your Life Easier With MaatkitMySQLConference
 
High Availability with MySQL
High Availability with MySQLHigh Availability with MySQL
High Availability with MySQLThava Alagu
 
Webinar slides: 9 DevOps Tips for Going in Production with Galera Cluster for...
Webinar slides: 9 DevOps Tips for Going in Production with Galera Cluster for...Webinar slides: 9 DevOps Tips for Going in Production with Galera Cluster for...
Webinar slides: 9 DevOps Tips for Going in Production with Galera Cluster for...Severalnines
 
MySQL Server Backup, Restoration, And Disaster Recovery Planning Presentation
MySQL Server Backup, Restoration, And Disaster Recovery Planning PresentationMySQL Server Backup, Restoration, And Disaster Recovery Planning Presentation
MySQL Server Backup, Restoration, And Disaster Recovery Planning PresentationColin Charles
 
MySQL database replication
MySQL database replicationMySQL database replication
MySQL database replicationPoguttuezhiniVP
 
1049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 2016
1049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 20161049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 2016
1049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 2016panagenda
 
MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017Dave Stokes
 
Best And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM ConnectionsBest And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM ConnectionsLetsConnect
 
Evergreen Sysadmin Survival Skills
Evergreen Sysadmin Survival SkillsEvergreen Sysadmin Survival Skills
Evergreen Sysadmin Survival SkillsEvergreen ILS
 
Mysql 8 vs Mariadb 10.4 Highload++ 2019
Mysql 8 vs Mariadb 10.4 Highload++ 2019Mysql 8 vs Mariadb 10.4 Highload++ 2019
Mysql 8 vs Mariadb 10.4 Highload++ 2019Alkin Tezuysal
 
MySQL Utilities -- PyTexas 2015
MySQL Utilities -- PyTexas 2015MySQL Utilities -- PyTexas 2015
MySQL Utilities -- PyTexas 2015Dave Stokes
 
MySQL Live Migration - Common Scenarios
MySQL Live Migration - Common ScenariosMySQL Live Migration - Common Scenarios
MySQL Live Migration - Common ScenariosMydbops
 

Ähnlich wie MySQL Backup Security Best Practices (20)

MySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery PlanningMySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery Planning
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAs
 
My SQL 101
My SQL 101My SQL 101
My SQL 101
 
Scalabe MySQL Infrastructure
Scalabe MySQL InfrastructureScalabe MySQL Infrastructure
Scalabe MySQL Infrastructure
 
Make Your Life Easier With Maatkit
Make Your Life Easier With MaatkitMake Your Life Easier With Maatkit
Make Your Life Easier With Maatkit
 
High Availability with MySQL
High Availability with MySQLHigh Availability with MySQL
High Availability with MySQL
 
Webinar slides: 9 DevOps Tips for Going in Production with Galera Cluster for...
Webinar slides: 9 DevOps Tips for Going in Production with Galera Cluster for...Webinar slides: 9 DevOps Tips for Going in Production with Galera Cluster for...
Webinar slides: 9 DevOps Tips for Going in Production with Galera Cluster for...
 
MySQL Server Backup, Restoration, And Disaster Recovery Planning Presentation
MySQL Server Backup, Restoration, And Disaster Recovery Planning PresentationMySQL Server Backup, Restoration, And Disaster Recovery Planning Presentation
MySQL Server Backup, Restoration, And Disaster Recovery Planning Presentation
 
MySQL database replication
MySQL database replicationMySQL database replication
MySQL database replication
 
Mysql all
Mysql allMysql all
Mysql all
 
1049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 2016
1049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 20161049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 2016
1049: Best and Worst Practices for Deploying IBM Connections - IBM Connect 2016
 
MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017
 
MySQL Tuning
MySQL TuningMySQL Tuning
MySQL Tuning
 
MySQL database
MySQL databaseMySQL database
MySQL database
 
Best And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM ConnectionsBest And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM Connections
 
Evergreen Sysadmin Survival Skills
Evergreen Sysadmin Survival SkillsEvergreen Sysadmin Survival Skills
Evergreen Sysadmin Survival Skills
 
Mysql 8 vs Mariadb 10.4 Highload++ 2019
Mysql 8 vs Mariadb 10.4 Highload++ 2019Mysql 8 vs Mariadb 10.4 Highload++ 2019
Mysql 8 vs Mariadb 10.4 Highload++ 2019
 
MySQL Utilities -- PyTexas 2015
MySQL Utilities -- PyTexas 2015MySQL Utilities -- PyTexas 2015
MySQL Utilities -- PyTexas 2015
 
MySQL Live Migration - Common Scenarios
MySQL Live Migration - Common ScenariosMySQL Live Migration - Common Scenarios
MySQL Live Migration - Common Scenarios
 
Mysql all
Mysql allMysql all
Mysql all
 

Mehr von Lenz Grimmer

Ceph Management and Monitoring - DevConf.CZ - 2019-01-26
Ceph Management and Monitoring -  DevConf.CZ - 2019-01-26Ceph Management and Monitoring -  DevConf.CZ - 2019-01-26
Ceph Management and Monitoring - DevConf.CZ - 2019-01-26Lenz Grimmer
 
Managing and Monitoring Ceph - Ceph Day Berlin - 2018-11-12
Managing and Monitoring Ceph - Ceph Day Berlin - 2018-11-12Managing and Monitoring Ceph - Ceph Day Berlin - 2018-11-12
Managing and Monitoring Ceph - Ceph Day Berlin - 2018-11-12Lenz Grimmer
 
Ceph Management and Monitoring with Dashboard V2 - Cephalocon 2018-03-23
Ceph Management and Monitoring with Dashboard V2 - Cephalocon 2018-03-23Ceph Management and Monitoring with Dashboard V2 - Cephalocon 2018-03-23
Ceph Management and Monitoring with Dashboard V2 - Cephalocon 2018-03-23Lenz Grimmer
 
Ceph and Storage Management with openATTIC - FOSDEM 2017-02-05
Ceph and Storage Management with openATTIC - FOSDEM 2017-02-05Ceph and Storage Management with openATTIC - FOSDEM 2017-02-05
Ceph and Storage Management with openATTIC - FOSDEM 2017-02-05Lenz Grimmer
 
Ceph and Storage Management with openATTIC - Ceph Day Munich - 2016-09-23
Ceph and Storage Management with openATTIC - Ceph Day Munich - 2016-09-23Ceph and Storage Management with openATTIC - Ceph Day Munich - 2016-09-23
Ceph and Storage Management with openATTIC - Ceph Day Munich - 2016-09-23Lenz Grimmer
 
Ceph and Storage Management in openATTIC - solutions.hamburg - 2016-09-09
Ceph and Storage Management in openATTIC - solutions.hamburg - 2016-09-09Ceph and Storage Management in openATTIC - solutions.hamburg - 2016-09-09
Ceph and Storage Management in openATTIC - solutions.hamburg - 2016-09-09Lenz Grimmer
 
Storage Monitoring in openATTIC - Monitoring Workshop - 2016-09-07
Storage Monitoring in openATTIC - Monitoring Workshop - 2016-09-07Storage Monitoring in openATTIC - Monitoring Workshop - 2016-09-07
Storage Monitoring in openATTIC - Monitoring Workshop - 2016-09-07Lenz Grimmer
 
Ceph and Storage Management with openATTIC - FrOSCon 2016-08-21
Ceph and Storage Management with openATTIC - FrOSCon 2016-08-21Ceph and Storage Management with openATTIC - FrOSCon 2016-08-21
Ceph and Storage Management with openATTIC - FrOSCon 2016-08-21Lenz Grimmer
 
Ceph and Storage Management with openATTIC - SUSE MOST - 2016-06-07
Ceph and Storage Management with openATTIC - SUSE MOST - 2016-06-07Ceph and Storage Management with openATTIC - SUSE MOST - 2016-06-07
Ceph and Storage Management with openATTIC - SUSE MOST - 2016-06-07Lenz Grimmer
 
Ceph and Storage Management with openATTIC, Ceph Tech Talks 2016-06-23
Ceph and Storage Management with openATTIC, Ceph Tech Talks 2016-06-23Ceph and Storage Management with openATTIC, Ceph Tech Talks 2016-06-23
Ceph and Storage Management with openATTIC, Ceph Tech Talks 2016-06-23Lenz Grimmer
 
Ceph and Storage Management with openATTIC, openSUSE Conference 2016-06-23
Ceph and Storage Management with openATTIC, openSUSE Conference 2016-06-23Ceph and Storage Management with openATTIC, openSUSE Conference 2016-06-23
Ceph and Storage Management with openATTIC, openSUSE Conference 2016-06-23Lenz Grimmer
 
Storage Management mit openAttic - LinuxDay - 2015-11-21
Storage Management mit openAttic - LinuxDay - 2015-11-21Storage Management mit openAttic - LinuxDay - 2015-11-21
Storage Management mit openAttic - LinuxDay - 2015-11-21Lenz Grimmer
 
Flexibles Storage Management unter Linux mit OpenATTIC - Kielux 2015-09-18
Flexibles Storage Management unter Linux mit OpenATTIC - Kielux 2015-09-18Flexibles Storage Management unter Linux mit OpenATTIC - Kielux 2015-09-18
Flexibles Storage Management unter Linux mit OpenATTIC - Kielux 2015-09-18Lenz Grimmer
 
The Evolution of Storage on Linux - FrOSCon - 2015-08-22
The Evolution of Storage on Linux - FrOSCon - 2015-08-22The Evolution of Storage on Linux - FrOSCon - 2015-08-22
The Evolution of Storage on Linux - FrOSCon - 2015-08-22Lenz Grimmer
 
MySQL 5.5 Replication Enhancements – An Overview (FOSDEM 2011)
MySQL 5.5 Replication Enhancements – An Overview (FOSDEM 2011)MySQL 5.5 Replication Enhancements – An Overview (FOSDEM 2011)
MySQL 5.5 Replication Enhancements – An Overview (FOSDEM 2011)Lenz Grimmer
 
What's new in MySQL 5.5? FOSDEM 2011
What's new in MySQL 5.5? FOSDEM 2011What's new in MySQL 5.5? FOSDEM 2011
What's new in MySQL 5.5? FOSDEM 2011Lenz Grimmer
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability SolutionsLenz Grimmer
 
How to build your own Quadrocopter
How to build your own QuadrocopterHow to build your own Quadrocopter
How to build your own QuadrocopterLenz Grimmer
 
What's new in MySQL 5.5?
What's new in MySQL 5.5?What's new in MySQL 5.5?
What's new in MySQL 5.5?Lenz Grimmer
 

Mehr von Lenz Grimmer (20)

Ceph Management and Monitoring - DevConf.CZ - 2019-01-26
Ceph Management and Monitoring -  DevConf.CZ - 2019-01-26Ceph Management and Monitoring -  DevConf.CZ - 2019-01-26
Ceph Management and Monitoring - DevConf.CZ - 2019-01-26
 
Managing and Monitoring Ceph - Ceph Day Berlin - 2018-11-12
Managing and Monitoring Ceph - Ceph Day Berlin - 2018-11-12Managing and Monitoring Ceph - Ceph Day Berlin - 2018-11-12
Managing and Monitoring Ceph - Ceph Day Berlin - 2018-11-12
 
Ceph Management and Monitoring with Dashboard V2 - Cephalocon 2018-03-23
Ceph Management and Monitoring with Dashboard V2 - Cephalocon 2018-03-23Ceph Management and Monitoring with Dashboard V2 - Cephalocon 2018-03-23
Ceph Management and Monitoring with Dashboard V2 - Cephalocon 2018-03-23
 
Ceph and Storage Management with openATTIC - FOSDEM 2017-02-05
Ceph and Storage Management with openATTIC - FOSDEM 2017-02-05Ceph and Storage Management with openATTIC - FOSDEM 2017-02-05
Ceph and Storage Management with openATTIC - FOSDEM 2017-02-05
 
Ceph and Storage Management with openATTIC - Ceph Day Munich - 2016-09-23
Ceph and Storage Management with openATTIC - Ceph Day Munich - 2016-09-23Ceph and Storage Management with openATTIC - Ceph Day Munich - 2016-09-23
Ceph and Storage Management with openATTIC - Ceph Day Munich - 2016-09-23
 
Ceph and Storage Management in openATTIC - solutions.hamburg - 2016-09-09
Ceph and Storage Management in openATTIC - solutions.hamburg - 2016-09-09Ceph and Storage Management in openATTIC - solutions.hamburg - 2016-09-09
Ceph and Storage Management in openATTIC - solutions.hamburg - 2016-09-09
 
Storage Monitoring in openATTIC - Monitoring Workshop - 2016-09-07
Storage Monitoring in openATTIC - Monitoring Workshop - 2016-09-07Storage Monitoring in openATTIC - Monitoring Workshop - 2016-09-07
Storage Monitoring in openATTIC - Monitoring Workshop - 2016-09-07
 
Ceph and Storage Management with openATTIC - FrOSCon 2016-08-21
Ceph and Storage Management with openATTIC - FrOSCon 2016-08-21Ceph and Storage Management with openATTIC - FrOSCon 2016-08-21
Ceph and Storage Management with openATTIC - FrOSCon 2016-08-21
 
Ceph and Storage Management with openATTIC - SUSE MOST - 2016-06-07
Ceph and Storage Management with openATTIC - SUSE MOST - 2016-06-07Ceph and Storage Management with openATTIC - SUSE MOST - 2016-06-07
Ceph and Storage Management with openATTIC - SUSE MOST - 2016-06-07
 
Ceph and Storage Management with openATTIC, Ceph Tech Talks 2016-06-23
Ceph and Storage Management with openATTIC, Ceph Tech Talks 2016-06-23Ceph and Storage Management with openATTIC, Ceph Tech Talks 2016-06-23
Ceph and Storage Management with openATTIC, Ceph Tech Talks 2016-06-23
 
Ceph and Storage Management with openATTIC, openSUSE Conference 2016-06-23
Ceph and Storage Management with openATTIC, openSUSE Conference 2016-06-23Ceph and Storage Management with openATTIC, openSUSE Conference 2016-06-23
Ceph and Storage Management with openATTIC, openSUSE Conference 2016-06-23
 
Storage Management mit openAttic - LinuxDay - 2015-11-21
Storage Management mit openAttic - LinuxDay - 2015-11-21Storage Management mit openAttic - LinuxDay - 2015-11-21
Storage Management mit openAttic - LinuxDay - 2015-11-21
 
Flexibles Storage Management unter Linux mit OpenATTIC - Kielux 2015-09-18
Flexibles Storage Management unter Linux mit OpenATTIC - Kielux 2015-09-18Flexibles Storage Management unter Linux mit OpenATTIC - Kielux 2015-09-18
Flexibles Storage Management unter Linux mit OpenATTIC - Kielux 2015-09-18
 
The Evolution of Storage on Linux - FrOSCon - 2015-08-22
The Evolution of Storage on Linux - FrOSCon - 2015-08-22The Evolution of Storage on Linux - FrOSCon - 2015-08-22
The Evolution of Storage on Linux - FrOSCon - 2015-08-22
 
MySQL 5.5 Replication Enhancements – An Overview (FOSDEM 2011)
MySQL 5.5 Replication Enhancements – An Overview (FOSDEM 2011)MySQL 5.5 Replication Enhancements – An Overview (FOSDEM 2011)
MySQL 5.5 Replication Enhancements – An Overview (FOSDEM 2011)
 
What's new in MySQL 5.5? FOSDEM 2011
What's new in MySQL 5.5? FOSDEM 2011What's new in MySQL 5.5? FOSDEM 2011
What's new in MySQL 5.5? FOSDEM 2011
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability Solutions
 
How to build your own Quadrocopter
How to build your own QuadrocopterHow to build your own Quadrocopter
How to build your own Quadrocopter
 
What's new in MySQL 5.5?
What's new in MySQL 5.5?What's new in MySQL 5.5?
What's new in MySQL 5.5?
 
ZFS unter Linux
ZFS unter LinuxZFS unter Linux
ZFS unter Linux
 

Kürzlich hochgeladen

Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 

Kürzlich hochgeladen (20)

Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 

MySQL Backup Security Best Practices

  • 1. MySQL Backup and Security Best practices on how to run MySQL on Linux & OpenSolaris in a secure way Sun Microsystems Lenz Grimmer <lenz@sun.com>
  • 2. Overview • Improving MySQL Server security – Built-in functionality – Operating System support • Backing up MySQL – Physical vs. logical – Methods and Utilities
  • 3. Improving MySQL security • Essential part of the post-installation process • Default installation pretty secure already • Some additional steps have to be performed • Utilize additional security features provided by the OS (where applicable) http://dev.mysql.com/doc/refman/5.0/en/security.html
  • 4. MySQL Server post-installation • Password for the root account $ mysql -u root mysql mysql> SET PASSWORD FOR root@localhost PASSWORD('password') • Remove the anonymous account (or assign a password) • Remove the test database • Script: mysql_secure_installation • Only the necessary accounts • Only the essential privileges
  • 5. Access Control Check • Connect – Server checks in the user table for a matching entry for the username, host and password • Query – Server checks the user, db, tables_priv and column_privs tables http://dev.mysql.com/doc/refman/5.0/en/privilege-system.html
  • 6. Query Access Control Do you have sufficient privileges to execute the query? true Query user false true db Query executed false tables_priv true false true columns_priv false Permission denied
  • 7. MySQL Server security hints • bind-address option in my.cfg binds the TCP port to a specific interface (e.g. 127.0.0.1) • skip-networking option only allows connections via the local socket file • Allow access from selected hosts only • Restrict access to the mysql.user table to the root user • SHOW GRANTS, SET PASSWORD, GRANT/REVOKE • Use phpMyAdmin, MySQL Administrator or other GUI tools for easier user administration • Do not edit mysql.user directly!
  • 8. MySQL Server security hints • Restrict PROCESS/SUPER/FILE privileges to a minimum • Disable LOAD DATA LOCAL by setting local- infile=0 in my.cnf • Always run run mysqld using a non-privileged user account • For developers: – Do not store plain-text passwords in the database and don't use password() (esp. when using MySQL versions before 4.1) – Use MD5(), SHA1() or some other one-way hashing function instead
  • 9. MySQL Server security hints • For the paranoid: – Replace the name of the root account with a different (harder to guess) one, to avoid brute- force dictionary attacks – Remove/clean the client's history file (~/.mysql_history), if you edited or added user accounts/passwords 9
  • 10. Views and Stored Procedures • Use Views to restrict access to certain columns of tables • Stored Procedures shield tables from being accessed/modified by the user/application directly • Available since MySQL 5.0.x http://dev.mysql.com/doc/refman/5.0/en/views.html http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html 10
  • 11. Improving access restrictions • Lock down permissions on the data directory with chown and chmod – Avoid that users can corrupt or access table data • Log files must also be kept secure: – Shielding data from user access – GRANT statements in logfiles could reveal user passwords • Generally don't allow shell logins to the DB server for normal users 11
  • 12. Reducing security risks • Use iptables to firewall the server • Run MySQL in a chroot() environment • Enable SELinux or Novell AppArmor • Run the MySQL server in a VM – Xen / Sun xVM – Solaris Zones/Container – KVM – VMware / Parallels / VirtualBox 12
  • 13. Securing data and communication • Encrypt network traffic – OpenSSL – SSH tunnel – OpenVPN – Cipe • Encrypt the Data Directory – cryptoloop devices – dm_crypt kernel module 13
  • 14. Backing up MySQL data • When do you need backups? • What needs to be backed up? • When should backups be performed? • Where will the backups be stored? • How can backups be performed? 14
  • 15. When Do You Need Backups? • Hardware failure – A system crash may cause some of the data in the databases to be lost – A hard-disk failure will most certainly lead to lost data • User/Application failure – Accidental DROP TABLE or malformed DELETE FROM statements – Editing the table files with text editors, usually leading to corrupt tables 15
  • 16. What needs to be backed up? • Database content – for full backups – logical or physical backup • Log files – for incremental backups – point-in-time recovery • Configuration Data – /etc/my.cnf – Cron-Jobs 16
  • 17. When should backups be performed? • On a regular basis • Not during high usage peaks (off hours) • Static data can be backed up less frequently 17
  • 18. Where to store backups? • On the database server – At least on a separate file system/volume or hard disk drive • Copied to another server – On or off site – Cloud storage (using encryption) • Backed up to tape/disk – Stored on or off site • Choose multiple locations! 18
  • 19. The Data Directory • Databases and most log and status files are stored in the data directory by default • Default directory compiled into the server – /usr/local/mysql/data/ (tarball installation) – /var/lib/mysql (RPM packages) • Data directory location can be specified during server startup with --datadir=/path/to/datadir/ • Find out the location by asking the server mysql> SHOW VARIABLES like 'data%'; mysql> SHOW VARIABLES like 'innodb_%_dir'; 19
  • 20. The Binary Log • Contains DML SQL statements (statement based) or actual modified data (row-based) • Also contains additional information about each query (e.g. query execution time) • Binary log is stored in an efficient binary format • mysqlbinlog to decode the log contents • Enable binlogging with --log-bin[=file_name] • Logs are created in sequence e.g. file_name-bin.001, file_name-bin.002, etc. • Binary log is transaction-compatible • mysqld creates binary log index file which contains names of the binary log files used 20
  • 21. Managing The Binary Log • Purpose of the Binary Log: – Enable replication – Ease crash recovery • SHOW MASTER LOGS shows all binary log files residing on the server • FLUSH LOGS or restarting the server creates a new file • RESET MASTER deletes all binary log files • PURGE MASTER deletes all binary log files up to a certain point • Don't delete logs that slaves still need! 21
  • 22. The Error Log • When started with mysqld_safe, all error messages are directed to the error log • The log contains info on when mysqld was started and stopped as well as errors found when running $ cat /var/log/mysql.err 000929 15:29:45 mysqld started /usr/sbin/mysqld: ready for connections 000929 15:31:15 Aborted connection 1 to db: 'unconnected' user: 'root' host: `localhost' (Got an error writing communication packets) 000929 15:31:15 /usr/local/mysql/bin/mysqld: Normal shutdown 000929 15:31:15 /usr/local/mysql/bin/mysqld: Shutdown Complete 000929 15:31:54 mysqld started /usr/sbin/mysqld: ready for connections 22
  • 23. mysqldump • mysqldump dumps table structure and data into SQL statements $ mysqldump mydb > mydb.20050925.sql • CREATE TABLE statements for table structure • INSERT statements for the data • Can dump individual tables or whole databases • mysqldump can also be used directly as input into another server (without creating any files) $ mysqldump --opt world | mysql -h work.mysql.com world 23
  • 24. mysqldump hints • Use --single-transaction when backing up InnoDB tables • --lock-all-tables is useful for performing consistent MyISAM backups – But locks all DML statements until backup is done • --flush-logs flushes the binary log file (checkpointing) 24
  • 25. Recovering from Backups • Restoring tables to the state before a crash requires both the backup files and the binary log – Restore the tables to the state they were at the time of the backup from the backup files – Extract the queries issued between the backup and now from synchronised binary logs • When recovering lost data due to unwise queries, remember not to issue them again DB Recovery = Last full backup & binlogs 25
  • 26. Example SQL level restore • Restore the last full backup mysql < backup.sql • Apply all incremental changes done after the last full backup mysqlbinlog hostname-bin.000001 | mysql 26
  • 27. MySQL table files backup • Also called “physical” backup • MyISAM Database files can simply be copied after issuing FLUSH TABLES WITH READ LOCK; • The mysqlhotcopy Perl script automates this process • Locking all tables for consistency can be expensive, if the file backup operation takes a long time 27
  • 28. Backing Up InnoDB Databases • To take a ’binary’ backup, do the following: 1. Shutdown the MySQL server 2. Copy your data files, InnoDB log files, .frm files and my.cnf file(s) to a safe location 3. Restart the server • It is a good idea to backup with mysqldump also, since errors might occur in a binary file without you noticing it • Use mysqldump --single transaction to make an on-line backup • Use InnoDB Hot Backup (commercial) 28
  • 29. XtraBackup / Maatkit • http://percona.com/percona-lab.html • Online backup for InnoDB (and XtraDB) • Does not work with the InnoDB plugin – Add this to my.cnf: [xtrabackup] target_dir = /home/backups – To backup: $ xtrabackup –backup • http://maatkit.org/ – Multithreaded Perl wrapper scripts: mk-parallel-dump / mk-parallel-restore 29
  • 30. OSS backup tools • The usual suspects: cp, tar, cpio, gzip, zip called in a shell script via a cron job • rsync or unison for incremental, bandwidth-friendly, remote backups • Complete network-based backup solutions like afbackup, Amanda or Bacula provide more sophisticated features (e.g. catalogs) 30
  • 31. Linux backup support • File system snapshots – LVM – Zumastor – btrfs – R1Soft Linux Hot Copy • DRBD (“RAID1 over the network”) • Distributed file systems – OpenAFS – GFS – Lustre – Novell iFolder 31
  • 32. Backup using file system snapshots • Snapshots provide a convenient and fast backup solution for backing up entire databases without disruption • Snapshot volume size does not need to be very large (10-15% are sufficient in a typical scenario) • Backup of files from a snapshot volume can be performed with any tool 32
  • 33. Benefits of MySQL Snapshot Backups • “Almost hot” (no downtime) • Supports all storage engines • Fast, low overhead • Easy integration • Can be combined with log recovery • Fast recovery • (Usually) Free
  • 34. Snapshot Backup Caveats • Not incremental • InnoDB ignores FLUSH TABLES WITH READ LOCK • FLUSH TABLES performance impact • Possible I/O performance impact while snapshot is active (Linux LVM) • Handling data spread on multiple volumes (DB logs on separate LV or DBs spread across multiple LVs)
  • 35. Linux LVM snapshot creation Basic principle: mysql> FLUSH TABLES WITH READ LOCK $ lvcreate -s –-size=<size> --name=backup <LV> mysql> UNLOCK TABLES $ mount /dev/<VG>/backup /mnt $ tar czvf backup.tar.gz /mnt/* $ umount /mnt $ lvremove /dev/<VG>/backup 35
  • 36. The mylvmbackup script • http://www.lenzg.net/mylvmbackup/ • Perl script for quickly creating MySQL backups using Linux LVM snapshots • Snapshots are mounted to a temporary directory and all data is backed up using tar, rsync or rsnap • Timestamped archive names allow running mylvmbackup many times without risking to overwrite old archives • Can perform InnoDB log recovery on the snapshot prior to backup (LVM2) • Requires Perl, DBI and DBD::mysql 36
  • 37. MySQL replication • Backing up a replication slave is less time- critical (Master is not blocked for updates) • A slave can use different storage engines • One Master can replicate to many slaves • Keep the limitations of MySQL replication in mind • Make sure to back up the master.info and relay-log.info files as well as any SQL_LOAD-* files (if LOAD DATA INFILE is replicated) 37
  • 38. The MySQL Online Backup API • API to perform a streaming MySQL online backup, Storage Engine-independent • Transactional tables will contain data only from committed transactions • Non-transactional tables will contain data only from completed statements • Referential integrity will be maintained between all tables backed up with a specific backup command • Preview available on MySQL Forge: http://forge.mysql.com/wiki/OnlineBackup 38
  • 39. Online Backup example • Future versions (MySQL 6.x) • Example Commands BACKUP DATABASE sakila TO 'sakila- backup.sql'; Metadata: SELECT * FROM mysql.online_backup WHERE backup_id = 1 G RESTORE FROM 'sakila-backup.sql'; Metadata: SELECT * FROM mysql.online_backup WHERE backup_id = 2 G 39
  • 40. Commercial backup solutions • Acronis True Image • ARCServe • Arkeia • InnoDB HotBackup • SEP sesam • Veritas vxfs snapshots • Zmanda Recovery Manager (ZRM) • R1Soft CDP 40
  • 41. Backup Method Comparison • Output from mysqldump is portable to any other DBMS (without the --opt option) whereas copied files only work with MySQL • Full backups are expensive • Restoring from logs can be tricky • The file copying methods are much faster than mysqldump • So it comes down to your preferences: – Which tool do you prefer to use – Speed vs. portability 41
  • 42. Backup Principles • Perform backups regularly • Turn on the binary update log – Update logs are needed to restore the database without losing any data • Synchronise binary logs with the backup files – Use FLUSH LOGS • Name your backups consistently and understandably – Include the date in the file name mydb.20050925.sql • Store your backups away from where your databases are 42
  • 43. General backup notes • Put the binary logs on a different file system (or even a different drive) – Increases performance – Avoids data loss • Verify the backup is consistent and complete! • Define backup schedules and policies as well as recovery procedures • Test that these actually work! 43
  • 44. Q&A Questions, Comments?
  • 45. Thank you! Lenz Grimmer <lenz@sun.com> http://www.lenzg.net/ 45