阿铭Linux_网站维护学习笔记201903020

监控客户机.md

xtrabackup教程

增量备份:
innobackupex --host=10.100.100.100 --port=3333 --user=bakuser --password=your_pass
–incremental /data/backup/mysql --incremental-basedir=/data/backup/mysql/last-backup-file

说明:
–incremental :表示本次备份是一个增量备份(若针对的上次备份为一个全量备份,这里也可以认为是个差量备份)
–incremental-basedir:指定本次增量备份针对的哪一个备份(可以是上个增量,也可以是上个全量)
增量备份可以一环扣一环,比如可以周一做一个全量备份,然后周二做周一的增量,周三做周二的增量。。。

恢复:
1)全量备份的恢复
预备恢复:innobackupex --apply-log /PATH/TO/BACKUP/dir-quan --user-memroy=2G
停止MySQL/MariaDB,将datadir目录里面的数据清空(或者挪走)
恢复:innobackupex --defaults-file=/etc/my.cnf --copy-back /PATH/TO/BACKUP/dir-quan
改权限:chown -R mysql:mysql /PATH/TO/datadir
启动MySQL/MariaDB

说明:
–apply-log:指定全备文件路径
–use-memory=N:指定恢复数据时,使用内存大小,默认为100M,若备份数据量大且有足够的空闲内存时,
可以用来指定大小的内存来工作,单位可以使用G,M…。
–defaults-file: 指定配置文件路径,通过配置文件它会找到datadir在哪里

2)增量备份的恢复
停止服务
删除dataidir里面的数据
准备全量:
innobackupex --apply-log --redo-only /PATH/TO/全量备份目录
准备增量1:
innobackupex --apply-log --redo-only /PATH/TO/全量备份目录 --incremental-dir=/PATH/TO/第一次增量备份目录
准备增量2:
innobackupex --apply-log --redo-only /PATH/TO/全量备份目录 --incremental-dir=/PATH/TO/第二次增量备份目录

准备最后一个增量:
innobackupex --apply-log /PATH/TO/全量备份目录 --incremental-dir=/PATH/TO/最后一次增量备份目录
再次准备全量:
innobackupex --apply-log /PATH/TO/全量备份目录 #(这次不用加–redo-only了)

恢复:
innobackupex --copy-back /PATH/TO/全量备份目录
改权限:chown -R mysql:mysql /PATH/TO/datadir
启动MySQL/MariaDB

说明:–redo-only:表示进行准备(应用日志)工作时,只进行redo操作,只会重做已提交但未应用的事务,
不会回滚未提交的事务。原因是后面还有个增量备份,未提交的可能在后面增量备份时进行提交。
需要注意的是,最后一个增量备份不需要加这个选型。

MariaDB新版本(10.3.x+)的备份和恢复

MariaDB10.3.x及以上的版本用Percona XtraBackup工具会有问题。
原因可能是MariaDB10.3以上版本的redo日志格式和之前不同了。
解决方案是,使用mariabackup,它是MariaDB提供的一个开源工具,用于对InnoDB,Aria和MyISAM表进行物理在线备份。
这个工具是基于Percona的XtraBackup(版本2.3.8)的解决方案:

全量备份:
mariabackup --defaults-file=/etc/my.cnf --backup --user=xxx --password=xxx --target-dir /data/backup/2019-02-21

全量恢复:
停止数据库
清空datadir
mariabackup --prepare --target-dir /data/backup/2019-02-21/
mariabackup --copy-back --target-dir /data/backup/2019-02-21/
改属主、属组
启动
阿铭Linux_网站维护学习笔记201903020
增量备份:
mariabackup --defaults-file=/etc/my.cnf --backup --user=xxx --password=xxx --target-dir /data/backup/2019-02-21
第一个增量:mariabackup --backup --user=xxx --password=xxx --target-dir /data/backup/2019-02-21_inc1 --incremental-basedir /data/backup/2019-02-21
第二个增量:mariabackup --backup --user=xxx --password=xxx --target-dir /data/backup/2019-02-21_inc2 --incremental-basedir /data/backup/2019-02-21_inc1

增量恢复:
先准备全备
mariabackup --prepare --target-dir /data/backup/2019-02-21 --apply-log-only
准备第一个增量:
cd /data/backup
mariabackup --prepare --target-dir ./2019-02-21 --incremental-dir ./2019-02-21_inc1 --apply-log-only
准备第二个增量:
mariabackup --prepare --target-dir ./2019-02-21 --incremental-dir ./2019-02-21_inc2 --apply-log-only
恢复:
mariabackup --copy-back --target-dir ./2019-02-21

改属主、属组
启动数据库

计划任务

备份脚本

#!/bin/bash 
bakdir=/data/backup
d=`date +%F`

for db in bbs blog db2
do
    mysqldump -uroot -paminglinux $db > $bakdir/$db\_$d.sql
done

cd $bakdir
gzip *_$d.sql
find ./ -name "*.gz" -mtime +30 |xargs rm   #超过30天的备份删除

阿铭Linux_网站维护学习笔记201903020
阿铭Linux_网站维护学习笔记201903020正确的日志写到log 2,错误的日志写到log

;