环境:

  • 宿主机挂载目录:

/data/middleware
├── mysql
├── redis
└── nacos
  • MySQL:
    • 镜像:mysql:5.7
    • 容器名:mysql57_xj
    • 宿主端口:3406
    • 容器端口:3306
    • 密码:YQs2UkB4y
  • Redis:
    • 镜像:redis:6.2
    • 容器名:redis6_xj
    • 宿主端口:6479
    • 容器端口:6379
    • 密码:YQs2UkB4y
  • Nacos:
    • 镜像:nacos/nacos-server:v2.0.4
    • 容器名:nacos_xj
    • 端口:8848/9848/9849
    • 不开启鉴权

一、创建目录

执行:


mkdir -p /data/middleware/mysql
mkdir -p /data/middleware/redis
mkdir -p /data/middleware/nacos

检查:


ls -l /data/middleware

二、部署 MySQL 5.7

1. 创建配置文件目录


mkdir -p /data/middleware/mysql/conf

创建配置:


vim /data/middleware/mysql/conf/my.cnf

内容:


[mysqld]

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

default-time-zone='+08:00'

max_connections=500

skip-name-resolve

innodb_buffer_pool_size=512M

2. 启动 MySQL

执行:


docker run -d \
--name mysql57_xj \
--restart always \
-p 3406:3306 \
-e MYSQL_ROOT_PASSWORD=YQs2UkB4y \
-e TZ=Asia/Shanghai \
-v /data/middleware/mysql/data:/var/lib/mysql \
-v /data/middleware/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
mysql:5.7

3. 查看 MySQL


docker ps | grep mysql57_xj

日志:


docker logs -f mysql57_xj

看到:


ready for connections

表示启动成功。


4. 登录测试


docker exec -it mysql57_xj mysql -uroot -p

密码:


YQs2UkB4y

测试:


select version();

三、部署 Redis 6.2

1. 创建 Redis 配置目录


mkdir -p /data/middleware/redis/conf

创建配置:


vim /data/middleware/redis/conf/redis.conf

内容:


bind 0.0.0.0

protected-mode no

requirepass YQs2UkB4y

appendonly yes

appendfsync everysec

2. 启动 Redis

执行:


docker run -d \
--name redis6_xj \
--restart always \
-p 6479:6379 \
-v /data/middleware/redis/data:/data \
-v /data/middleware/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
redis:6.2 \
redis-server /usr/local/etc/redis/redis.conf

3. 测试 Redis

进入:


docker exec -it redis6_xj redis-cli

认证:


auth YQs2UkB4y

测试:


ping

返回:


PONG

四、部署 Nacos 2.0.4

1. 创建目录


mkdir -p /data/middleware/nacos/logs

2. 启动 Nacos

执行:


docker run -d \
--name nacos_xj \
--restart always \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
-e TZ=Asia/Shanghai \
-e NACOS_AUTH_ENABLE=false \
-v /data/middleware/nacos/logs:/home/nacos/logs \
nacos/nacos-server:v2.0.4

3. 查看 Nacos


docker ps | grep nacos_xj

日志:


docker logs -f nacos_xj

启动成功:


Nacos started successfully

4. 访问

浏览器:


http://服务器IP:8848/nacos

默认:


账号:
nacos

密码:
nacos

当前:


鉴权关闭

五、最终检查

查看所有 xj 容器:


docker ps | grep _xj

应该:


mysql57_xj
redis6_xj
nacos_xj

端口:


netstat -tunlp | grep -E "3406|6479|8848|9848|9849"

命令行创建数据库和导入sql文件

一、先创建 4 个数据库

进入 MySQL:


docker exec -it mysql57_xj mysql -uroot -p

输入:


YQs2UkB4y

进入后执行:


CREATE DATABASE dmp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

CREATE DATABASE link5g_mes DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

CREATE DATABASE link5g DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

CREATE DATABASE odsdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

查看:


SHOW DATABASES;

应该看到:


dmp
link5g_mes
link5g
odsdb

退出:


exit;

二、准备 SQL 文件

假设你现在有:


dmp.sql
link5g_mes.sql
link5g.sql
odsdb.sql

例如放在:


/data/sql/

查看:


ls -lh /data/sql/

应该:


/data/sql/dmp.sql
/data/sql/link5g_mes.sql
/data/sql/link5g.sql
/data/sql/odsdb.sql

三、导入数据库

1. 导入 dmp

执行:


docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y dmp < /data/sql/dmp.sql

2. 导入 link5g_mes


docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y link5g_mes < /data/sql/link5g_mes.sql

3. 导入 link5g


docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y link5g < /data/sql/link5g.sql

4. 导入 odsdb


docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y odsdb < /data/sql/odsdb.sql

四、检查是否导入成功

进入 MySQL:


docker exec -it mysql57_xj mysql -uroot -pYQs2UkB4y

查看:


USE dmp;

SHOW TABLES;

其他:


USE link5g_mes;

SHOW TABLES;


USE link5g;

SHOW TABLES;


USE odsdb;

SHOW TABLES;

查询每个库有多少张表

SELECT
    s.SCHEMA_NAME AS database_name,
    COUNT(t.TABLE_NAME) AS table_count
FROM information_schema.SCHEMATA s
LEFT JOIN information_schema.TABLES t
    ON s.SCHEMA_NAME = t.TABLE_SCHEMA
WHERE s.SCHEMA_NAME NOT IN (
    'information_schema',
    'mysql',
    'performance_schema',
    'sys'
)
GROUP BY s.SCHEMA_NAME
ORDER BY s.SCHEMA_NAME;


五、如果 SQL 文件很大(推荐)

如果单个 SQL 几百 MB 或几个 GB,建议加参数:


docker exec -i mysql57_xj mysql \
-uroot \
-pYQs2UkB4y \
--max_allowed_packet=1G \
dmp < /data/sql/dmp.sql

否则可能报:


MySQL server has gone away

六、导入前建议检查 SQL 文件

先看开头:


head -30 /data/sql/dmp.sql

如果里面有:


CREATE DATABASE xxx;
USE xxx;

可能会覆盖你刚创建的库。

如果看到:


DROP DATABASE

或者:


CREATE DATABASE

导入命令示例:

先创建数据库

docker exec -it mysql57_xj mysql -uroot -pYQs2UkB4y -e "CREATE DATABASE IF NOT EXISTS dmp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS link5g_mes DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS link5g DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS odsdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

导入 dmp.sql → dmp库

docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y dmp < /data/temp/dmp.sql

如果 SQL 文件比较大

docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y --max_allowed_packet=1G dmp < /data/temp/dmp.sql

更多推荐