Benutzer-Werkzeuge

Webseiten-Werkzeuge


rsnapshot

rsnapshot

MySQL-Sicherung per LVM-SnapShot

root@dbhost:~# lvs

  LV     VG     Attr      LSize    Pool Origin Data%  Move Log Copy%  Convert
  backup backup -wi-ao--- 1000,00g
  mysql  trusty -wi-ao---  200,00g
  root   trusty -wi-ao---   20,00g
  swap   trusty -wi-ao---  952,00m

root@dbhost:~# df -h

Filesystem                 Size  Used Avail Use% Mounted on
udev                       3,9G   12K  3,9G   1% /dev
tmpfs                      799M  444K  798M   1% /run
/dev/dm-0                   20G  2,3G   17G  13% /
none                       4,0K     0  4,0K   0% /sys/fs/cgroup
none                       5,0M     0  5,0M   0% /run/lock
none                       3,9G     0  3,9G   0% /run/shm
none                       100M     0  100M   0% /run/user
/dev/vda1                  547M   76M  431M  15% /boot
/dev/mapper/trusty-mysql   197G   11G  187G   6% /var/lib/mysql
/dev/mapper/backup-backup  985G   60G  925G   7% /var/cache/rsnapshot
/etc/mysql/mysql.conf.d/mysqld.cnf
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 
#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
 
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
#datadir        = /var/lib/mysql
datadir         = /var/lib/mysql/data
log-error       = /var/log/mysql/error.log
# By default we only accept connections from localhost
bind-address    = 0.0.0.0
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links  = 0
/etc/rsnapshot.conf
#################################################
# rsnapshot.conf - rsnapshot configuration file #
#################################################
#                                               #
# PLEASE BE AWARE OF THE FOLLOWING RULES:       #
#                                               #
# This file requires tabs between elements      #
#                                               #
# Directories require a trailing slash:         #
#   right: /home/                               #
#   wrong: /home                                #
#                                               #
#################################################
 
#######################
# CONFIG FILE VERSION #
#######################
 
config_version  1.2
 
###########################
# SNAPSHOT ROOT DIRECTORY #
###########################
 
# All snapshots will be stored under this root directory.
#
#snapshot_root  /var/cache/rsnapshot/
snapshot_root   /var/cache/rsnapshot/backup/
 
# If no_create_root is enabled, rsnapshot will not automatically create the
# snapshot_root directory. This is particularly useful if you are backing
# up to removable media, such as a FireWire or USB drive.
#
no_create_root  1
 
#################################
# EXTERNAL PROGRAM DEPENDENCIES #
#################################
 
# LINUX USERS:   Be sure to uncomment "cmd_cp". This gives you extra features.
# EVERYONE ELSE: Leave "cmd_cp" commented out for compatibility.
#
# See the README file or the man page for more details.
#
cmd_cp          /bin/cp
 
# uncomment this to use the rm program instead of the built-in perl routine.
#
cmd_rm          /bin/rm
 
# rsync must be enabled for anything to work. This is the only command that
# must be enabled.
#
cmd_rsync       /usr/bin/rsync
 
# Uncomment this to enable remote ssh backups over rsync.
#
#cmd_ssh        /usr/bin/ssh
 
# Comment this out to disable syslog support.
#
cmd_logger      /usr/bin/logger
 
# Uncomment this to specify the path to "du" for disk usage checks.
# If you have an older version of "du", you may also want to check the
# "du_args" parameter below.
#
#cmd_du         /usr/bin/du
 
# Uncomment this to specify the path to rsnapshot-diff.
#
#cmd_rsnapshot_diff     /usr/bin/rsnapshot-diff
 
# Specify the path to a script (and any optional arguments) to run right
# before rsnapshot syncs files
#
#cmd_preexec    /path/to/preexec/script
 
# Specify the path to a script (and any optional arguments) to run right
# after rsnapshot syncs files
#
#cmd_postexec   /path/to/postexec/script
 
# Paths to lvcreate, lvremove, mount and umount commands, for use with
# Linux LVMs.
#
#linux_lvm_cmd_lvcreate /sbin/lvcreate
#linux_lvm_cmd_lvremove /sbin/lvremove
#linux_lvm_cmd_mount    /bin/mount
#linux_lvm_cmd_umount   /bin/umount
 
