Skip to content

TDSQL 安装步骤

环境准备

硬件要求

服务器配置

  • CPU:建议8核及以上,生产环境推荐16核或更高
  • 内存:建议16GB及以上,生产环境推荐32GB或更高
  • 磁盘
    • 系统盘:至少100GB SSD
    • 数据盘:根据业务需求,建议至少500GB SSD
    • 日志盘:建议独立磁盘,至少200GB SSD
  • 网络:千兆网卡,生产环境推荐万兆网卡

存储要求

  • 支持SSD、NVMe等高性能存储设备
  • 支持本地存储或分布式存储
  • 建议使用RAID 10配置,提高数据可靠性和性能

软件要求

操作系统

  • CentOS 7.6及以上
  • Red Hat Enterprise Linux 7.6及以上
  • Ubuntu 18.04及以上
  • SUSE Linux Enterprise Server 12及以上

依赖软件

  • MySQL 客户端工具(用于测试连接)
  • Python 3.6及以上(用于运行安装脚本)
  • openssl 1.0.2及以上
  • libaio 0.3.109及以上
  • numactl 2.0.9及以上

网络要求

网络配置

  • 静态IP地址配置
  • 关闭防火墙或开放必要端口(3306、3307、2888、3888等)
  • 配置DNS解析
  • 确保服务器之间网络互通

端口规划

端口用途
3306主库对外服务端口
3307从库对外服务端口
2888集群内部通信端口
3888集群选举端口
8080监控和管理端口

安装前检查

系统检查

操作系统版本检查

bash
cat /etc/redhat-release  # CentOS/RHEL
lsb_release -a          # Ubuntu
cat /etc/os-release     # 通用方式

硬件资源检查

bash
# 检查CPU
lscpu
cat /proc/cpuinfo | grep "model name" | head -1

# 检查内存
echo "内存大小:$(free -h | grep Mem | awk '{print $2}')"

# 检查磁盘
df -h
lsblk

网络检查

bash
# 检查IP地址
ip addr

# 检查网络连通性
ping -c 3 www.baidu.com

# 检查端口占用
netstat -tuln  # 或 ss -tuln

依赖检查

检查依赖软件

bash
# 检查Python版本
python3 --version

# 检查openssl版本
openssl version

# 检查libaio
rpm -qa | grep libaio  # CentOS/RHEL
dpkg -l | grep libaio  # Ubuntu

# 检查numactl
numactl --version

安装缺失依赖

bash
# CentOS/RHEL
yum install -y python3 openssl libaio numactl

# Ubuntu
dpkg --add-architecture i386
apt-get update
apt-get install -y python3 openssl libaio:i386 numactl

# SUSE
zypper install -y python3 openssl libaio numactl

系统优化

关闭SELinux

bash
# 临时关闭
setenforce 0

# 永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

关闭防火墙

bash
# CentOS/RHEL 7
systemctl stop firewalld
systemctl disable firewalld

# CentOS/RHEL 6
service iptables stop
chkconfig iptables off

# Ubuntu
ufw disable

优化内核参数

编辑 /etc/sysctl.conf 文件,添加以下内容:

bash
# 网络优化
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15

# 文件系统优化
fs.file-max = 655350

# 内存管理
vm.swappiness = 0
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5

执行 sysctl -p 使配置生效。

优化文件描述符

编辑 /etc/security/limits.conf 文件,添加以下内容:

bash
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

安装过程

下载安装包

获取安装包

  • 从TDSQL官方网站下载最新安装包
  • 或通过云平台控制台获取
  • 或通过命令行工具下载
bash
# 示例:使用wget下载
wget https://tdsql-official-website/tdsql-installer-v1.0.0.tar.gz

验证安装包完整性

bash
# 检查MD5值
md5sum tdsql-installer-v1.0.0.tar.gz

# 检查SHA256值
sha256sum tdsql-installer-v1.0.0.tar.gz

解压安装包

bash
# 解压到指定目录
tar -zxvf tdsql-installer-v1.0.0.tar.gz -C /opt/tdsql

# 进入安装目录
cd /opt/tdsql/tdsql-installer-v1.0.0

