网站关键词的使用,重庆网站布局信息公司,微网站搭建费用,网站建设时如何建立客户信赖感目录
注意#xff1a;
一.脚本内容
二.执行效果
三.创建定时任务 注意#xff1a;
以下为对MySQL5.7.42版本数据库备份shell脚本参考运行备份的机器请确认mysqldump版本5.7#xff0c;否则备份参数--set-gtid-purgedOFF无效#xff0c;考虑到一般数据库节点和备份…目录
注意
一.脚本内容
二.执行效果
三.创建定时任务 注意
以下为对MySQL5.7.42版本数据库备份shell脚本参考运行备份的机器请确认mysqldump版本5.7否则备份参数--set-gtid-purgedOFF无效考虑到一般数据库节点和备份节点不为同一节点以下链接为mysql5.7.43的rpm安装包解压后yum localinstall -y mysql-community* 即可
通过网盘分享的文件mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar 链接: https://pan.baidu.com/s/1C1dK_zeS0-p7ePih1ff4tg?pwdcer9 提取码: cer9
该脚本目前是对于整库、库下各表都做了备份若不需要对各表进行备份去除关于备表的for循环即可。
一.脚本内容
#!/bin/bash
# 定义连接mysql的用户、密码、地址、端口
mysql_userroot
mysql_passSLBmysql2025
mysql_host192.168.2.199
mysql_port20307
# 定义排除数据库变量
exdbnameinformation_schema|performance_schema|sys|mysql
date$(date %Y-%m-%d)
# 定义备份路径变量
bak_path/data/mysql/back
# 日志存放位置
log_file$bak_path/$date/backup.log
# 定义日志保留天数
retain_days7
# 定义备份参数
dump_opts--set-gtid-purgedOFF --single-transaction --no-autocommit
# 检查备份路径是否存在不存在则创建
if [ ! -d $bak_path ]; thenmkdir -p $bak_path
fi
# 获取数据库列表排除指定数据库
#db_list$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port -e SHOW DATABASES; 2/dev/null | sed 1d | grep -Ev ^($exdbname)$)
db_list$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port -Bse SHOW DATABASES; 2/dev/null | grep -Ev ^($exdbname)$)
# 检查是否获取到数据库列表
if [ -z $db_list ]; thenecho 未获取到有效的数据库列表请检查 MySQL 连接和权限。 $log_fileexit 1
fi
# 对每个数据库进行操作
for db in $db_list; do# 创建数据库对应的备份目录db_backup_dir$bak_path/$date/$dbSIZE$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port --silent --skip-column-names -e SELECT ROUND(SUM(data_length) / 1024 / 1024, 0) FROM information_schema.TABLES WHERE table_schema\$db\;)if [ ! -d $db_backup_dir ]; thenmkdir -p $db_backup_dirfi# 备份整个数据库mysqldump -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port $dump_opts -B $db 2/dev/null | gzip $db_backup_dir/${db}_$(date %F).sql.gzif [ $? -ne 0 ]; thenecho 备份数据库 $db 失败。 $log_fileelseecho 数据库 $db 备份成功,存放路径 $db_backup_dir/${db}_$(date %F).sql.gz,大小为 $SIZE M $log_filefi# 获取数据库中的表列表tb_list$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port -N -e SHOW TABLES FROM $db 2/dev/null)# 检查是否获取到表列表if [ -z $tb_list ]; thenecho 未获取到数据库 $db 中的表列表。 $log_filecontinuefi# 对每个表进行操作for tb in $tb_list; do# 备份单个表mysqldump -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port $dump_opts $db $tb 2/dev/null | gzip $db_backup_dir/${db}_${tb}_$(date %F).sql.gzif [ $? -ne 0 ]; thenecho 备份表 $db.$tb 失败。 $log_fileelseecho 表 $db.$tb 备份成功,存放路径 $db_backup_dir/${db}_${tb}_$(date %F).sql.gz $log_filefidone
donefind $bak_path -mtime $retain_days -exec rm -f {} \;
二.执行效果
[rootmaster01 mysql]# bash sh/backup.sh
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
[rootmaster01 mysql]# ll
total 12
drwxr-xr-x 3 root root 24 Feb 17 22:19 back
drwxr-xr-x 7 polkitd root 4096 Feb 17 22:15 data
-rw-r--r-- 1 root root 1802 Feb 16 18:18 my.cnf
-rw-r--r-- 1 root root 242 Feb 16 18:18 mysql.txt
drwxr-xr-x 2 root root 23 Feb 17 22:19 sh
[rootmaster01 mysql]# cd back/2025-02-17/
[rootmaster01 2025-02-17]# ll
total 4
-rw-r--r-- 1 root root 436 Feb 17 22:19 backup.log
drwxr-xr-x 2 root root 73 Feb 17 22:19 slb
drwxr-xr-x 2 root root 76 Feb 17 22:19 test
[rootmaster01 2025-02-17]# du -sh ./*
4.0K ./backup.log
24K ./slb
24K ./test
[rootmaster01 2025-02-17]# cat backup.log
数据库 slb 备份成功,存放路径 /data/mysql/back/2025-02-17/slb/slb_2025-02-17.sql.gz,大小为 0 M
表 slb.students 备份成功,存放路径 /data/mysql/back/2025-02-17/slb/slb_students_2025-02-17.sql.gz
数据库 test 备份成功,存放路径 /data/mysql/back/2025-02-17/test/test_2025-02-17.sql.gz,大小为 0 M
表 test.employees 备份成功,存放路径 /data/mysql/back/2025-02-17/test/test_employees_2025-02-17.sql.gz
[rootmaster01 2025-02-17]# pwd
/data/mysql/back/2025-02-17
三.创建定时任务
[rootmaster01 sh]# tail -1 /etc/crontab
0 2 * * * root /usr/bin/bash /data/mysql/sh/mysql_backup.sh