Centos7-Docker安装mysql8
本文主要记录基于Docker在Centos7上安装Mysql8的过程,具体如下:
1.宿主准备
1.1.宿主端口准备
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
1.2.宿主目录准备
mkdir -p /home/dbtest/apps/mysql/conf mkdir -p /home/dbtest/apps/mysql/data mkdir -p /home/dbtest/apps/mysql/backup
2,Docker准备
2.1docker准备
此处省略,本次使用版本
docker -v Docker version 26.1.4
2.2镜像准备
原始镜像:
hub.atomgit.com/amd64/mysql:8.1
离线镜像:
image_mysql_81.tar
若有需要该镜像,可和我取得联系。
3.安装配置
启动命令:
docker run -d \ --name mysql8 \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=Ty@2021! \ -v /home/dbtest/apps/mysql/conf:/etc/mysql/conf.d \ -v /home/dbtest/apps/mysql/data:/var/lib/mysql \ -v /home/dbtest/apps/mysql/backup:/backup \ hub.atomgit.com/amd64/mysql:8.1
注解说明:
-v /home/dbtest/apps/mysql/conf:/etc/mysql/conf.d 把主机配置目录映射到Docker /etc/mysql/conf.d目录
-v /home/dbtest/apps/mysql/data:/var/lib/mysql 把主机配置目录映射到Docker /etc/var/lib/mysql目录
-v /home/dbtest/apps/mysql/backup:/backup 把主机配置目录映射到Docker /etc/mbackup目录
映射说明
/home/dbtest/apps/mysql/conf该目录下面,可以增加以.cnf结尾的配置文件,根据需要主题可独立命名
进入容器:
docker exec -it mysql8 /bin/bash
账号设置
docker exec -it mysql8 mysql -u root -pTy@2021! use mysql; SELECT User, Host, authentication_string FROM user WHERE User = 'root'; ALTER USER 'root'@'localhost' IDENTIFIED BY 'Demo@2024!' PASSWORD EXPIRE NEVER; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Demo@2024!'; FLUSH PRIVILEGES;
SQL检测:
docker exec -it mysql8 mysql -u root -pDemo2024! -e "select 1;"
返回输出1,表示数据库访问成功
4,Docker命令
docker start mysql8
docker stop mysql8
docker restart mysql8
5.DB备份
全量备份:full_backup.sh
#!/bin/bash # 创建主备份目录 NEW_BACKUP_DIR="/backup" mkdir -p "$NEW_BACKUP_DIR" # 获取数据库列表 DATABASES=$(docker exec mysql8 mysql -u root -p'Demo@2024!' -sNe 'SHOW DATABASES') # 循环备份每个数据库 for DB in $DATABASES; do # 跳过系统数据库 if [ "$DB" != "information_schema" ] && [ "$DB" != "performance_schema" ] && [ "$DB" != "mysql" ] && [ "$DB" != "sys" ]; then # 定义备份文件名,包含当前日期和时间以及数据库名 BACKUP_SUB_DIR="$NEW_BACKUP_DIR/$DB" mkdir -p "$BACKUP_SUB_DIR" BACKUP_SUB_FILE="$BACKUP_SUB_DIR/full_backup_$(date +%Y%m%d%H%M%S).sql" # 使用 mysqldump 命令进行备份 docker exec mysql8 mysqldump -u root -p'Demo@2024!' "$DB" --result-file="$BACKUP_SUB_FILE" # 检查备份是否成功 if [ $? -eq 0 ]; then echo "数据库 $DB 备份成功:$BACKUP_SUB_FILE" else echo "数据库 $DB 备份失败" fi fi done
全量备份脚本验证可用
增量备份:increment_backup.sh
此处省略,待验证后提供
定时作业:
crontab -e
0 2 * * 0 /home/dbtest/apps/backsh/full_backup.sh
0 3 * * * /home/dbtest/apps/backsh/increment_backup.sh
0 2 * * 0
0:表示分钟,这里是 0 分,即整点。
2:表示小时,这里是凌晨 2 点。
*:表示日,这里的*代表每月的任意一天。
*:表示月,这里的*代表每年的任意一个月。
0:表示周,这里的0代表周日。
所以0 2 * * 0表示每周日凌晨 2 点整执行任务

浙公网安备 33010602011771号