XtraBackUp 全量备份
准备
环境
MySQL 版本: 8.0.23
xtrabackup: 8.0.23-16
sysbench: 1.0.20
系统: Ubuntu Server 20.4
用户
创建 MySQL 用户, 用于备份数据
CREATE USER 'db_test'@'%' IDENTIFIED WITH mysql_native_password BY '111111';
grant all privileges on *.* TO 'db_test'@'%' WITH GRANT OPTION;
Linux 用户: root
注: 为了不必要的权限问题, Linux 直接使用 root 用户, MySQL 用户直接分配了所有权限
开始
生成测试数据
生成测试数据前要先创建数据库
create database db_50_10;
生成测试数据(96s)
sysbench /usr/share/sysbench/oltp_insert.lua \
--threads=48 \
--table-size=500000 \
--tables=10 \
--mysql-db=db_50_10 \
--mysql-user=db_test \
--mysql-password=111111 \
--mysql-socket=/var/run/mysqld/mysqld.sock \
prepare
为了体现 XtrabackUp 性能, 查询下数据大小(1.0363G)
select count(TABLE_NAME) as table_num, concat(format(sum(DATA_LENGTH)/1024/1024/1024, 4), 'G') as total_size from information_schema.tables where table_schema="db_50_10";
全量备份
准备备份目录
mkdir /data/mysql/backup -p
备份(7s)
xtrabackup \
--user=db_test \
--password=111111 \
--backup \
--target-dir=/data/mysql/backup/20210526000918
准备备份数据
恢复数据前, 要先准备数据
准备备份(2s)
xtrabackup \
--user=db_test \
--password=111111 \
--prepare \
--target-dir=/data/mysql/backup/20210526000918
恢复备份数据
恢复数据前, 需要先清空数据目录, 否则会得到错误:
Original data directory /var/lib/mysql is not empty!
恢复数据(4s)
xtrabackup \
--user=db_test \
--password=111111 \
--copy-back \
--target-dir=/data/mysql/backup/20210526000918/
数据恢复之后, 要修改MySQL数据目录权限
chown -R mysql:mysql /var/lib/mysql
数据对比
字段 | 数据 | 数据 |
---|---|---|
表 | 10(个) | 100(个) |
单表数据 | 50万 | 50万 |
生成数据耗时 | 96s | 1182s |
数据大小 | 1.0363G | 10.4193G |
备份数据耗时 | 7s | 68s |
准备备份数据耗时 | 2s | 3s |
恢复数据耗时 | 4s | 55s |