MySQL数据库备份(导出导入)的命令详解mysqldump。linux批量备份指定数据库的shell脚本

1.1 导出
1.1.1 导出所有数据库
mysqldump -uroot -p1234 --all-databases > all-databases.sql
1.1.2 导出指定数据库
mysqldump -uroot -p1234 --databases db1 db2 > custom_db.sql
1.2 导入
1.2.1 系统命令行方式
mysql -uroot -p1234 < db_bak.sql
1.2.2 mysql命令行方式
mysql -uroot -p1234
mysql > source db_bak.sql
2 table级导出导入(不含建库,含建表、数据的sql语句)
2.1 导出
2.1.1 导出1个数据库中所有表
mysqldump -uroot -p1234 db1 > db1.sql
2.1.2 导出1个数据库中指定表
mysqldump -uroot -p1234 db1 t1 t2 > db1_custom_table.sql
2.2 导入
2.2.1 系统命令行方式
mysql -uroot -p1234 db1 < db_bak.sql
2.2.2 mysql命令行方式
mysql -uroot -p1234
mysql > use db1
mysql > source db_bak.sql
3. linux批量备份脚本(sql指定的库)
#作者:李硕,日期:2023-4-15。 参考博客:https://blog.csdn.net/lishuoboy/article/details/130168865
#注意:需提前安装mysql客户端。 参考博客:https://blog.csdn.net/lishuoboy/article/details/114677600
#linux 添加定时任务编辑命令 crontab -e。使用方式通vim命令。具体crontab表达式用法自己百度
#0 * * * * /data/mysql-bak/mysql-export.sh > /data/mysql-bak/mysql-export.log
#注意:添加执行权限 chmod +x /data/mysql-bak/mysql-export.sh。否则定时任务不运行
reset='\e[0m'
slowBlink='\e[5m'
red='\e[31m'
green='\e[32m'
yellow='\e[33m'
blue='\e[34m'
#命令回显
#set -v on
exportTime=$(date +%Y%m%d-%H%M%S)
echo -e "$slowBlink$yellow========== mysql export start ==========$reset"
echo ========== $exportTime ==========
echo 1.定义参数
workDir=/data/mysql-bak/db-data
cd $workDir
saveDays=360
# 查询所有数据库的sql。as schema_name 是因为 schema_name可能大写、可能小写
select_schema_name_sql="SELECT schema_name as schema_name FROM information_schema.SCHEMATA WHERE schema_name not in ('mysql','information_schema','performance_schema','sys')"
echo 2.备份数据库
# 环境:dev/sit/uat/prd
profile=prd
host=127.0.0.1
port=3306
user=root
# 密码可以写入my.cnf文件,就无需mysql命令行传入。
password=你的密码
echo 2.1.$profile查询所有库。写入文件
mkdir $exportTime-$profile
mysql -h${host} -P${port} -u${user} -p${password} -e "${select_schema_name_sql}" > $exportTime-$profile/schema_name-$profile.txt
echo 2.2.$profile遍历导出所有库。每个schema_name导出一个.sql文件
IFS=$'\n'
for line in $(cat $exportTime-$profile/schema_name-$profile.txt)
do
if [[ $line != 'schema_name' ]]; then
echo $line
# --column-statistics=0 是屏蔽版本差异报错:Unknown table 'COLUMN_STATISTICS' in information_schema (1109)
mysqldump -h${host} -P${port} -u${user} -p${password} -B $line --column-statistics=0 > $exportTime-$profile/$(date +%Y%m%d-%H%M%S)-$profile-$line.sql
fi
done
echo 2.3.$profile压缩并删除源文件
#tar -czvf $exportTime.tgz *.sql *.txt --remove-files
tar -cJvf $exportTime-$profile.txz $exportTime-$profile ../*$profile.log --remove-files
echo 3.滚动删除历史文件
find $workDir -type f -name "*.t?z" -mtime +$saveDays -exec rm -rf {} \;
echo -e "$slowBlink$yellow========== mysql-bak end ==========$reset"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具