1.mysqlmp:最早,也是最成熟的逻辑备份工具,是 MySQL 原生的用来备份整个数据库实例、单个数据库、单张表的逻辑备份工具, 上手简单,学习成本几乎为 0。备份简单,恢复也简单。
比如导出单个数据库 ytt: mysqlmp ytt > /tmp/ytt.sql;
恢复也非常简单:mysql < /tmp/ytt.sql
缺点是备份速度慢。在整个备份过程中,是单线程运行;备份出来的数据集要恢复的话同样也是单线程运行,恢复速度也慢。除非对同一时刻的所有表单独备份出来,自己写额外脚本进行多线程恢复。
2.mysqlpump:MySQL 5.7 GA 后推出的 mysqlmp工具的增强版。可以对同一个数据集多个线程并发备份,备份速度很快。
其他缺点和 mysqlmp 一样。
3.MySQL Shell UTIL对象附带的备份工具:随 MySQL 8.0.21 最新版本捆绑发布,自带多线程备份以及多线程恢复功能, 可以直接替代 mysqlmp/mysqlpump。
mp_instance/mpInstance 用来多线程备份 MySQL 整个单机实例
mp_schemas/mpSchemas 用来多线程备份 MySQL 单个数据库
load_mp/loadDump 用来多线程恢复之前两个工具导出的数据集文件
MySQL Shell UTIL 备份恢复工具具备如下特性:
1.压缩导出(默认压缩算法 zstd)
2.数据集分块导出,每块 32M
3.默认导出存储过程、存储函数、触发器、事件、用户、视图
4.默认 4 个线程导出
5.默认进度展示
6.默认字符集 utf8mb4
7.默认开启一致性导出
8.默认表,视图等定义导出为 SQL 语句
9.默认数据导出为 TSV 格式数据
⑵ Linux自动备份MySQL数据库的实用方法
MySQL定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下面的方法即可让系统定期备份数据。
◆1、创建备份文件夹
#cd /www
#makedir backup
◆2、编写运行脚本
#vi autobackup
写入以下内容:
filename=`date +%Y%m%d`
mysql_bin_dir/mysqlmp _opt dataname -u user -ppassword | gzip
/www/mysqlbackup/name$filename.gz
保存退枝裤出
说明:
(1)mysql_bin_dir:mysql的bin路径;
(2)dataname:数据库名;
(3)user:数据库用户名;
(4)password:陆搭岁用户密码;
(5)name:早睁自定义备份文件前缀标识。
如上例,将自动备份mysql数据库,并以gzip压缩方式存储,文件名为name20080101.gz的形式。
◆3、为脚本添加执行权限
#chmod +x autobackup
◆4、让crontab来完成定期执行的任务
这一步中,Redhat的方法会不一样,后面专门给出。
编辑crontab:
#vi /etc/crontab
在最后一行中加入:
01 5 * * * root /www/autobackup
每天5点运行脚本,也可以修改5为其他指定时间。
Redhat方法:
Redhat的crontab采用按时间调用4个目录(/etc/cron.hourly:每小时;/etc/cron.daily:每天;/etc/cron.weekly:每周;/etc/cron.monthly:每月)中脚本出来运行的方式。
Redhat中只需要将刚才编辑的脚本复制到相应的目录即可。
◆5、重启crontab
#/etc/rc.d/init.d/crond restart
完成。
⑶ linux下mysql自动备份数据库与自动删除临时文件
一、每日23:00自动删除临时文件
首先查看一下crontab的任务列表:
crontab
-l
然后新建:
crontab
-e
添加一行:
00
03
*
*
*
rm
-rf
/www/cmstest/my120/public/scripts/jpgraph/*
保存退出。
重启服务:
/etc/rc.d/init.d/crond
restart
二、每日24:00自动备份数据库
利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。
1、创建保存备份文件的路径/mysqldata
#mkdir
/mysqldata
2、创建/usr/sbin/bakmysql文件
查找数据库库文件的路径:
一般都是:/var/lib/mysql,或者,/usr/local/mysql/var
查找方法:
1、/usr/local/mysql/bin/mysql
-u
root
-p
进入数据库
2、输入:show
databases;
3、这是可以查看到所有的数据库,然后
4、find
/
-name
db(你想查找的数据库名)
之后:#vi
/usr/sbin/bakmysql
输入
复制代码
代码如下:
rq=`
date
+%Y%m%d
`
tar
zcvf
/mysqldata/mysql$rq.tar.gz
/var/lib/mysql
3、修改文件属性,使其可执行
#
chmod
+x
/usr/sbin/bakmysql
新建任务:
首先查看一下crontab的任务列表:
crontab
-l
然后新建:
crontab
-e
添加一行
00
04
*
*
*
/usr/sbin/bakmysql
表示每天24点钟执行备份
4、重新启动crond
#
/etc/rc.d/init.d/crond
restart
此后每天就可以在/mysqldata中看到类似下的文件了:mysql20040619.tar.gz。