6.备份

/var/lib/mysql

逻辑备份(备份语句)
物理备份(拷贝、镜像、文件系统备份)

提供服务时备份(热备份)
服务down掉不是服务器关闭(冷备份、离线备份)(cp、tar)
systemctl stop mysql

部分备份

全部备份

增量备份

常用工具: mysqldump(逻辑备份)、 xtrabackup(物理备份)

备份/恢复时锁表

备份恢复

在线

离线

6.备份_第1张图片

注意文件路径权限

mysqldump(逻辑备份)

进入mysql,加一个backup用户

mysql> grant select,show view,event,trigger,lock tables,process,replication client,reload on *.* to backup@'%' identified by 'QFedu123!';


修改mysqluser.db文件
[mysql]
user=root
password=QFedu123!

[mysqldump]
user=backup
password=QFedu123!







mysqldump --defaults-file=~/mysqluser.db -h 10.0.122.108 --all-databases >$(date +%FT%H_%M_%S)-dump-all.sql
//备份所有数据库


mysqldump --defaults-file=~/mysqluser.db -h10.0.122.108 --databases servers > servers.sql
//备份servers库,有创库语句,可以直接恢复

mysqldump --defaults-file=~/mysqluser.db -h10.0.122.108 servers  >  servers_all.sql
//备份servers库,没有创库语句,需要新建数据库恢复(数据可以恢复到其他库中)

[root@huangstts ~]# mysql -uroot -pQFedu123! serv < servers_all.sql
//数据恢复

备份多个数据库
mysqldump --defaults-file=~/mysqluser.db -h10.0.122.108 --databases servers1 servers2 servers3 > serverssss.sql

备份某个表
mysqldump --defaults-file=~/mysqluser.db -h10.0.122.108 datadb tb1 tb2  > table.sql

xtrabackup(物理备份)

xtrabackup全备
开始备份

shell> xtrabackup --backup --user=root --password='QFedu123!' --target-dir=/backup/full

停止mysql服务

systemctl stop mysql

删除mysql全部文件

rm -rf /var/lib/mysql/*

准备数据

xtrabackup --prepare --target-dir=/backup/full

复制

xtrabackup --copy-back --datadir=/var/lib/mysql --target-dir=/backup/full

改权限

为什么要改权限?
数据删除完又被复制过来,当前数据是root创建,mysql需要获取数据。

chown mysql.mysql -R /var/lib/mysql

启动数据库

systemctl start mysql

增量备份
全备

xtrabackup --backup --user=root --password='QFedu123!'  --target-dir=/backup/base

第一次增量备份

xtrabackup --backup --user=root --password=QFedu123! --target-dir=/backup/inc1 --incremental-basedir=/backup/base

第二次增量备份

xtrabackup --backup --user=root --password=QFedu123! --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1

准备数据------------

xtrabackup --prepare --apply-log-only --target-dir=/backup/base
xtrabackup --prepare --apply-log-only --user=root --password=QFedu123! --target-dir=/backup/base --incremental-dir=/backup/inc1
xtrabackup --prepare --user=root --password=QFedu123! --target-dir=/backup/base --incremental-dir=/backup/inc2

停止数据库的操作,删除mysql数据

systemctl stop mysqld
rm -rf /var/lib/mysql/*

恢复数据—>修改权限—>启动mysql

xtrabackup --copy-back --datadir=/var/lib/mysql --target-dir=/backup/base/
chown mysql.mysql -R /var/lib/mysql
systemctl start mysqld

你可能感兴趣的:(6.备份)