首页 > 数据库 >MySQL备份与恢复(mysqldump与xtrabckup8,超详细)

MySQL备份与恢复(mysqldump与xtrabckup8,超详细)

时间:2024-12-03 16:34:07浏览次数:8  
标签:-- backup 备份 MySQL xtrabckup8 xtrabackup mysqldump mysql root

MySQL备份与恢复

mysqldump和xtrabackup是MySQL数据库中常用的两种备份工具,它们各自有不同的特点和适用场景:

  1. 备份方式
    • mysqldump:逻辑备份工具,通过生成SQL语句来备份数据库的数据和结构。
    • xtrabackup:物理备份工具,直接复制数据文件,特别适合InnoDB和XtraDB数据库的热备份。
  2. 数据保存方式
    • mysqldump:保存为SQL脚本文件,便于查看和编辑,适合数据迁移。
    • xtrabackup:保存为二进制文件,恢复速度快,但占用空间较大。
  3. 是否支持热备份
    • mysqldump:支持热备份,但备份过程中可能会锁定数据库。
    • xtrabackup:支持热备份,备份过程不会打断正在执行的事务,对正常业务影响小。
  4. 备份过程
    • mysqldump:备份过程中可能会锁表,影响数据库的正常业务。
    • xtrabackup:备份过程不锁表,对数据库业务影响较小。
  5. 备份和恢复性能
    • mysqldump:备份和恢复耗时较长,特别是对于大型数据库。
    • xtrabackup:备份和恢复速度快,适合大规模数据量的快速备份和恢复。
  6. 占用空间
    • mysqldump:生成的备份文件相对较小,占用空间小。
    • xtrabackup:因为是物理备份,可能会占用更多的磁盘空间。
  7. 适用场景
    • mysqldump:适合业务数据库相对较小,或者需要导出数据库进行数据迁移的场景。
    • xtrabackup:适合数据量较大,需要快速备份和恢复,且对业务影响尽可能小的场景。

mysqldump和xtrabackup各有优势,选择时应根据具体的业务需求和数据库环境来决定使用哪种备份工具,总的来说:为了节省空间或内存不多且数据量不大,也不怕影响业务则可使用mysqldump,空间足够,数据量大,需要不锁表建议使用xtrabackup

1.mysqldump备份工具

mkdir /opt/backup #创建目录

1.1完全备份

mysqldump -u root -p密码 --databases 数据库名 > /opt/backup/备份文件名.sql #单个数据库备份
mysqldump -u root -p密码 --databases 数据库名1 数据库名2 > /opt/backup/备份文件名.sql #多个数据库备份
mysqldump -u root -p密码 --all-databases > /opt/backup/备份文件名.sql #备份MySQL所有的库
mysqldump -u root -p密码 -d 数据库名 表名 /opt/backup/备份文件名.sql #备份数据库的表,-d表示仅备份表结构,不加-d则数据也保存

举个例子
mysqldump -u root -plmx --databases a > /opt/backup/a.sql #单个备份
mysqldump -u root -plmx --databases a b > /opt/backup/aheb.sql #多个备份
mysqldump -u root -plmx --all-databases > /opt/backup/all.sql #备份所有库
mysqldump -u root -plmx -d a t /opt/backup/a-t.sql

区别如下

cat a.sql | grep '^CREATE DATABASE' 

在这里插入图片描述

cat aheb.sql | grep '^CREATE DATABASE'

在这里插入图片描述

cat all.sql | grep '^CREATE DATABAS'

在这里插入图片描述

cat a-t.sql|grep -v "^--" | grep -v "^/" | grep -v "^$"

在这里插入图片描述

1.2完全恢复

2.1通过source命令恢复数据库

mysql -u root -plmx #登录数据库
source /opt/backup/备份文件名称 #执行脚本
show databases; #查看是否恢复

举个例子
mysqldump -u root -plmx --databases a > /opt/backup/a.sql #先备份a这个数据库
mysql> drop database a; #误删除了a这个数据库
mysql -u root -plmx #登录数据库
source /opt/backup/a.sql #执行脚本

2.2 通过命令行恢复数据库

mysql -u root -plmx < /opt/backup/备份文件名称
mysql -u root -pabc123 -e 'show databases;' #查看数据库

