Linux学习20190320
使用xtrabackup备份数据库
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-03-18
mariabackup --defaults-file=/etc/my.cnf --backup --user=root --password=jerry-linux --target-dir /data/backup/2019-03-18
全量恢复:
停止数据库
/etc/init.d/mysqld stop
清空datadir
mv /data/mysql /data/mysql.1
mariabackup --prepare --target-dir /data/backup/2019-03-18/
mariabackup --copy-back --target-dir /data/backup/2019-03-18/
改属主、属组
chown mysql:mysql -R /data/mysql
启动
/etc/init.d/mysqld start
5.58-使用xtrabackup备份数据库3
增量备份:
先删除blog库
mysql -uroot -pjerry-linux -e “drop database blog”
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
incremental-basedir 指定基于谁进行备份
mariabackup --backup --user=root --password=jerry-linux --target-dir /data/backup/2019-03-18_inc1 --incremental-basedir /data/backup/2019-03-18
创建一个新的数据库db1,导入post.sql
mysql -uroot -pjerry-linux -e “create database db1”
mysql -uroot -pjerry-linux db1 < /root/post.sql
第二个增量:mariabackup --backup --user=xxx --password=xxx --target-dir /data/backup/2019-02-21_inc2 --incremental-basedir /data/backup/2019-02-21_inc1
mariabackup --backup --user=root --password=jerry-linux --target-dir /data/backup/2019-03-18_inc2 --incremental-basedir /data/backup/2019-03-18_inc1
增量恢复:
关闭数据库
/etc/init.d/mysqld stop
删除数据库
rm -rf /data/mysql/*
先准备全备
mariabackup --prepare --target-dir /data/backup/2019-03-18 --apply-log-only
准备第一个增量:
cd /data/backup
mariabackup --prepare --target-dir ./2019-03-18 --incremental-dir ./2019-03-18_inc1 --apply-log-only
准备第二个增量:
mariabackup --prepare --target-dir ./2019-03-18 --incremental-dir ./2019-03-18_inc2 --apply-log-only
恢复:
mariabackup --copy-back --target-dir ./2019-03-18
修改属组属主
chown -R mysql:mysql /data/mysql
启动服务
/etc/init.d/mysqld start
查看数据库
mysql -uroot -pjerry-linux db1 -e “show create table pre_forum_post\G”
再学任务计划
#!/bin/bash
bakdir=/data/backup
d=date +%F
for db in bbs blog db1
do
mysqldump -uroot -jerry-linux $db > b a k d i r / bakdir/ bakdir/db_$d.sql
done
cd $bakdir
gzip *_$d.sql
find ./ -name “*.gz” -mtime +30 |xargs rm 设置保存一个月 xargs会认为处理的对象是文件
sh /usr/local/sbin/mysqlbak.sh
crontab -e
30 3 * * * /bin/bash /usr/local/sbin/mysqlbak.sh &> /tmp/mysqlbak.log
把正确和错误的输出到Mysqlbak.log中
&> /tmp/mysqlbak.log == > /tmp/mysqlbak.log 2>/tmp/mysqlbak.log