1、提前准备数据
2、在此目录下新建mysql_backup.sh(vi即新建)
vi /usr/local/bin/mysql_backup.sh
DB_USER="root"
DB_PASS="123456"
DB_NAME="lee"
BACKUP_DIR="/usr/local/mysql_backup"
BACKUP_FILE="${BACKUP_DIR}/$(date +%Y%m%d).sql"
SOCKET_PATH="/var/lib/mysql/mysql.sock"
/usr/bin/mysqldump -u${DB_USER} -p${DB_PASS} --socket=${SOCKET_PATH} ${DB_NAME}>"${BACKUP_FILE}"
3、对上述7行的解释
1、DB_USER="root" (你的数据库用户名)
2、DB_PASS="123456"(你的数据库密码)
3、DB_NAME="lee"(要备份的数据库)
4、BACKUP_DIR="/usr/local/mysql_backup"(备份后的sql文件,放在此文件下)
5、BACKUP_FILE="${BACKUP_DIR}/$(date +%Y%m%d).sql" 生成sql文件的名字
6、SOCKET_PATH="/var/lib/mysql/mysql.sock"
mysql.sock
是 MySQL 客户端与服务器之间通信的Unix 域套接字文件(Unix Domain Socket File),用于本地快速连接 MySQL 服务。它的作用类似于网络通信中的 TCP/IP 套接字,但仅适用于同一台机器上的进程间通信,因此效率更高、延迟更低。
关键点:
- 仅用于本地连接
- 当客户端通过
localhost
或127.0.0.1
连接 MySQL 时,默认会优先使用mysql.sock
(而非 TCP/IP 端口 3306)。 - 如果
mysql.sock
不存在或路径错误,客户端可能无法连接,即使 MySQL 服务正在运行。
- 当客户端通过
- 与 TCP/IP 连接的区别
mysql.sock
:仅限本地连接,无需网络协议开销,速度快。- TCP/IP:支持远程连接,需通过端口(如 3306)通信。
/var/lib/mysql/mysql.sock |
默认安装 |
总结mysql.sock
的作用:
本地进程间通信的套接字文件,提高连接效率。
7、/usr/bin/mysqldump -u${DB_USER} -p${DB_PASS} --socket=${SOCKET_PATH} ${DB_NAME}>"${BACKUP_FILE}"
mysqldump
是 MySQL/MariaDB 自带的命令行备份工具,用于将数据库结构和数据导出为 SQL 格式的备份文件。
4、修改文件或目录的所有者和所属组。
chown mysql:mysql /usr/local/mysql_backup
mysql:mysql
:将所有者设为mysql
用户,所属组设为mysql
组。/usr/local/mysql_backup
:目标目录路径。
5、修改目录的访问权限。
chmod 700 /usr/local/mysql_backup
- 作用:修改目录的访问权限。
- 参数解释:
700
:权限数字表示法,含义如下:7
(所有者):读(4
) + 写(2
) + 执行(1
)权限。0
(所属组):无权限。0
(其他用户):无权限。
/usr/local/mysql_backup
:目标目录路径。
- 使用场景:
- 限制备份目录仅允许所有者(
mysql
用户)访问,增强安全性,防止其他用户查看或修改备份文件。
- 限制备份目录仅允许所有者(
- 权限说明:
700
是严格的权限设置,适用于敏感数据目录。
6、crontab -e
- 作用:编辑当前用户的计划任务(Cron Job)。
- 参数解释:
-e
:表示编辑(edit
)模式。
- 使用场景:
- 通常用于添加或修改定时任务,例如定期备份 MySQL 数据库。
- 执行此命令后,会打开默认编辑器(如
vi
或nano
),用户可在其中添加类似以下的定时任务:
# 每天凌晨执行一次
#0 0 * * * /usr/local/bin/mysql_backup.sh
# 每分钟执行一次
* * * * * /usr/local/bin/mysql_backup.sh
编辑
7、一分钟后查看备份的数据(新增或者删除 都会呈现最终结果)