举个例子
mysqldump -u root -plmx --databases a > /opt/backup/a.sql #先备份a这个数据库
mysql -u root -plmx -e 'drop database a' #误删除a这个数据库
mysql -u root -plmx < /opt/backup/a.sql #执行脚本

2.3 恢复表数据

mysqldump -u root -plmx -d a t /opt/backup/a-t.sql #备份表数据
mysql -uroot -plmx -e 'drop table a.t;' #误删除表
mysql -u root -plmx  a < /opt/backup/a-t.sql #恢复表数据

1.3增量备份与恢复

是自上一次备份后增加/变化的文件或者内容

特点:恢复需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复

需要通过二进制日志间接实现增量备份

MySQL二进制日志对备份的意义

  • 二进制日志保存了所有更新或者可能更新数据库的操作
  • 二进制日志在启动MySQL服务器后开始记录,并在文件达到max_binlog_size所设置的大小或者接收到flush logs命令后重新创建新的日志文件
  • 只需定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份

3.1 开启二进制日志功能

vim /etc/my.cnf #编辑配置文件,在mysqld中添加这三行
[mysqld]
log-bin=mysql-bin 
binlog_format = MIXED #可选,指定二进制日志(binlog)的记录格式为 MIXED			
server-id = 1

#二进制日志(binlog)有3种不同的记录格式:STATEMENT(基于SQL语句)、ROW(基于行)、MIXED(混合模式),默认格式是STATEMENT

3.2 查看二进制日志目录

systemctl start mysqld #启动mysql,如果启动中,就systemctl restart mysqld
ls -l /var/lib/mysql/mysql-bin.*  #/var/lib/mysql 
#这是我的数据存放位置,个人设置的在那,就输入那个路径

3.3 通过刷新二进制日志文件间接实现增量备份

mysqladmin -uroot -plmx flush-logs #刷新之后会新增一个日志文件

在这里插入图片描述

3.4 查看二进制日志内容

cp /var/lib/mysql/mysql-bin.000001 /opt #移动到opt目录下 
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000001 
#查看二进制日志文件内容

在这里插入图片描述

3.5 创建文件夹

mkdir mysql-backup 
mkdir /mysql-backup/full  #full文件夹做完全备份
mkdir /mysql-backup/bin   #bin文件夹做增量备份
一般恢复

1.对ceshi下的a表完全备份

mysqldump -u root -plmx ceshi a > /root/mysql-backup/full/ceshi-a.sql 
mysqladmin -uroot -plmx flush-logs #生成新的二进制日志文件
ls -l /var/lib/mysql/mysql-bin.* #查看

在这里插入图片描述

2.录入新的数据,进行增量备份

mysql> insert into a values(7,7,26),(8,8,27),(9,9,28); #在mysql a表里插入数据
mysqladmin -uroot -plmx flush-logs #生成新的二进制日志文件
ls -l /var/lib/mysql/mysql-bin.* #查看
mv /var/lib/mysql/mysql-bin.000003 /root/mysql-backup/bin/zengliang
 #进行增量备份,备份的不是最新的那一个,备份的是倒数第二个

3.模拟删除库,先进行表的完全恢复

show databases;
drop database ceshi;
create database ceshi;#因为只对表做了备份,没有对库做备份,所以要先建一个数据库
show databases;
exit

#先完全恢复数据表里的初始数据
mysql -u root -plmx  ceshi < full/ceshi-a.sql
#进入数据库查看
use ceshiselect * from a;

在这里插入图片描述

4.进行增量恢复

mysqlbinlog --no-defaults /root/mysql-backup/bin/zengliang | mysql -u root -plmx #通过管道符导入的方式

在这里插入图片描述

断点恢复

查看二进制文件

mysqlbinlog --no-defaults --base64-output=decode-rows -v /root/mysql-backup/bin/zengliang #查看二进制备份文件
mysqlbinlog --no-defaults --base64-output=decode-rows -v zengliang > mysql-bin-2024-11-27 #进入bin目录重定向

在这里插入图片描述

删除id=7/8/9

mysql> delete from a where id>=7;

恢复数据

