2024-03-15
Linux
00
请注意,本文编写于 32 天前,最后修改于 27 天前,其中某些信息可能已经过时。
bash
#!/bin/bash set -e # 备份文件夹 backup_dir="/opt/backup" # 数据库账号 mysql_user="root" # 数据库密码 mysql_password="1" # 要备份的数据库名称 mysql_database="one" # 获取周几 weekday=$(date +'%u') # 如果备份文件夹不存在则创建 if [ ! -d "$backup_dir" ]; then mkdir -p "$backup_dir" echo "备份文件夹 $backup_dir 不存在,已创建该文件夹。" fi echo "开始执行备份操作" # 如果是周日执行当前备份 if [ "$weekday" -eq 7 ]; then backup_file="$backup_dir/QL.dir/full_backup_$(date +'%Y%m%d').sql" mysqldump --user="$mysql_user" --password="$mysql_password" --single-transaction --skip-lock-tables --routines --triggers --events --add-drop-database --add-drop-table "$mysql_database" > "$backup_file/$mysql_database$(date +'%Y%m%d').sql" else backup_file="$backup_dir/ZL.dir/INcmt_backup_$(date +'%Y%m%d').sql" mysqldump --user="$mysql_user" --password="$mysql_password" --single-transaction --skip-lock-tables --no-create-info --skip-comments --skip-extended-insert "$mysql_database" > "$backup_file/$mysql_database$(date +'%Y%m%d').sql" fi echo "数据库$mysql_database备份完成" scp $backup_dir/$mysql_database$(date +'%Y%m%d').sql 192.168.10.100:/data/mysql/backup echo "移动备份文件至远程主机"

mysqldump参数:

参数作用
--single-transaction使用单个事务来导出数据,这对于 InnoDB 存储引擎是特别有用的,因为它允许在不锁定表的情况下创建一致性的备份
--skip-lock-tables不锁定任何表来读取数据,这通常与 --single-transaction 一起使用
--routines告诉 mysqldump 导出存储过程和函数
--triggers告诉 mysqldump 导出触发器
--events告诉 mysqldump 导出事件调度器的事件
--add-drop-database会在每个数据库的导出内容前添加一个 DROP DATABASE 语句,并在之后添加一个 CREATE DATABASE 语句。这有助于在恢复时删除并重新创建数据库
--add-drop-table这会在每个表的导出内容前添加一个 DROP TABLE 语句,并在之后添加一个 CREATE TABLE 语句。这有助于在恢复时删除并重新创建表。
--no-create-info不导出 CREATE TABLE 语句。这意味着备份文件中将不包含创建表的 SQL 语句,只有表中的数据。
--skip-comments不导出任何注释。这可以减少备份文件的大小,并加速备份过程。
--skip-extended-insert不使用扩展的 INSERT 语句。默认情况下,mysqldump 使用扩展的 INSERT 语句来插入多行数据,以提高效率。但使用这个选项会导致每行数据都使用单独的 INSERT 语句,这可能使备份文件更大,但有时候这样做有助于兼容某些特定的数据库导入工具或系统。
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:XiaoWang0777

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

本网站由 又拍云Logo 提供CDN加速/云存储服务 萌ICP备20240377号