起因

之前改博客都是直接在生产环节直接操作Mysql库,最近再重构和修改BUG,所以打算本地也搭建一个Mysql,但是不想用安装包的方式安装,就使用了docker安装在本地。电脑上使用的DataGrip来管理数据库的,他没办法像Navicat直接远端拷贝过来,所以想办法弄一个快速同步的方案。

过程

搭建本地mysql

yaml
services:
  mysql:
    image: mysql:8.0.41
    container_name: mysql8
    restart: unless-stopped
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword123
      MYSQL_DATABASE: nuxt3_blog
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword

执行docker compose -f mysql_docker.yml up -d创建容器

plain
# 远端数据库配置
REMOTE_HOST=10.0.0.8
REMOTE_PORT=3306
REMOTE_DB=prod_db
REMOTE_USER=admin
REMOTE_PASS='Abc123!'

# 本地 docker 容器 MySQL 配置
LOCAL_CONTAINER=mysql8
LOCAL_DB=mydatabase
LOCAL_USER=myuser
LOCAL_PASS='mypassword'

设置后,你只需执行:

plain
docker exec -i "$LOCAL_CONTAINER" sh -c \
  "mysqldump -h $REMOTE_HOST -P$REMOTE_PORT -u $REMOTE_USER -p$REMOTE_PASS $REMOTE_DB" \
  | docker exec -i "$LOCAL_CONTAINER" mysql -u "$LOCAL_USER" -p"$LOCAL_PASS" "$LOCAL_DB"

即可自动完成远端 → 本地容器的导入。