mysqlbinlog --no-defaults --start-position='319' /root/mysql-backup/bin/zengliang | mysql -u root -plmx
#基于位置恢复,也就是at项

mysqlbinlog --no-defaults --start-datetime='2024-11-27 0:33:16' \ 
--stop-datetime='2024-11-27 0:37:01' /root/mysql-backup/bin/  \
zengliang | mysql -u root -plmx
 #基于时间恢复,也就是从第一条的时间到DELIMITER上面一条的时间

#如果恢复某条SQL语句之前的所有数据,就stop在这个语句的位置节点或者时间点
#如果恢复某条SQL语句以及之后的所有数据,就从这个语句的位置节点或者时间点start

在这里插入图片描述

2.Xtrabackup备份

2.1 下载安装包

从下方链接中,可以获得 Percona 所有产品的安装包:

https://www.percona.com/downloads

在这里插入图片描述

这里可以选择 Xtrabackup 对应的系列版本。版本号规则,例如 Percona XtraBackup 8.0.26-18 的版本号定义了以下信息:

  • 基础版本 - 最左边的数字表示用作基础的 MySQL 8.0 版本。
  • 次要版本 - 表示软件版本的内部编号。
8.0.26-18
Base versionMinor build version

需要注意的是 Percona XtraBackup 编号在 8.0.14 版本之后发生了变化,以使 Percona XtraBackup 版本与 MySQL 保持一致。

所以在备份前,请确保 Percona XtraBackup 的版本等于或高于正在备份的数据库版本

2.2 二进制部署

通过WindTerm或别的工具上传安装包

[root@lmx ~]# tar -zxvf percona-xtrabackup-8.0.26-18-Linux-x86_64.glibc2.17.tar.gz #解压缩
[root@lmx ~]# mv percona-xtrabackup-8.0.26-18-Linux-x86_64.glibc2.17 /usr/local/xtrabckup-8.0.26 #移动目录
[root@lmx ~]# ln -sf /usr/local/xtrabckup-8.0.26/bin/* /usr/bin/ #配置软链接

完成以上三步就安装完成了,输入xtrabckup --version 查看版本

在这里插入图片描述

2.3 xtrabckup 程序文件介绍

重点是bin目录下的这五个文件,接下来逐一解释

在这里插入图片描述

  • xbcloud 与流式备份相结合,可将备份存储到 OSS 对象存储上。

  • xbcloud_osenv:对 xbcloud 的二次封装,

  • xbcrypt:用来加密解密。

  • xbstream:是一个用于压缩和解压缩 xtrabackup 备份的工具

  • xtrabackup:备份的主程序,备份和恢复的工具。

xtrabackup 8.0 中,innobackupex 被移除了,只使用 xtrabackup 二进制程序进行备份恢复操作,接下来都是用xtrabckup来演示

2.4 设置权限

由于Xtrabackup 备份工具,备份时用户需要有以下权限:

  1. Reload
    • 这个权限允许执行FLUSH TABLES WITH READ LOCK(FTWRL)和FLUSH NO_WRITE_TO_BINLOG TABLES等命令。FTWRL会锁定所有表以供读取,这在备份过程中是必须项,以确保数据的一致性
  2. Replication client
    • 拥有此权限可以执行SHOW MASTER STATUSSHOW SLAVE STATUS命令,这些命令用于查看主库和从库的复制状态,包括二进制日志的位置信息。这对于基于二进制日志的备份和恢复过程至关重要,必须项
  3. BACKUP_ADMIN
    • BACKUP_ADMIN权限允许执行LOCK INSTANCE FOR BACKUP命令,该命令用于在备份过程中锁定整个MySQL实例。这是MySQL版本特有的权限,用于确保备份期间数据库的一致性,必须项
  4. Process
    • 拥有Process权限可以执行SHOW ENGINE INNODB STATUSSHOW PROCESSLIST命令,这些命令提供了关于InnoDB存储引擎状态和当前数据库连接的信息,必须项
  5. SYSTEM_VARIABLES_ADMIN
    • 此权限允许设置全局系统变量,如mysqlbackup.backupid。在增量备份时,可能需要设置这样的变量来跟踪备份的ID。然而,这个权限不是Xtrabackup备份的必需权限,除非特定的备份策略需要它。
  6. SUPER
    • SUPER权限允许执行一些高级操作,如杀掉长时间运行的查询(在--kill-long-queries-timeout选项下)和重启复制(在从库备份时使用--safe-slave-backup选项)。这个权限在需要处理这些特定情况时很有用。
  7. SHOW VIEW
    • 拥有SHOW VIEW权限可以查看数据库中的视图。确定是否有非INnDB 引擎表。
  8. mysql.component 表的查询权限
    • 如果使用Page Tracking进行增量备份,Xtrabackup可能需要查询mysql.component表来获取有关服务器组件的信息。这个权限对于正确执行Page Tracking增量备份是必要的。
  9. performance_schema.xtrabackup_history 的 SELECT、INSERT、CREATE、ALTER 权限
    • 如果指定了--history选项,Xtrabackup将需要访问performance_schema.xtrabackup_history表来存储和检索备份历史信息。这些权限允许Xtrabackup创建、修改和查询这个表。

