1、下载MySQL5.6.51的docker镜像:
docker pull mysql:5.6.51
2、使用如下命令启动MySQL服务:
docker run -p 3306:3306 --name mysql \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
--restart=always \
-d mysql:5.6.51
3、参数说明
- -p 3306:3306:将容器的3306端口映射到主机的3306端口
- -v /data/mysql/conf:/etc/mysql:将配置文件夹挂在到主机
- -v /data/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
- -v /data/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
- --restart=always \ Docker重启时自动重启
- -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码
4、进入运行MySQL的docker容器:
docker exec -it mysql /bin/bash
5、使用MySQL命令打开客户端:
mysql -uroot -proot --default-character-set=utf8
6、创建mall数据库:
create database mall character set utf8;
7、先将 store_dev.sql 上传到,将store_dev.sql
文件拷贝到mysql容器的/目录下:
docker cp /data/store_dev.sql mysql:/
8、将sql文件导入到数据库:
use mall;
source /store_dev.sql;
9、创建一个reader:123456帐号并修改权限,使得任何ip都能访问:
注意:此处请自定义自己的账号密码,这里只是示例。
grant all privileges on *.* to 'mall' @'%' identified by '123456';
-
备份数据库脚本
mysqlback.sh#!/bin/bash # 备份文件保存的目录 backup_dir="/data/mysqlbak/" # 获取当前日期和时间作为时间戳 timestamp=$(date +"%Y%m%d_%H%M%S") # 备份MySQL数据库到带有时间戳的文件名中 docker exec mysql sh -c 'exec mysqldump dataname -uuser -p"password"' > "${backup_dir}db_backup_${timestamp}.sql" # 列出备份目录下的所有备份文件,并按时间戳降序排序 backup_files=($(ls -t "${backup_dir}"*.sql)) # 计算备份文件数量 num_backup_files=${#backup_files[@]} # 如果备份文件数量超过50份,则删除较旧的备份文件 if [ $num_backup_files -gt 50 ]; then # 计算要删除的备份文件数量 num_to_delete=$((num_backup_files - 50)) # 循环删除较旧的备份文件 for ((i = 0; i < $num_to_delete; i++)); do rm "${backup_files[$i]}" done fi # 将最新的备份文件打包成压缩包 tar -czvf "${backup_dir}backup_${timestamp}.tar.gz" "${backup_dir}db_backup_${timestamp}.sql" # 删除原始的备份文件(可选,如果需要节省磁盘空间) rm "${backup_dir}db_backup_${timestamp}.sql"
添加计划任务:
打开终端。
输入以下命令来编辑你的cron表(计划任务表):crontab -e
如果是第一次编辑cron表,系统会要求你选择一个文本编辑器。你可以选择自己熟悉的编辑器,比如
nano
或vim
。
在打开的cron表中,添加以下行来每三十分钟执行一次任务:*/30 * * * * your_command_here
将
your_command_here
替换为你想要定期执行的命令或脚本路径。
- */30:表示每隔30分钟执行一次。
- *:表示任意的取值,这里代表每小时的任意分钟。
- *:表示任意的取值,这里代表任意一天的日期。
- *:表示任意的取值,这里代表任意一个月份。
- *:表示任意的取值,这里代表任意一周的星期几。
编辑完成后,保存并退出编辑器。
系统会自动保存你的cron表,并开始按照你的设置定期执行任务。