本文共 2750 字,大约阅读时间需要 9 分钟。
单库冷备份是一种不会创建新库而是直接备份现有数据库的方法,适合对数据完整性要求较高的场景。以下是操作步骤:
mysqldump mydb > /app/mydb.backup-$(date +%F-%H-%M-%S)
恢复单库数据时,需要新建一个数据库并将备份文件导入:
mysql testdb < /app/mydb.backup-2017-09-12-14-18-44
进入数据库后查看数据恢复情况:
use testdb;SHOW TABLES;
多库冷备份可以通过指定多个数据库名来实现,同时备份时会自动创建新库:
mysqldump --databases mydb testdb mysql > /app/mydb-testdb-mysql-backup-$(date +%F-%H-%M-%S)
恢复多库数据时,需要在远程服务器上创建相应的用户权限:
GRANT ALL ON *.* TO 'admin'@'172.16.253.105' IDENTIFIED BY 'admin';GRANT ALL ON *.* TO 'admin'@'%.danran.com' IDENTIFIED BY 'admin';FLUSH PRIVILEGES;
将备份文件导入远程服务器并验证恢复成功:
mysql -uadmin -h'172.16.253.108' -padmin < /app/mydb-testdb-mysql-backup-F-14-32-28
在进行InnoDB热备份之前,需要确保所有表已锁定:
FLUSH TABLES WITH READ LOCK;
滚动数据库日志:
FLUSH LOGS;
查看当前的二进制日志文件:
SHOW MASTER LOGS;
进行热备份:
mysqldump --single-transaction mydb > /app/mydb-backup-$(date +%F-%H-%M-%S);
恢复数据方法与单库冷备份类似。
下载并安装Xtrabackup软件包:
yum -y install percona-xtrabackup-24
创建备份存放目录并执行备份:
mkdir /mydata/xbdatainnobackupex --user=root --host=localhost /mydata/xbdata
查看备份文件中的配置信息:
less /mydata/xbdata/2017-09-12_16-45-10/backup-my.cnf
查看表空间文件:
less /mydata/xbdata/2017-09-12_16-45-10/ibdata1
查看二进制日志文件记录位置:
less /mydata/xbdata/2017-09-12_16-45-10/xtrabackup_binlog_info
恢复全量备份文件:
innobackupex --apply-log --redo-only /mydata/xbdata/2017-09-12_16-45-10/
恢复增量备份文件:
innobackupex --apply-log --redo-only /mydata/xbdata/2017-09-12_16-45-10/ --incremental-dir=/mydata/xbdata/2017-09-12_17-09-40
模拟数据库服务器损坏,所有数据文件丢失,但二进制日志文件仍然存在:
mysqlbinlog /var/lib/mysql/master-log.000006 > /app/alldatabase.binlog
恢复数据库文件:
mysql -uadmin -h172.16.253.108 -padmin < /tmp/alldatabases-backup-2017-09-12-15-07-37
进入数据库查看恢复情况:
SHOW DATABASES;use mydb;SHOW TABLES;
创建具有最小权限的备份用户:
CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 'admin';REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bkpuser'@'localhost';GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';FLUSH PRIVILEGES;
执行全量备份并验证:
innobackupex /mydata/xbdata/
执行增量备份并验证:
innobackupex --incremental /mydata/xbdata/ --incremental-basedir=/mydata/xbdata/2017-09-12_17-09-40
从二进制日志文件中恢复数据:
mysqlbinlog -j 709 /var/lib/mysql/master-log.000001 > /mydata/binlogs/2017-09-12_17-38-44-binlog
恢复数据并验证:
use mydb;SELECT * FROM students WHERE stuid=1300;SELECT * FROM teachers;
模拟服务器崩溃并恢复数据:
systemctl stop mariadbrm -rf /var/lib/mysql/*
恢复数据库文件并启动服务:
innobackupex --apply-log --redo-only /mydata/xbdata/2017-09-12_17-09-40/chown -R mysql.mysql /var/lib/mysqlsystemctl start mariadb
登录数据库验证数据恢复情况:
SHOW DATABASES;use mydb;SHOW TABLES;
转载地址:http://gkdfk.baihongyu.com/