以下是mysql 8.0 以上版本的完整授权示例:

create user 'a'@'localhost' identified by 'a123456'; #创建用户并设置密码

grant Reload, Replication client, BACKUP_ADMIN, Process, LOCK TABLES on *.* to 'a'@'localhost'; 
#授予以上说的4个必备权限,加上一个LOCK TABLES 它允许用户锁定数据库中的表,以防止其他用户对这些表进行写操作

grant select on performance_schema.log_status to 'a'@'localhost';
#log_status表包含有关服务器日志状态的信息,如错误日志、查询日志、慢查询日志等的状态。

grant select on performance_schema.keyring_component_status to 'a'@'localhost';
#keyring_component_status表提供了关于服务器密钥环组件状态的信息,密钥环组件用于存储和管理加密密钥。

grant select on performance_schema.replication_group_members to 'a'@'localhost';
#replication_group_members表包含了关于MySQL Group Replication组成员的信息,这组成员是MySQL的一个高可用性和数据复制功能。

# performance_schema是MySQL的一个内置数据库,它提供了服务器运行时性能数据的访问这些性能数据包括各种内部指标,如锁等待、线程状态、事件等待等,以及关于服务器组件(如密钥环组件)和复制组成员的信息。

2.5 本地全量备份

mkdir -p /mysql-backup/full #创建备份存放目录

xtrabackup --backup --slave-info -u root -plmx --parallel=5 -S /var/lib/mysql/mysql.sock --target-dir=/root/mysql-backup/full/bakup_`date +"%F_%H_%M_%S"` 2>/tmp/xtrabackup.log

参数解释:

  • –backup:发起全量备份。
  • -S 指定sock文件
  • -u, -H, -P, -p:连接 mysql 实例,用户名、主机 IP、端口、密码。
  • –slave-info:记录 slave 复制位点信息,一般备份从库需要指定该参数。
  • –target-dir:备份文件的存放路径。
  • –parallel:并发拷贝的线程数。
  • 2>/tmp/xtrabackup.log:将备份过程中的日志重定向到 /tmp/xtrabackup.log 文件中。

最后备份完成会出现 completed OK!

在这里插入图片描述

备份完成之后除了有数据库还有其他文件

在这里插入图片描述

  • backup-my.cnf:记录了一些 Innodb 引擎的参数,会在 Prepare 阶段用到。
  • xtrabackup_logfile:保存拷贝的 redo log。
  • xtrabackup_binlog_info:使用该备份恢复后,需要从该 binlog 位点进行增量恢复。
  • xtrabackup_slave_info:如果是对从库进行备份,指定 --slave-info 该文件会记录主节点的位点信息,取自 SHOW SLAVE STATUS 中的 Relay_Master_Log_FileExec_Master_Log_Pos。如果是给主库备份,该文件为空。
  • xtrabackup_checkpoints:该文件记录了备份类型和 LSN 信息。
  • xtrabackup_info:该文件中,记录备份的详细信息。
  • xtrabackup_tablespaces:记录备份集中表空间的信息。

2.6 本地压缩备份

xtrabackup --backup --slave-info -u root -plmx --parallel=5 --compress \
 -S /var/lib/mysql/mysql.sock --target-dir=/root/mysql-backup/full/bakup_`date +"%F_%H_%M_%S"`

