使用Mysqldump和Xtrabackup两种方式并发备份数据库
发布网友
发布时间:2024-09-17 01:55
我来回答
共1个回答
热心网友
时间:2024-10-17 17:23
参考链接如下:
(1) xtrabackup下载参考链接
(2) Mysql5.7安装参考链接
(3) Mysql5.7版本下载参考链接
主要以Shell方式在Centos7.9操作系统上编写脚本。脚本大概思路是分别采用mysqlmp和xtrabackup方式进行并发数据库备份,其中xtrabackup方式备份相对于mysqlmp备份快一些。其中因环境差异问题,这里Mysqlmp并发备份环境为mysql5.6;Xtrabackup并发备份环境为mysql5.7,这里可以选择mysql5.7作为通用环境。
二、脚本思路2.1 Mysqlmp并发备份
1.定义登录用户、密码、备份目录为相关变量
2.提取所有库,并使用for循环语句结合Mysqlmp进行备份
3.把临时备份文件压缩成tar.gz结尾的文件
4.删除临时备份文件
2.2 Xtrabackup并发备份
1.定义登录用户、密码、备份目录为相关变量
2.提取所有库,并使用for循环语句结合Xtrabackup进行备份
3.把备份情况及备份时间输出到一个指定文件
三、准备工作3.1 安装mysql5.7
1.卸载mariadb
(1)检查系统是否已安装Mysql。返回值为空,代表没有安装Mysql。
(2)执行rpm -qa | grep mariadb命令查看Centos7默认安装数据库mariadb。
(3)执行rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64命令卸载默认数据库mariadb
(4)再次执行rpm -qa | grep mariadb命令查看Centos7默认安装数据库mariadb是否卸载掉,这里观察到卸载完成。
2.检查系统是否安装过mysql
(1)检查系统是否安装过mysql
(2)检查安装mysql路径
(3)删除mysql路径
3.检查有无创建mysql 用户组
(1)查看有无创建mysql 用户组
(2)若没创建,进行创建
4.下载5.7.24压缩包
5.解压5.7.24压缩包
6.为了方便输入,将解压后的包名修改为mysql5.7
7.更改mysql5.7 目录下所有文件夹所属的用户组、用户以及权限
8.编译安装并初始化mysql,此时会产生一个初始登录密码,这里为DuXLp5N=;3D?
9.编写etc目录下的my.cnf 配置文件,并添加配置。默认是不存在的。
10.修改/opt/mysql5.7/support-files/mysql.server为/opt/mysql5.7安装目录
11.启动mysql
(1)启动mysql
(2)添加软链接
(3)重启mysql
12.mysql操作
(1)登录mysql,这里的密码就是上面初始mysql产生的密码
(2)设置登录密码
13.开放远程连接
(1)切换mysql库
(2)授予 MySQL 数据库的 root 用户远程访问权限的情况下非常有用。默认情况下,MySQL 仅允许来自本地主机的连接,因此将 Host 值更改为 '%' 允许 root 用户从任何位置连接。
(3)刷新权限
14.设置开机自启
(1)拷贝服务文件到/etc/init.d/下,并重命名为mysqld
(2)赋予可执行权限
(3)添加服务
(4)显示服务列表
15.安装完成后,创建库test
3.2 二进制安装Xtrabackup
1.下载压缩包
2.在/opt目录下解压压缩包
3.将上面解压的目录移动到/usr/local/下,并更名为xtrabackup
4.添加环境变量
5.重新加载/etc/profile
6.安装验证
3.3 安装依赖
1.安装perl-Digest-MD5依赖
如果不安装以上依赖,会发生以下报错
四、脚本编写4.1 Shell脚本4.1.1 Mysqlmp并发备份
1.编写shell脚本
上面mysqlmp参数说明如下:
上面split参数说明如下:
上面tar参数说明如下:
上面代码详细分析:
(1)定义备份文件名前缀,并将当前工作目录切换到备份目录。这段代码使用date命令生成一个以当前时间为前缀的备份文件名,并将备份目录切换为/data/mysql,如果该目录不存在则创建。
(2)获取需要备份的数据库列表。
(3)遍历数据库列表,使用mysqlmp备份并分片。使用for循环遍历所有需要备份的数据库,使用mysqlmp命令备份数据库,并通过split命令将备份结果分片,并以数据库名作为备份文件名的一部分。备份过程中使用&将任务放到后台并发执行。
(4)等待所有备份任务完成。
(5)打包备份文件并清理临时文件。使用tar命令将所有备份文件打包成一个压缩文件,并通过rm命令清理所有临时备份文件。
2.添加定时任务,每天凌晨1点定时执行脚本
3.结果验证
4.结果解压再次验证
4.1.2 Xtrabackup并发备份
1.编写shell脚本
上面xtrabackup参数说明如下:
上面代码详细分析:
(1)指定设置备份参数的变量。其中,MYSQL_USER 和 MYSQL_PASSWORD 是用于连接到 MySQL 服务器的凭据。BACKUP_DIR 是备份文件存储目录,THREADS 是用于备份的线程数。
(2)使用mysql 命令连接到 MySQL 服务器,并运行 SHOW DATABASES; 命令来获取所有数据库的列表。然后,使用 grep 命令过滤掉系统数据库,如 Database、information_schema 和 performance_schema。最后,将结果赋值给 DATABASES 变量。
(3)遍历所有数据库,对每个数据库进行备份。在循环内部,首先根据数据库名称创建备份目录。然后,使用xtrabackup 命令进行备份。该命令将备份所有数据库,并将备份文件存储在 TARGET_DIR 目录中。备份过程中会使用 MYSQL_USER 和 MYSQL_PASSWORD 变量来连接到 MySQL 服务器。--parallel=$THREADS 参数指定备份使用的线程数。最后,将备份完成的消息写入 description.txt 文件中。
2.添加定时任务,每天凌晨1点定时执行脚本
3.结果验证,这里只拿test1,其他类似。
上面文件说明如下:
五、排错总结5.1 报错一
1.执行service mysql restart命令报错
2.报错处理
热心网友
时间:2024-10-17 17:23
参考链接如下:
(1) xtrabackup下载参考链接
(2) Mysql5.7安装参考链接
(3) Mysql5.7版本下载参考链接
主要以Shell方式在Centos7.9操作系统上编写脚本。脚本大概思路是分别采用mysqlmp和xtrabackup方式进行并发数据库备份,其中xtrabackup方式备份相对于mysqlmp备份快一些。其中因环境差异问题,这里Mysqlmp并发备份环境为mysql5.6;Xtrabackup并发备份环境为mysql5.7,这里可以选择mysql5.7作为通用环境。
二、脚本思路2.1 Mysqlmp并发备份
1.定义登录用户、密码、备份目录为相关变量
2.提取所有库,并使用for循环语句结合Mysqlmp进行备份
3.把临时备份文件压缩成tar.gz结尾的文件
4.删除临时备份文件
2.2 Xtrabackup并发备份
1.定义登录用户、密码、备份目录为相关变量
2.提取所有库,并使用for循环语句结合Xtrabackup进行备份
3.把备份情况及备份时间输出到一个指定文件
三、准备工作3.1 安装mysql5.7
1.卸载mariadb
(1)检查系统是否已安装Mysql。返回值为空,代表没有安装Mysql。
(2)执行rpm -qa | grep mariadb命令查看Centos7默认安装数据库mariadb。
(3)执行rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64命令卸载默认数据库mariadb
(4)再次执行rpm -qa | grep mariadb命令查看Centos7默认安装数据库mariadb是否卸载掉,这里观察到卸载完成。
2.检查系统是否安装过mysql
(1)检查系统是否安装过mysql
(2)检查安装mysql路径
(3)删除mysql路径
3.检查有无创建mysql 用户组
(1)查看有无创建mysql 用户组
(2)若没创建,进行创建
4.下载5.7.24压缩包
5.解压5.7.24压缩包
6.为了方便输入,将解压后的包名修改为mysql5.7
7.更改mysql5.7 目录下所有文件夹所属的用户组、用户以及权限
8.编译安装并初始化mysql,此时会产生一个初始登录密码,这里为DuXLp5N=;3D?
9.编写etc目录下的my.cnf 配置文件,并添加配置。默认是不存在的。
10.修改/opt/mysql5.7/support-files/mysql.server为/opt/mysql5.7安装目录
11.启动mysql
(1)启动mysql
(2)添加软链接
(3)重启mysql
12.mysql操作
(1)登录mysql,这里的密码就是上面初始mysql产生的密码
(2)设置登录密码
13.开放远程连接
(1)切换mysql库
(2)授予 MySQL 数据库的 root 用户远程访问权限的情况下非常有用。默认情况下,MySQL 仅允许来自本地主机的连接,因此将 Host 值更改为 '%' 允许 root 用户从任何位置连接。
(3)刷新权限
14.设置开机自启
(1)拷贝服务文件到/etc/init.d/下,并重命名为mysqld
(2)赋予可执行权限
(3)添加服务
(4)显示服务列表
15.安装完成后,创建库test
3.2 二进制安装Xtrabackup
1.下载压缩包
2.在/opt目录下解压压缩包
3.将上面解压的目录移动到/usr/local/下,并更名为xtrabackup
4.添加环境变量
5.重新加载/etc/profile
6.安装验证
3.3 安装依赖
1.安装perl-Digest-MD5依赖
如果不安装以上依赖,会发生以下报错
四、脚本编写4.1 Shell脚本4.1.1 Mysqlmp并发备份
1.编写shell脚本
上面mysqlmp参数说明如下:
上面split参数说明如下:
上面tar参数说明如下:
上面代码详细分析:
(1)定义备份文件名前缀,并将当前工作目录切换到备份目录。这段代码使用date命令生成一个以当前时间为前缀的备份文件名,并将备份目录切换为/data/mysql,如果该目录不存在则创建。
(2)获取需要备份的数据库列表。
(3)遍历数据库列表,使用mysqlmp备份并分片。使用for循环遍历所有需要备份的数据库,使用mysqlmp命令备份数据库,并通过split命令将备份结果分片,并以数据库名作为备份文件名的一部分。备份过程中使用&将任务放到后台并发执行。
(4)等待所有备份任务完成。
(5)打包备份文件并清理临时文件。使用tar命令将所有备份文件打包成一个压缩文件,并通过rm命令清理所有临时备份文件。
2.添加定时任务,每天凌晨1点定时执行脚本
3.结果验证
4.结果解压再次验证
4.1.2 Xtrabackup并发备份
1.编写shell脚本
上面xtrabackup参数说明如下:
上面代码详细分析:
(1)指定设置备份参数的变量。其中,MYSQL_USER 和 MYSQL_PASSWORD 是用于连接到 MySQL 服务器的凭据。BACKUP_DIR 是备份文件存储目录,THREADS 是用于备份的线程数。
(2)使用mysql 命令连接到 MySQL 服务器,并运行 SHOW DATABASES; 命令来获取所有数据库的列表。然后,使用 grep 命令过滤掉系统数据库,如 Database、information_schema 和 performance_schema。最后,将结果赋值给 DATABASES 变量。
(3)遍历所有数据库,对每个数据库进行备份。在循环内部,首先根据数据库名称创建备份目录。然后,使用xtrabackup 命令进行备份。该命令将备份所有数据库,并将备份文件存储在 TARGET_DIR 目录中。备份过程中会使用 MYSQL_USER 和 MYSQL_PASSWORD 变量来连接到 MySQL 服务器。--parallel=$THREADS 参数指定备份使用的线程数。最后,将备份完成的消息写入 description.txt 文件中。
2.添加定时任务,每天凌晨1点定时执行脚本
3.结果验证,这里只拿test1,其他类似。
上面文件说明如下:
五、排错总结5.1 报错一
1.执行service mysql restart命令报错
2.报错处理