#########################################
#           BACKUP INTERVALS            #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc.      #
#########################################
 
retain          hourly  2
#retain         hourly  6
#retain         daily   7
#retain         weekly  4
#retain         monthly 3
 
############################################
#              GLOBAL OPTIONS              #
# All are optional, with sensible defaults #
############################################
 
# Verbose level, 1 through 5.
# 1     Quiet           Print fatal errors only
# 2     Default         Print errors and warnings only
# 3     Verbose         Show equivalent shell commands being executed
# 4     Extra Verbose   Show extra verbose information
# 5     Debug mode      Everything
#
verbose         2
 
# Same as "verbose" above, but controls the amount of data sent to the
# logfile, if one is being used. The default is 3.
#
loglevel        3
 
# If you enable this, data will be written to the file you specify. The
# amount of data written is controlled by the "loglevel" parameter.
#
#logfile        /var/log/rsnapshot.log
 
# If enabled, rsnapshot will write a lockfile to prevent two instances
# from running simultaneously (and messing up the snapshot_root).
# If you enable this, make sure the lockfile directory is not world
# writable. Otherwise anyone can prevent the program from running.
#
lockfile        /var/run/rsnapshot.pid
 
# By default, rsnapshot check lockfile, check if PID is running
# and if not, consider lockfile as stale, then start
# Enabling this stop rsnapshot if PID in lockfile is not running
#
#stop_on_stale_lockfile         0
 
# Default rsync args. All rsync commands have at least these options set.
#
#rsync_short_args       -a
#rsync_long_args        --delete --numeric-ids --relative --delete-excluded
 
# ssh has no args passed by default, but you can specify some here.
#
#ssh_args       -p 22
 
# Default arguments for the "du" program (for disk space reporting).
# The GNU version of "du" is preferred. See the man page for more details.
# If your version of "du" doesn't support the -h flag, try -k flag instead.
#
#du_args        -csh
 
# If this is enabled, rsync won't span filesystem partitions within a
# backup point. This essentially passes the -x option to rsync.
# The default is 0 (off).
#
#one_fs         0
 
# The include and exclude parameters, if enabled, simply get passed directly
# to rsync. If you have multiple include/exclude patterns, put each one on a
# separate line. Please look up the --include and --exclude options in the
# rsync man page for more details on how to specify file name patterns. 
# 
#include        ???
#include        ???
#exclude        ???
#exclude        ???
 
# The include_file and exclude_file parameters, if enabled, simply get
# passed directly to rsync. Please look up the --include-from and
# --exclude-from options in the rsync man page for more details.
#
#include_file   /path/to/include/file
#exclude_file   /path/to/exclude/file
 
# If your version of rsync supports --link-dest, consider enable this.
# This is the best way to support special files (FIFOs, etc) cross-platform.
# The default is 0 (off).
#
#link_dest      0
 
# When sync_first is enabled, it changes the default behaviour of rsnapshot.
# Normally, when rsnapshot is called with its lowest interval
# (i.e.: "rsnapshot hourly"), it will sync files AND rotate the lowest
# intervals. With sync_first enabled, "rsnapshot sync" handles the file sync,
# and all interval calls simply rotate files. See the man page for more
# details. The default is 0 (off).
#
#sync_first     0
 
# If enabled, rsnapshot will move the oldest directory for each interval
# to [interval_name].delete, then it will remove the lockfile and delete
# that directory just before it exits. The default is 0 (off).
#
#use_lazy_deletes       0
 
# Number of rsync re-tries. If you experience any network problems or
# network card issues that tend to cause ssh to crap-out with
# "Corrupted MAC on input" errors, for example, set this to a non-zero
# value to have the rsync operation re-tried
#
#rsync_numtries 0
 
# LVM parameters. Used to backup with creating lvm snapshot before backup
# and removing it after. This should ensure consistency of data in some special
# cases
#
# LVM snapshot(s) size (lvcreate --size option).
#
#linux_lvm_snapshotsize 100M
 
# Name to be used when creating the LVM logical volume snapshot(s).
#
#linux_lvm_snapshotname rsnapshot
 
# Path to the LVM Volume Groups.
#
#linux_lvm_vgpath       /dev
 