安装配置

编辑安装配置文件

bash
# 复制示例配置文件
cp install.conf.example install.conf

# 编辑配置文件
vi install.conf

配置文件主要参数

bash
# 数据库基本配置
TDSQL_VERSION=v1.0.0
DB_NAME=tdsql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=YourStrongPassword123!

# 集群配置
CLUSTER_NAME=tdsql-cluster
NODE_ROLE=master  # master或slave
MASTER_IP=192.168.1.100
SLAVE_IP=192.168.1.101,192.168.1.102

# 存储配置
DATA_DIR=/data/tdsql/data
LOG_DIR=/data/tdsql/log
BINLOG_DIR=/data/tdsql/binlog
TMP_DIR=/data/tdsql/tmp

# 内存配置
BUFFER_POOL_SIZE=16G  # 建议为总内存的50%-70%
LOG_BUFFER_SIZE=256M

# 网络配置
LISTEN_ADDRESS=0.0.0.0
PORT=3306

执行安装脚本

安装前验证

bash
# 执行预检查脚本
./precheck.sh

开始安装

bash
# 执行安装脚本
./install.sh

安装过程监控

  • 安装过程中会显示详细的日志信息
  • 安装时间取决于服务器配置和网络环境
  • 安装过程中请勿中断执行

安装完成

安装成功提示

安装完成后,会显示类似以下信息:

==============================================
TDSQL 安装成功!
==============================================
安装版本:TDSQL v1.0.0
安装路径:/opt/tdsql
数据目录:/data/tdsql/data
日志目录:/data/tdsql/log
服务端口:3306
管理地址:http://192.168.1.100:8080
用户名:root
密码:YourStrongPassword123!
==============================================

安装日志

安装日志默认保存在 /opt/tdsql/log/install.log,可用于排查安装问题。

配置初始化

启动服务

启动TDSQL服务

bash
# 启动服务
systemctl start tdsql

# 设置开机自启
systemctl enable tdsql

# 检查服务状态
systemctl status tdsql

验证服务运行

bash
# 检查进程
ps -ef | grep tdsql

# 检查端口
netstat -tuln | grep 3306
ss -tuln | grep 3306

初始化配置

登录数据库

bash
# 使用MySQL客户端登录
mysql -h localhost -P 3306 -u root -p

# 输入安装时设置的密码

执行初始化脚本

bash
# 执行初始化SQL脚本
source /opt/tdsql/scripts/init.sql

初始化主要内容

  • 创建系统数据库和表
  • 初始化系统用户和权限
  • 配置默认参数
  • 创建监控用户
  • 配置备份策略

参数调整

编辑配置文件

bash
# 编辑主配置文件
vi /etc/tdsql/tdsql.conf

关键参数调整

bash
# 性能参数
max_connections = 10000
innodb_buffer_pool_size = 16G
innodb_log_file_size = 1G
innodb_flush_log_at_trx_commit = 2
sync_binlog = 100

# 安全参数
skip_name_resolve = 1
max_connect_errors = 10000

# 日志参数
slow_query_log = 1
long_query_time = 1
log_queries_not_using_indexes = 1

重启服务使配置生效

bash
systemctl restart tdsql

验证测试

基本功能验证

连接测试

bash
# 本地连接测试
mysql -h localhost -P 3306 -u root -p -e "SELECT VERSION();"

# 远程连接测试(从另一台服务器)
mysql -h 192.168.1.100 -P 3306 -u root -p -e "SELECT VERSION();"

数据库操作测试

sql
-- 创建测试数据库
CREATE DATABASE test_db;

-- 使用测试数据库
USE test_db;