除了添加一个--compress参数以外都一致,成功之后也会出现completed OK!

Xtrabackup 8.0 支持两种压缩算法 zstd(默认) 和 lz4 算法,在准备恢复阶段之前,必须要先进行解压

xtrabackup --decompress --target-dir=/root/mysql-backup/full/bakup_2024-11-30_18_29_46

使用--decompress解压,成功后也会出现completed OK!

如果出现以下错误,提示没有安装qpress安装包,直接wegt下载就行了

wget http://www.quicklz.com/qpress-11-linux-x64.tar

在这里插入图片描述

如果只是本地自己试验玩一玩请参考博主 薄群洋Drew的文章本地安装

https://blog.csdn.net/gitblog_09799/article/details/143074217?fromshare=blogdetail&sharetype=blogdetail&sharerId=143074217&sharerefer=PC&sharesource=2301_80479959&sharefrom=from_link

2.7 全量流式备份

流式备份指将备份数据通过流的方式输出到 STDOUT,而不是备份文件中。结合管道,可将多个功能组合在一起,如压缩、加密、流控等,在xtrabackup 8.0 中,仅支持 xbstream 流格式。

gzip 本地压缩备份

xtrabackup --backup -u root -plmx -S /var/lib/mysql/mysql.sock \
--stream=xbstream --target-dir=/root/mysql-backup/full/backup_`date +"%F_%H_%M_%S"`  \
| gzip - > /root/mysql-backup/full/backup1.gz

除了添加`--stream=xbstream`参数,其他参数都一致,成功后也会出现completed OK!

恢复时需要先使用 gunzip 解压,再使用 xbstream 解压,才能进行 Prepare 阶段。

# gzip 解压
gunzip backup1.gz 

# xbstream 解压,将当前目录下的 ./backup1解压到 /root/mysql-backup/full/ 里面
xbstream -x -C /root/mysql-backup/full/ < ./backup1

2.8 全量备份恢复数据

模拟误删数据库

show databases;#查看数据库
+--------------------+
| Database           |
+--------------------+
| agan               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

drop database agan;#删除数据库
Query OK, 1 row affected (0.04 sec)

show databases;#再次查看
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

