准备环境 编辑/etc/my.cnf,再[mysqld]板块添加如下,重启服务
[mysqld] datadir=/usr/local /mysql/data port=3306 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES socket=/tmp/mysql.sock symbolic-links=0 max_connections=400 innodb_file_per_table=1 lower_case_table_names=1 log -bin=mysql-binserver-id=1 max_binlog_size=1G max_binlog_cache_size=1M expire_logs_days=7
创建用户并且授权 create user 'back' @'localhost' identified by 'tang1611' ; grant reload,lock tables,replication client,create tablespace,process,super on *.* to 'back' @'localhost' ; grant create,insert,select on percona_schema.* to 'back' @'localhost' ; use mysql; update user set user.Host='%' where user.User='back' ; flush privileges;
安装innobackupex yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL libev-devel wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm yum -y install percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm
innobackupex全备份 mkdir -p /root/bin mkdir -p /bak/mysql-xback
编写脚本 vim /root/bin/mybak-all.sh
#!/bin/bash backup_dir="/bak/mysql-xback" [[ -d $backup_dir ]] || mkdir -p $backup_dir if [[ -d $backup_dir /all-backup ]];then echo "全备份已经存在" exit 1 fi innobackupex --defaults-file=/etc/my.cnf --user=back --password='tang1611' --no-timestamp $backup_dir /all-backup &> /tmp/mysql-backup.log tail -n 1 /tmp/mysql-backup.log | grep 'completed OK!' if [[ $? -eq 0 ]];then echo "备份成功" echo "all-backup" > /tmp/mysql-backup.txt else echo "备份失败" exit 1 fi
innobackupex增量备份 编写脚本 vim /root/bin/mybak-section.sh
#!/bin/bash backup_dir="/bak/mysql-xback" old_dir=`cat /tmp/mysql-backup.txt` new_dir=`date +%F-%H-%M-%S` if [[ ! -d ${backup_dir} /all-backup ]];then echo "还没有全备份,请先进行全备份!" exit 1 fi tail -n 1 /tmp/mysql-backup.log | grep 'completed OK!' if [[ $? -eq 0 ]];then echo "${new_dir} " > /tmp/mysql-backup.txt else echo "备份失败" exit 1 fi
恢复 innobackupex --apply-log --redo-only /usr/local /back/mysql/all/2020-03-16_11-38-50 innobackupex --apply-log --redo-only /usr/local /back/mysql/all/2020-03-16_11-38-50 --incremental-dir=//usr/local /back/mysql/increment/2020-03-16_11-40-50 innobackupex --apply-log --redo-only /usr/local /back/mysql/all/2020-03-16_11-38-50 --incremental-dir=//usr/local /back/mysql/increment/2020-03-16_11-45-30 innobackupex --copy-back /usr/local /back/mysql/all/2020-03-16_11-38-50