-- 创建测试表
CREATE TABLE test_table (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    value INT,
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入测试数据
INSERT INTO test_table (name, value) VALUES ('test1', 100), ('test2', 200);

-- 查询测试数据
SELECT * FROM test_table;

-- 更新测试数据
UPDATE test_table SET value = 300 WHERE name = 'test1';

-- 删除测试数据
DELETE FROM test_table WHERE name = 'test2';

-- 再次查询
SELECT * FROM test_table;

性能测试

简单性能测试

bash
# 使用sysbench进行性能测试
# 安装sysbench
yum install -y sysbench  # CentOS/RHEL
apt-get install -y sysbench  # Ubuntu

# 准备测试数据
sysbench oltp_read_write --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=YourStrongPassword123! --mysql-db=test_db --table-size=1000000 --tables=10 prepare

# 运行测试
sysbench oltp_read_write --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=YourStrongPassword123! --mysql-db=test_db --table-size=1000000 --tables=10 --threads=16 --time=60 run

# 清理测试数据
sysbench oltp_read_write --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=YourStrongPassword123! --mysql-db=test_db --table-size=1000000 --tables=10 cleanup

高可用性测试

主从复制测试(主从架构)

bash
# 在主库上查看主从状态
SHOW MASTER STATUS;

# 在从库上查看复制状态
SHOW SLAVE STATUS\G

# 验证复制延迟
SHOW GLOBAL STATUS LIKE 'Seconds_Behind_Master';

故障切换测试(主从架构)

bash
# 手动触发主从切换
systemctl stop tdsql  # 停止主库服务

# 检查从库是否自动提升为主库
# 在从库上查看状态
SHOW MASTER STATUS;

安装后的配置

监控配置

开启监控服务

bash
# 启动监控服务
systemctl start tdsql-monitor
systemctl enable tdsql-monitor

# 访问监控界面
# http://192.168.1.100:8080

配置监控告警

  1. 登录监控界面
  2. 进入"告警配置"页面
  3. 设置告警规则(CPU、内存、磁盘、连接数等)
  4. 配置告警通知方式(邮件、短信、微信等)

备份配置

配置自动备份

bash
# 编辑备份配置文件
vi /etc/tdsql/backup.conf

# 主要备份配置
BACKUP_DIR=/data/tdsql/backup
BACKUP_TYPE=full  # full, incremental, differential
BACKUP_TIME=02:00  # 每天凌晨2点执行备份
BACKUP_RETENTION=7  # 保留7天备份
COMPRESSION=1  # 启用压缩
ENCRYPTION=1  # 启用加密

启动备份服务

bash
systemctl start tdsql-backup
systemctl enable tdsql-backup

安全配置

创建业务用户

sql
-- 创建业务用户
CREATE USER 'app_user'@'%' IDENTIFIED BY 'AppUserPassword123!';

-- 授予权限
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_user'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

配置IP白名单

sql
-- 限制用户只能从特定IP访问
CREATE USER 'restricted_user'@'192.168.1.%' IDENTIFIED BY 'RestrictedPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'restricted_user'@'192.168.1.%';
FLUSH PRIVILEGES;

常见安装问题与解决方案

问题1:依赖缺失

错误信息

Error: Missing dependency: libaio

解决方案

bash
# 安装缺失的依赖
# CentOS/RHEL
yum install -y libaio

# Ubuntu
apt-get install -y libaio

# SUSE
zypper install -y libaio

问题2:端口被占用

错误信息

Error: Port 3306 is already in use

解决方案

bash
# 查找占用端口的进程
lsof -i :3306
netstat -tuln | grep 3306

# 停止占用端口的进程
kill -9 <PID>

# 或修改TDSQL配置文件,使用其他端口

问题3:磁盘空间不足

错误信息

Error: Insufficient disk space on /data/tdsql

解决方案

bash
# 检查磁盘空间
df -h

# 清理不必要的文件
rm -rf /tmp/*

# 或扩展磁盘空间
# 或修改TDSQL配置,使用其他磁盘路径

问题4:内存不足

错误信息

Error: Insufficient memory to start TDSQL

解决方案

bash
# 检查内存使用情况
free -h

# 关闭不必要的服务
systemctl stop <service-name>

# 或调整TDSQL内存配置,减少buffer_pool_size

问题5:权限不足

错误信息

Error: Permission denied when writing to /data/tdsql

解决方案

bash
# 检查目录权限
ls -la /data/tdsql

# 设置正确的权限
chown -R tdsql:tdsql /data/tdsql
chmod -R 755 /data/tdsql

安装完成后的建议

文档记录

  • 记录安装配置信息
  • 保存安装日志
  • 记录初始密码和关键参数
  • 编写部署文档

安全加固

  • 更改默认密码
  • 限制远程访问
  • 开启SSL/TLS加密
  • 配置防火墙规则
  • 定期更新安全补丁

性能优化

  • 根据业务需求调整参数
  • 优化存储配置
  • 配置合理的缓存策略
  • 定期进行性能测试

监控与告警

  • 配置全面的监控指标
  • 设置合理的告警阈值
  • 定期检查监控数据
  • 及时处理告警信息

备份与恢复

  • 测试备份恢复流程
  • 定期验证备份有效性
  • 制定灾难恢复计划
  • 定期进行灾难恢复演练

常见问题(FAQ)

Q1: TDSQL支持哪些操作系统?

A1: TDSQL支持主流的Linux操作系统,包括:

  • CentOS 7.6及以上
  • Red Hat Enterprise Linux 7.6及以上
  • Ubuntu 18.04及以上
  • SUSE Linux Enterprise Server 12及以上

Q2: 如何选择合适的硬件配置?

A2: 硬件配置应根据业务需求选择:

  • 小型应用:8核16GB内存,500GB SSD
  • 中型应用:16核32GB内存,1TB SSD
  • 大型应用:32核64GB内存,2TB SSD或更高
  • 核心业务:建议采用分布式架构,多节点部署

Q3: 安装过程中遇到问题如何排查?

A3: 排查安装问题的方法:

  1. 查看安装日志:/opt/tdsql/log/install.log
  2. 检查系统日志:/var/log/messages
  3. 执行预检查脚本:./precheck.sh
  4. 检查依赖是否完整
  5. 检查端口和权限设置

Q4: 如何升级TDSQL版本?

A4: 升级TDSQL版本的步骤:

  1. 备份数据和配置
  2. 下载新版本安装包
  3. 执行升级脚本:./upgrade.sh
  4. 验证升级结果
  5. 测试业务功能

Q5: 如何卸载TDSQL?

A5: 卸载TDSQL的步骤:

  1. 停止服务:systemctl stop tdsql
  2. 执行卸载脚本:./uninstall.sh
  3. 删除数据目录:rm -rf /data/tdsql
  4. 删除安装目录:rm -rf /opt/tdsql
  5. 删除服务文件:rm -f /etc/systemd/system/tdsql.service

Q6: 如何配置主从复制?

A6: 配置主从复制的步骤:

  1. 先安装主库
  2. 在主库上创建复制用户
  3. 备份主库数据
  4. 安装从库
  5. 配置从库连接主库
  6. 启动复制进程
  7. 验证复制状态

Q7: 如何配置高可用集群?

A7: 配置高可用集群的步骤:

  1. 准备3个或更多节点
  2. 安装主库和多个从库
  3. 配置主从复制
  4. 配置集群管理工具
  5. 配置自动故障切换
  6. 测试故障切换功能

Q8: 如何监控TDSQL的运行状态?

A8: 监控TDSQL运行状态的方法:

  1. 使用TDSQL内置监控界面(http://IP:8080
  2. 集成第三方监控工具(Prometheus + Grafana)
  3. 使用MySQL内置命令(SHOW STATUS, SHOW PROCESSLIST等)
  4. 配置监控告警,及时发现问题

Q9: 如何优化TDSQL的性能?

A9: 优化TDSQL性能的方法:

  1. 调整内存配置(innodb_buffer_pool_size)
  2. 优化存储配置(使用SSD,独立日志盘)
  3. 调整并发参数(max_connections)
  4. 优化SQL语句和索引
  5. 配置合理的缓存策略
  6. 考虑读写分离和分库分表

Q10: 如何保障TDSQL的数据安全?

A10: 保障TDSQL数据安全的措施:

  1. 定期备份数据
  2. 配置主从复制和高可用
  3. 开启SSL/TLS加密
  4. 限制用户访问权限
  5. 配置IP白名单
  6. 定期更新密码
  7. 开启审计日志
  8. 定期进行安全扫描