备份还原是计算机术语,是为了防止因计算机故障而造成的丢失及损坏,从而在原文中独立出来单独贮存的程序或文件副本,并在需要时将已经备份的文件还原到备份。
MySQLDump (默认)
MySQL 自带的逻辑备份工具,提供了多种选项来包含或者排除数据库、选择要备份的特定数据,仅备份不包含数据的schema,或者直备份存储的例程而不包括其他东西
安装
属于MySQL 自带方法; 在MySQL 的bin 目录下; 逻辑备份都会导致数据库性能降低
使用
备份数据库
—skip-opt 关闭优化和锁表 -u 账号 -p 密码 -h 主机地址 -P 端口 -q 使用dump导出 -e 使用多重插入 -R 导出函数 存储过程 触发器 —events 导出事件 —databases 指定数据库 —lock-all-tables 锁住数据库让数据库自读(对数据库有影响) —set-gtid-purged=off 如果是GTID开启必须关闭
# 备份开始
./mysql8/bin/mysqldump --skip-opt --set-gtid-purged=off -uroot -plxsqaz123 -h 127.0.0.1 -P 3307 -q -e -R --events --databases company --lock-all-tables --flush-logs > /opt/back.sql
恢复数据库
# 导入SQL语句恢复数据
./mysql8/bin/mysql -uroot -plxsqaz123 < /opt/back.sql
MySQLPump (逻辑备份)
与MySQDump 类似,它包含并行执行和性能,更易于管理输出,正则表达式排除数据库。
安装
属于MySQL 自带方法; 在MySQL 的bin 目录下; 逻辑备份都会导致数据库性能降低
使用
备份数据库
-u 账号 -p 密码 -h 主机地址 -P 端口 —set-gtid-purged=off 如果是GTID开启必须关闭 —databases 指定数据库 —single-transaction 事务级别默认 —default-character-set 默认字符编码 —add-drop-table 输出的SQL中创建表语句前删除表 —default-parallelism=3 线程数量 -B gzip > /opt/sql.lz4 最后输出路径
# 执行命令
./mysql8/bin/mysqlpump -uroot -plxsqaz123 -h 127.0.0.1 -P 3307 --set-gtid-purged=off --databases company --single-transaction --default-character-set=utf8mb4 --add-drop-table --single-transaction 4 --default-parallelism=3 -B gzip > /opt/back_p.sql
# 如果输出如下 备份成功
# Dump completed in 7
恢复数据库
# 导入SQL语句恢复数据
./mysql8/bin/mysqlpump -uroot -plxsqaz123 < /opt/back_p.sql
XtraBackup (热备份)
XtraBackup 是有Percona公司开的开源备份软件,是一个神器。它能在不关闭服务器的情况下复制普通文件。但为了避免不一致,它会使用REDO日志文件。它非常的快。
安装
# XtraBackup 有二进制包 (≧∇≦)ノ
# 下载8.0 版本才支持8.0数据库, 本书所有内容都是MySQL 8.0
wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.22-15/binary/tarball/percona-xtrabackup-8.0.22-15-Linux-x86_64.glibc2.17.tar.gz
# 解压
tar -xvf percona-xtrabackup-8.0.22-15-Linux-x86_64.glibc2.17.tar.gz
# 重命名
mv ./percona-xtrabackup-8.0.22-15-Linux-x86_64.glibc2.17 ./xtrabackup
# 移动到自己喜欢的目录
mv ./xtrabackup /opt
使用
—host 主机地址 —user 用户名 —password 密码 —port 端口 —socket socke 文件目录 —backup 全量备份 —target-dir 输出路径 —compress 压缩备份 —compress-threads 压缩的线程 —stream 通过流压缩输出一个文件 更多的命令去官网查看
全量备份
./xtrabackup/bin/xtrabackup --host=127.0.0.1 --user=root --password=lxsqaz123 --port=3307 --socket=/opt/mysql8s/mysql.sock --backup --target-dir=/opt/xtrabackup_test --compress --compress-threads=5 --stream=xbstream|gzip > /opt/backup.xb.gz
# 只有最后返回; 表示备份完成
# xtrabackup: Transaction log of lsn (18760006) to (18766732) was copied.
# 210114 15:34:39 completed OK!
# 查看备份文件
cd /opt/xtrabackup_test
# ls
ls
# -----------------
drwxr-xr-x 6 root root 4096 Jan 14 15:34 .
drwxr-xr-x 8 root root 4096 Jan 14 15:15 ..
-rw-r----- 1 root root 475 Jan 14 15:34 backup-my.cnf
drwxr-x--- 2 root root 4096 Jan 14 15:34 company
-rw-r----- 1 root root 3636 Jan 14 15:34 ib_buffer_pool
-rw-r----- 1 root root 12582912 Jan 14 15:34 ibdata1
drwxr-x--- 2 root root 4096 Jan 14 15:34 mysql
-rw-r----- 1 root root 208 Jan 14 15:34 mysql-bin.000006
-rw-r----- 1 root root 30 Jan 14 15:34 mysql-bin.index
-rw-r----- 1 root root 25165824 Jan 14 15:34 mysql.ibd
drwxr-x--- 2 root root 4096 Jan 14 15:34 performance_schema
drwxr-x--- 2 root root 4096 Jan 14 15:34 sys
-rw-r----- 1 root root 11534336 Jan 14 15:34 undo_001
-rw-r----- 1 root root 11534336 Jan 14 15:34 undo_002
-rw-r----- 1 root root 71 Jan 14 15:34 xtrabackup_binlog_info
-rw-r----- 1 root root 95 Jan 14 15:34 xtrabackup_checkpoints
-rw-r----- 1 root root 628 Jan 14 15:34 xtrabackup_info
-rw-r----- 1 root root 9216 Jan 14 15:34 xtrabackup_logfile
-rw-r----- 1 root root 39 Jan 14 15:34 xtrabackup_tablespaces
增量备份
在完全备份中,执行两种类型的操作以使数据库保持一致: 从日志文件中对数据文件重放已提交的事务,并回滚未提交的事务。 在准备增量备份时,必须跳过未提交事务的回滚,因为备份时未提交的事务可能正在进行中,并且很可能它们将在下一次增量备份中提交。 可使用—apply-log-only 来阻止回滚阶段。
# 跳过事务的全量备份
./xtrabackup/bin/xtrabackup --host=127.0.0.1 --user=root --password=lxsqaz123 --port=3307 --socket=/opt/mysql8s/mysql.sock --apply-log-only --backup --target-dir=/opt/xtrabackup_test
# 执行增量备份
./xtrabackup/bin/xtrabackup --host=127.0.0.1 --user=root --password=lxsqaz123 --port=3307 --socket=/opt/mysql8s/mysql.sock --apply-log-only --backup --target-dir=/opt/x_incr_1 --incremental-basedir=/opt/xtrabackup_test
#合并
./xtrabackup/bin/xtrabackup --prepare --target-dir=/opt/xtrabackup_test --incremental-dir=/opt/x_incr_1
恢复数据库
恢复数据库《MySQL 云上数据库快速恢复指南》| xb.gz的情况