systemctl stop mysqld #停止数据库
mkdir -p /tmp/shujuku #创建目录
mv /var/lib/mysql/* /tmp/shujuku/
#恢复实例的数据目录必须为空,所以在恢复前,我们需要清空 MySQL 数据目录,或者将其 mv 备份
ll /var/lib/mysql #确定清空,清空会显示‘总用量 0’

检查数据一致性

xtrabackup --prepare --target-dir=/root/mysql-backup/full/bakup_2024-12-03_18_14_44  -u root -plmx 
#成功后会出现completed OK!

恢复数据

xtrabackup --copy-back --target-dir=/root/mysql-backup/full/bakup_2024-12-03_18_14_44 -u root -plmx
#成功后会出现completed OK!命令中 --copy-back 表示将备份数据文件拷贝到 MySQL 数据目录下。如果在存储空间不足的情况下,可以使用 --move-back 表示移动备份文件。

修改文件主属性

ll /var/lib/mysql #由于恢复之后是root用户和组,需要修改权限

在这里插入图片描述

chown -R mysql:mysql /var/lib/mysql
#修改权限为mysql用户和组

ll /var/lib/mysql #再次查看

在这里插入图片描述

验证数据是否恢复

systemctl start mysqld #启动mysql
mysql -u root -plmx #登录mysql
show databases; #查看数据库
+--------------------+
| Database           |
+--------------------+
| agan               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

select * from t_agan; #查看表内容
+----+-----------+------+
| id | name      | age  |
+----+-----------+------+
|  1 | 孟波      | 20   |
|  2 | 周扒皮    | 25   |
|  3 | 爱博      | 23   |
|  4 | 小玉      | 19   |
+----+-----------+------+

2.9 增量备份与恢复

在全量备份的基础上备份增量备份。(全量备份:mysql-backup/full/bakup_2024-12-03_18_14_44)

ls -l /root/mysql-backup/full/
总用量 4
drwxr-x---. 7 root root 4096 12月  3 22:39 bakup_2024-12-03_18_14_44

模拟增加数据

create database test #创建数据库

mysql> create table t_test(
    -> id int not null primary key auto_increment,
    -> name varchar(50) not null,
    -> age char(8))charset utf8mb4;
Query OK, 0 rows affected (0.00 sec) #创建表

mysql> insert test.t_test(name,age) values('阿',20),('王五',25),('张学友',25),('爱 德华',23);
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0 #插入数据

mysql> select * from t_test;
+----+-----------+------+
| id | name      | age  |
+----+-----------+------+
|  1 | 阿        | 20   |
|  2 | 王五      | 25   |
|  3 | 张学友    | 25   |
|  4 | 爱德华    | 23   |
+----+-----------+------+
4 rows in set (0.00 sec) #查看数据

第一次备份

xtrabackup --backup --target-dir=/root/mysql-backup/bin/backup_`date +"%F_%H_%M_%S"` \
--incremental-basedir=/root/mysql-backup/full/bakup_2024-12-03_18_14_44  \
--datadir=/var/lib/mysql/  -u root  -plmx -S /var/lib/mysql/mysql.sock

#新增参数:--incremental-basedir #指定全备的目录   --datadir  #指定mysql数据库存放的路径 
#成功会出现completed OK!

模拟第二次增加数据

show databases;
+--------------------+
| Database           |
+--------------------+
| agan               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

create database tom;#创建数据库

mysql> create table tom.t_test(
    -> id int not null primary key auto_increment,
    -> name varchar(50) not null,
    -> age char(8))charset utf8mb4; #创建表

insert tom.t_test(name,age) values('杰克',20),('路飞',25),('索隆',23),('娜美',19); #插入数据

select * from t_test; #查看数据
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | 杰克   | 20   |
|  2 | 路飞   | 25   |
|  3 | 索隆   | 23   |
|  4 | 娜美   | 19   |
+----+--------+------+

第二次增量备份

xtrabackup --backup --target-dir=/root/mysql-backup/bin/backup2 \
--incremental-basedir=/root/mysql-backup/bin/backup1 --datadir=/var/lib/mysql \
-S /var/lib/mysql/mysql.sock -u root -plmx
#成功会出现completed OK!

[root@lmx bin]# ll 
总用量 8
drwxr-x---. 7 root root 4096 12月  3 23:22 backup1 #第一次增量备份
drwxr-x---. 8 root root 4096 12月  3 23:37 backup2 #第二次增量备份

[root@lmx full]# ll
总用量 4
drwxr-x---. 7 root root 4096 12月  3 22:39 bakup_2024-12-03_18_14_44 #全量备份

误删除数据

drop database tom;
drop database test;
show databases;
+--------------------+
| Database           |
+--------------------+
| agan               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

恢复数据为一致性

第一次恢复
xtrabackup --prepare --apply-log-only --target-dir=/root/mysql-backup/full/bakup_2024-12-03_18_14_44

第二次恢复
xtrabackup --prepare --apply-log-only --target-dir=/root/mysql-backup/full/bakup_2024-12-03_18_14_44 --incremental-dir=/root/mysql-backup/bin/backup1

最后一次恢复,不用加--apply-log-only
xtrabackup --prepare --target-dir=/root/mysql-backup/full/bakup_2024-12-03_18_14_44 --incremental-dir=/root/mysql-backup/bin/backup2

systemctl stop mysqld #停止数据库
mkdir -p /tmp/shujuku1 #创建目录
mv /var/lib/mysql/* /tmp/shujuku1/
#恢复实例的数据目录必须为空,所以在恢复前,我们需要清空 MySQL 数据目录,或者将其 mv 备份
ll /var/lib/mysql #确定清空,清空会显示‘总用量 0’

在这里插入图片描述

恢复数据

xtrabackup --copy-back --target-dir=/root/mysql-backup/full/bakup_2024-12-03_18_14_44 --user=root --password=lmx

chown -R mysql:mysql /var/lib/mysql
#由于恢复后是root用户权限,需要修改权限为mysql用户和组

报错信息:找不到sock文件

4)

检查/etc/my.cnf sock没有错的话,指定一下sock文件就解决了

xtrabackup --backup --slave-info -u root -plmx --parallel=5 -S /var/lib/mysql/mysql.sock --target-dir=/root/mysql-backup/full/bakup_`date +"%F_%H_%M_%S"` 2>/tmp/xtrabackup.log

标签:--,backup,备份,MySQL,xtrabckup8,xtrabackup,mysqldump,mysql,root
From: https://blog.csdn.net/2301_80479959/article/details/144217534

相关文章

  • ubuntu 安装mysql
     这里ubuntu版本20.04,默认安装#1、更新安装包管理工具sudoapt-getupdate#2、安装mysql数据库,过程中的选项选择ysudoapt-getinstallmysql-server 默认安装完成后自动启动了,没有启动 可以使用下面命令#启动mysql命令如下(停止mysql的命令为:sudoservicemysq......
  • 本地安装Mysql数据库
    参考连接:https://blog.csdn.net/weixin_72046282/article/details/143754166下载解压后,将bin目录,配置到path环境变量。根目录下新建my.ini文件my.ini文件配置[mysql]#设置mysql客户端默认字符集default-character-set=utf8[mysqld]#设置3306端口port=3306#设置my......
  • 【Mysql 数据库 undo log 文件无限膨胀,性能下降问题解决方案】
    数据库undolog文件无限膨胀,性能下降问题解决方案1.问题描述在Mysql数据目录中发现有个undo文件非常大,并且持续增长并且Historylistlength非常大------------TRANSACTIONS------------Trxidcounter3569860310Purgedonefortrx'sn:o<3185146100......
  • mysql的information_schema数据库包含的表
    1.information_schema 数据库的系统表系统表说明schemata存储数据库的信息,包括名称、字符集、排序规则。tables提供数据库中各个表的信息,包括表类型(如BASETABLE、VIEW)、存储引擎、行格式、行数、创建时间等信息。columns存储关于每个表的列的信息,包括列名、数......
  • Mysql如何实现原子性(MVCC实现原理)
    Mysql如何实现原子性(MVCC实现原理)Mysql实现原子性主要通过一下机制锁MVCC多版本并发控制MVCC的实现原理在介绍MVCC的实现原理之前需要先介绍一下Mysql表中的隐藏字段,以及undo_log版本链以及readview1.Mysql中的隐藏字段Mysql在创建表的时候除了我们所定义的字段......
  • mySQL数据库自动完整备份 centos
    1#!/bin/bash2#远程地址3dbhost='localhost'4#端口5dbport='3308'6#需要备份的数据库,多个数据库用空格分开7dbnames=("db1""db2""db3""dd4dd5")8#用户名9username='root'10#密码11password=......
  • python 创建mysql数据库脚(执行sql)脚本代码
    安装依赖库mysql-connector-pythonpipinstallmysql-connector-python执行创建数据库的sql脚本代码importmysql.connectorfrommysql.connectorimportErrordefcreate_database(db_name,host_name="192.168.0.33",user_name="root",user_password="SHU......
  • CentOS 7 上安装 MySQL 8步骤:
    二、安装MySQL1.下载MySQL安装包官网下载:访问MySQL官网下载所需版本。使用wget下载:wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.30-el7-x86_64.tar2.解压安装包进入安装目录:cd/usr/local/解压安装包:tar-xvfmysql-8.0.3......
  • Y20030041 java+mysql基于微信小程序的阅读器的设计与实现 源代码 配置 文档
    基于微信小程序的阅读器1.项目描述2.目的和意义3.项目功能结构4.界面展示5.源码获取1.项目描述当计算机在人们生活的各个领域迅速曼延之时,人们获取信息的方式也更加的直接迅速,网络化使信息领域变得更为广泛,在也没有了时间和空间的限制。人们获取信息大部分是通过网......
  • Y20030035 基于微信小程序+Java+SpringBoot+vue+maven+mysql+的车位租赁管理系统设计
    车位租赁管理系统1.项目描概述2.开发的背景与意义3.功能结构4.界面展示5.源码获取1.项目描概述在移动互联网的迅速发展推进下,微信成了人们生活中不可缺少的一款信息交流和沟通平台。而微信小程序的推出,便得现在人们在日常生活中更多的是通过手机微信平台进行安装各......