xhs_server/docs/mysql-deployment.md
2024-12-16 10:31:07 +08:00

5.5 KiB
Raw Permalink Blame History

MySQL 容器部署文档

环境信息

  • MySQL镜像docker.unsee.tech/mysql:latest
  • 端口映射3316:3306
  • Root密码zaq12wsx@9Xin

部署步骤

1. 拉取镜像

docker pull docker.unsee.tech/mysql:latest

2. 运行容器

docker run -d \
  --name mysql-server \
  -p 3316:3306 \
  -e MYSQL_ROOT_PASSWORD=zaq12wsx@9Xin \
  docker.unsee.tech/mysql:latest

3. 验证部署

# 检查容器状态
docker ps | grep mysql-server

# 测试连接
mysql -h 127.0.0.1 -P 3316 -u root -p
# 输入密码: zaq12wsx@9Xin

数据库初始化

1. 方式一:使用命令行直接初始化

# 进入MySQL容器的交互式终端
docker exec -it mysql-server mysql -uroot -p"zaq12wsx@9Xin"
-- 在MySQL终端中执行以下命令
CREATE DATABASE 9Xin;
USE 9Xin;

-- 创建小红书笔记表
CREATE TABLE xhs_notes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    note_id VARCHAR(255) NOT NULL,
    title VARCHAR(255),
    description TEXT,
    type ENUM('normal', 'other') NOT NULL
);

-- 创建向量存储表
CREATE TABLE vector_store (
    id INT AUTO_INCREMENT PRIMARY KEY,
    note_id INT NOT NULL,
    vector_id VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    content_hash VARCHAR(64) NOT NULL,
    FOREIGN KEY (note_id) REFERENCES xhs_notes(id)
);

-- 创建清洗后的笔记存储表
CREATE TABLE clean_note_store (
    id INT NOT NULL AUTO_INCREMENT,
    note_id INT NULL DEFAULT NULL,
    content_type ENUM('guide','mindmap','summary') NULL DEFAULT NULL,
    content TEXT NULL DEFAULT NULL,
    content_hash VARCHAR(255) NULL DEFAULT NULL,
    vector_id VARCHAR(255) NULL DEFAULT NULL,
    recall_times INT NULL DEFAULT '0',
    created_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    INDEX idx_note_id (note_id),
    INDEX idx_content_hash (content_hash),
    INDEX idx_content_type (content_type),
    CONSTRAINT fk_clean_note_store_note_id FOREIGN KEY (note_id) 
    REFERENCES xhs_notes (id) ON UPDATE NO ACTION ON DELETE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

2. 方式二使用SQL文件初始化

  1. 创建初始化SQL文件
cat > init.sql << 'EOF'
CREATE DATABASE 9Xin;
USE 9Xin;

CREATE TABLE xhs_notes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    note_id VARCHAR(255) NOT NULL,
    title VARCHAR(255),
    description TEXT,
    type ENUM('normal', 'other') NOT NULL
);

CREATE TABLE vector_store (
    id INT AUTO_INCREMENT PRIMARY KEY,
    note_id INT NOT NULL,
    vector_id VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    content_hash VARCHAR(64) NOT NULL,
    FOREIGN KEY (note_id) REFERENCES xhs_notes(id)
);

CREATE TABLE clean_note_store (
    id INT NOT NULL AUTO_INCREMENT,
    note_id INT NULL DEFAULT NULL,
    content_type ENUM('guide','mindmap','summary') NULL DEFAULT NULL,
    content TEXT NULL DEFAULT NULL,
    content_hash VARCHAR(255) NULL DEFAULT NULL,
    vector_id VARCHAR(255) NULL DEFAULT NULL,
    recall_times INT NULL DEFAULT '0',
    created_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    INDEX idx_note_id (note_id),
    INDEX idx_content_hash (content_hash),
    INDEX idx_content_type (content_type),
    CONSTRAINT fk_clean_note_store_note_id FOREIGN KEY (note_id) 
    REFERENCES xhs_notes (id) ON UPDATE NO ACTION ON DELETE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
EOF
  1. 将SQL文件复制到容器中并执行
# 复制SQL文件到容器
docker cp init.sql mysql-server:/init.sql

# 在容器中执行SQL文件
docker exec mysql-server mysql -uroot -p"zaq12wsx@9Xin" < init.sql

3. 验证数据库和表结构

# 验证数据库
docker exec mysql-server mysql -uroot -p"zaq12wsx@9Xin" -e "SHOW DATABASES;"

# 验证表结构
docker exec mysql-server mysql -uroot -p"zaq12wsx@9Xin" -e "USE 9Xin; SHOW TABLES;"

# 验证具体表结构
docker exec mysql-server mysql -uroot -p"zaq12wsx@9Xin" -e "USE 9Xin; DESCRIBE xhs_notes;"
docker exec mysql-server mysql -uroot -p"zaq12wsx@9Xin" -e "USE 9Xin; DESCRIBE vector_store;"

故障排查指南

1. 容器无法启动

  • 检查端口占用:
netstat -tunlp | grep 3316
  • 检查容器日志:
docker logs mysql-server
  • 检查系统资源:
docker stats mysql-server

2. 无法连接数据库

  • 检查容器运行状态:
docker ps | grep mysql-server
  • 检查端口映射:
docker port mysql-server
  • 检查网络连通性:
telnet 127.0.0.1 3316

3. 性能问题

  • 查看容器资源使用:
docker stats mysql-server
  • 查看MySQL进程列表
mysql -h 127.0.0.1 -P 3316 -u root -p -e "SHOW PROCESSLIST;"

备份策略

导出数据

# 导出全部数据库
docker exec mysql-server mysqldump -u root -p"zaq12wsx@9Xin" --all-databases > backup_$(date +%Y%m%d).sql

# 导出指定数据库
docker exec mysql-server mysqldump -u root -p"zaq12wsx@9Xin" database_name > database_$(date +%Y%m%d).sql

导入数据

# 导入数据
docker exec -i mysql-server mysql -u root -p"zaq12wsx@9Xin" < backup.sql

安全建议

  1. 及时更新MySQL版本以修复安全漏洞
  2. 定期修改root密码
  3. 限制远程访问IP
  4. 创建具有最小权限的用户账号
  5. 定期备份数据

监控指标

  1. 容器状态
  2. CPU使用率
  3. 内存使用率
  4. 磁盘I/O
  5. 连接数
  6. 慢查询数量

文档维护记录

日期 版本 修改人 修改内容
YYYY-MM-DD 1.0 初始作者 创建文档