# Mount point to use to temporarily mount the snapshot(s).
#
#linux_lvm_mountpath    /path/to/mount/lvm/snapshot/during/backup
 
###############################
### BACKUP POINTS / SCRIPTS ###
###############################
 
# LOCALHOST
backup  /snapshot/data/         localhost/
backup  /etc/mysql/             localhost/
#backup /home/          localhost/
#backup /etc/           localhost/
#backup /usr/local/     localhost/
#backup /var/log/rsnapshot              localhost/
#backup /etc/passwd     localhost/
#backup /home/foo/My Documents/         localhost/
#backup /foo/bar/       localhost/      one_fs=1, rsync_short_args=-urltvpog
#backup_script  /usr/local/bin/backup_pgsql.sh  localhost/postgres/
# You must set linux_lvm_* parameters below before using lvm snapshots
#backup lvm://vg0/xen-home/     lvm-vg0/xen-home/
 
# EXAMPLE.COM
#backup_script  /bin/date "+ backup of example.com started at %c"       unused1
#backup root@example.com:/home/ example.com/    +rsync_long_args=--bwlimit=16,exclude=core
#backup root@example.com:/etc/  example.com/    exclude=mtab,exclude=core
#backup_script  ssh root@example.com "mysqldump -A > /var/db/dump/mysql.sql"    unused2
#backup root@example.com:/var/db/dump/  example.com/
#backup_script  /bin/date       "+ backup of example.com ended at %c"   unused9
 
# CVS.SOURCEFORGE.NET
#backup_script  /usr/local/bin/backup_rsnapshot_cvsroot.sh      rsnapshot.cvs.sourceforge.net/
 
# RSYNC.SAMBA.ORG
#backup rsync://rsync.samba.org/rsyncftp/       rsync.samba.org/rsyncftp/
/root/bin/rsnapshot.sh
#!/bin/bash
 
#
# MySQL-Backup mit LVM-SnapShot
#
 
#------------------------------------------------------------------------------#
#
# https://www.badllama.com/content/mysql-backups-using-lvm-snapshots
#
#------------------------------------------------------------------------------#
# LVM2, und rsnapshot muss installiert sein
# aptitude install lvm2 rsnapshot
# eine Volumengruppe muss angelegt sein,
# in der das zu sichernde Laufwerk liegt und soviel freier Platz ist,
# wie temporär für die Backup-Zeit benötigt werden.
#------------------------------------------------------------------------------#
VERSION="v2017022300"
#
# /dev/mapper/backup-backup       /var/cache/rsnapshot    ext4    errors=remount-ro 0       0
# /dev/mapper/trusty-mysqlbackup  /snapshot               ext4    errors=remount-ro 0       0
#
SNAPSHOT="/snapshot"
VolumenGruppe="trusty"
VolumenName="mysql"
#------------------------------------------------------------------------------#
 
BACKUP=Ja
umount /var/cache/rsnapshot 2>/dev/null
umount ${SNAPSHOT} 2>/dev/null
 
echo "FLUSH TABLES WITH READ LOCK;" | mysql -t || export BACKUP=Nein
echo "SHOW MASTER STATUS; SHOW SLAVE HOSTS; SHOW SLAVE STATUS \G;" | mysql -t > /var/lib/mysql/data/MASTER_STATUS.txt || export BACKUP=Nein
# modprobe dm-snapshot
lvcreate -l 100%FREE -s -n ${VolumenName}backup /dev/${VolumenGruppe}/${VolumenName} || export BACKUP=Nein
echo "UNLOCK TABLES;" | mysql -t
 
mount /dev/mapper/backup-backup       /var/cache/rsnapshot   || export BACKUP=Nein
mount /dev/${VolumenGruppe}/${VolumenName}backup ${SNAPSHOT} || export BACKUP=Nein
 
if [ "${BACKUP}" = Ja ] ; then
        #
        # Copy data to backup
        rsnapshot hourly
        #
fi
 
ls -lha /var/cache/rsnapshot/backup/
umount /var/cache/rsnapshot
umount ${SNAPSHOT}
lvremove -f /dev/${VolumenGruppe}/${VolumenName}backup
/home/http/wiki/data/pages/rsnapshot.txt · Zuletzt geändert: von manfred