RelaxingChat|MySql部署
Fang 2024/12/9 RelaxingChat数据库Docker
# RelaxingChat MySql部署
# 创建挂载目录
# 创建挂载目录
mkdir -p /data/mysql/data
mkdir -p /data/mysql/conf
1
2
3
2
3
# 创建docker-compose.yml
# 创建yml文件
vim /data/mysql/docker-compose.yml
1
2
2
填入以下配置
version: '3'
services:
mysql:
image: mysql:8.0 #mysql版本
container_name: mysql
volumes:
- /data/mysql/data:/var/lib/mysql
- /data/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: 123456 #root用户密码
TZ: Asia/Shanghai
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 创建my.cnf配置
vim /data/mysql/conf/my.cnf
1
填入以下配置
[mysqld]
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 设置mysql服务端默认字符集
character-set-server=utf8mb4
# pid文件所在目录
pid-file= /var/run/mysqld/mysqld.pid
# 用于本地连接的socket套接字
socket= /var/run/mysqld/mysqld.sock
# 数据文件存放的目录
datadir= /var/lib/mysql
symbolic-links=0
# 定义mysql应该支持的sql语法,数据校验等
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 允许最大连接数
max_connections=200
# 同一局域网内注意要唯一
server-id=3306
# 开启二进制日志功能 & 日志位置存放位置`/var/lib/mysql`
# log-bin=mysql-bin
log-bin=/var/lib/mysql/mysql-bin
# binlog格式
# 1. STATEMENT:基于SQL语句的模式,binlog 数据量小,但是某些语句和函数在复制过程可能导致数据不一致甚至出错;
# 2. MIXED:混合模式,根据语句来选用是 STATEMENT 还是 ROW 模式;
# 3. ROW:基于行的模式,记录的是行的完整变化。安全,但 binlog 会比其他两种模式大很多;
binlog_format=ROW
# FULL:binlog记录每一行的完整变更
# MINIMAL:只记录影响后的行
binlog_row_image=FULL
# 日志文件大小
max_binlog_size=100M
# 定义清除过期日志的时间(这里设置为7天)
expire_logs_days=7
# ================= ↑↑↑ mysql主从同步配置end ↑↑↑ =================
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4 # 设置mysql客户端默认字符集
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 启动mysql容器
打开服务器3306端口
cd /data/mysql
docker-compose up -d
docker ps
# 5a88910c06a6 mysql:8.0 "docker-entrypoint.s…" 7 seconds ago Up 7 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
1
2
3
4
5
2
3
4
5
测试连接即可
# 问题
# 为什么要创建挂载目录
在 Docker 中创建挂载目录(也称为卷或数据卷)的好处有很多,以下是一些主要的优点:
- 持久存储数据:容器是临时的,默认情况下,容器中的数据在容器停止或删除后会丢失。使用挂载目录可以将数据存储在宿主机上,从而确保数据在容器生命周期之外持久存在。
- 跨容器数据共享:多个容器可以挂载同一个目录,从而实现数据共享。这对于需要共享配置文件、数据库文件或其他数据的应用程序非常有用。
- 易于备份和恢复:挂载的目录可以很容易地备份和恢复。您可以直接访问宿主机上的文件系统,使用常规的备份工具来备份数据。
- 开发测试实时更新:在开发过程中,您可以将宿主机的代码目录挂载到容器中,这样在宿主机上对代码的修改会立即反映在容器中。
- 简化数据管理:通过挂载目录,您可以将数据集中管理在宿主机上,而不是分散在多个容器中。这使得数据管理变得更加简单和高效。
- 提高性能:在某些情况下,使用挂载目录可以提高性能,特别是当数据需要频繁读写时。宿主机的文件系统可能比容器内的文件系统更高效。
- 灵活适应不同环境:挂载目录使得容器能够适应不同的环境和配置。您可以在不同的环境中使用相同的容器镜像,只需更改挂载的目录即可。
- 安全隔离数据:通过使用挂载目录,您可以将容器的文件系统与宿主机的文件系统隔离开来,从而提高安全性。您可以控制哪些数据可以被容器访问。