备份还原是计算机术语,是为了防止因计算机故障而造成的丢失及损坏,从而在原文中独立出来单独贮存的程序或文件副本,并在需要时将已经备份的文件还原到备份。

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开启必须关闭


  1. # 备份开始
  2. ./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的情况