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 点整执行任务

 

posted @ 2025-03-20 11:34  李文学  阅读(212)  评论(0)    收藏  举报