外观
TDSQL 环境初始化
系统环境准备
操作系统选择
TDSQL支持多种Linux操作系统,建议选择以下稳定版本:
| 操作系统 | 版本要求 |
|---|---|
| CentOS | 7.6-7.9 |
| Red Hat Enterprise Linux | 7.6-7.9 |
| Ubuntu Server | 18.04 LTS, 20.04 LTS |
| Debian | 10, 11 |
系统更新
在安装TDSQL之前,建议先将系统更新到最新版本,以获取最新的安全补丁和系统优化:
bash
# CentOS/RHEL系统更新命令
sudo yum update -y
# Ubuntu/Debian系统更新命令
sudo apt update -y
sudo apt upgrade -y系统时区配置
确保所有节点使用统一的时区,建议使用东八区(Asia/Shanghai),并启用NTP时间同步,保证节点间时间一致性:
bash
# 查看当前系统时区
date +"%Z %z"
# 设置时区为东八区
sudo timedatectl set-timezone Asia/Shanghai
# 启用NTP时间同步
sudo timedatectl set-ntp yes
# 验证时间同步状态
timedatectl status关闭不必要的服务
关闭不必要的系统服务,可提高系统资源利用率和安全性:
bash
# 关闭防火墙(生产环境建议配置规则,而非直接关闭)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 关闭SELinux
# 临时禁用SELinux
sudo setenforce 0
# 永久禁用SELinux,修改配置文件
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 关闭IPv6(如不需要IPv6支持)
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.conf
sudo echo "net.ipv6.conf.default.disable_ipv6=1" >> /etc/sysctl.conf硬件资源配置
CPU配置
根据TDSQL节点角色,配置足够的CPU资源:
| 节点角色 | 最低配置 | 推荐配置 |
|---|---|---|
| 主节点 | 8核16线程 | 16核32线程 |
| 从节点 | 8核16线程 | 16核32线程 |
| 监控节点 | 4核8线程 | 8核16线程 |
| 管理节点 | 4核8线程 | 8核16线程 |
内存配置
为不同角色的节点配置足够的内存资源:
| 节点角色 | 最低配置 | 推荐配置 |
|---|---|---|
| 主节点 | 32GB | 64GB |
| 从节点 | 32GB | 64GB |
| 监控节点 | 16GB | 32GB |
| 管理节点 | 16GB | 32GB |
存储配置
磁盘分区
建议使用独立的磁盘或分区存储TDSQL数据和日志,以提高性能和数据安全性:
bash
# 查看系统磁盘列表
sudo fdisk -l
# 分区操作(以/dev/sdb为例)
sudo fdisk /dev/sdb
# 输入n创建新分区,p创建主分区,1创建第一个分区,回车使用默认大小,w保存并退出
# 格式化分区为XFS文件系统
sudo mkfs.xfs /dev/sdb1
# 创建挂载点
sudo mkdir -p /home/tdsql/data
# 添加到/etc/fstab实现开机自动挂载
sudo echo "/dev/sdb1 /home/tdsql/data xfs defaults 0 0" >> /etc/fstab
# 挂载分区
sudo mount -a存储性能优化
优化存储性能,提高TDSQL运行效率:
bash
# 调整磁盘调度算法(SSD使用deadline,HDD使用cfq)
sudo echo "deadline" > /sys/block/sdb/queue/scheduler
# 永久设置调度算法
sudo echo "ACTION==\"add|change\", KERNEL==\"sd*\", ATTR{queue/scheduler}="deadline"" > /etc/udev/rules.d/60-scheduler.rules
# 关闭磁盘访问时间记录
sudo mount -o remount,noatime /home/tdsql/data
# 永久关闭访问时间记录,修改/etc/fstab
sudo sed -i 's/defaults/defaults,noatime/g' /etc/fstab内核参数优化
网络参数优化
优化网络参数,提高TDSQL网络性能:
bash
# 创建网络参数配置文件
cat > /etc/sysctl.d/tdsql-network.conf << EOF
# 提高TCP连接队列长度
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# 减少TCP连接关闭延迟
net.ipv4.tcp_fin_timeout = 30
# 启用TCP连接复用和回收
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
# 优化TCP keepalive参数
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
# 提高TCP缓冲区大小
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
# 启用TCP快速打开
net.ipv4.tcp_fastopen = 3
# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
# 禁用发送ICMP重定向
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
EOF
# 应用网络参数
sudo sysctl -p /etc/sysctl.d/tdsql-network.conf文件系统参数优化
优化文件系统参数,提高IO性能:
bash
# 创建文件系统参数配置文件
cat > /etc/sysctl.d/tdsql-fs.conf << EOF
# 提高文件句柄限制
fs.file-max = 655350
# 提高inode缓存
fs.inode-max = 1000000
# 优化脏页回写参数
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
vm.dirty_writeback_centisecs = 500
vm.dirty_expire_centisecs = 3000
# 减少swap使用
vm.swappiness = 1
# 提高内存映射限制
vm.max_map_count = 262144
EOF
# 应用文件系统参数
sudo sysctl -p /etc/sysctl.d/tdsql-fs.conf用户和权限配置
创建TDSQL用户
创建专门的用户用于运行TDSQL,提高系统安全性:
bash
# 创建tdsql用户
sudo useradd -m -d /home/tdsql -s /bin/bash tdsql
# 设置用户密码
sudo passwd tdsql
# 添加到sudo组(可选,便于管理)
sudo usermod -aG wheel tdsql目录权限配置
配置TDSQL相关目录的权限:
bash
# 创建必要的目录
sudo mkdir -p /home/tdsql/data /home/tdsql/logs /home/tdsql/conf /home/tdsql/backup
# 设置目录所有者和权限
sudo chown -R tdsql:tdsql /home/tdsql
sudo chmod -R 750 /home/tdsql文件描述符限制
提高TDSQL用户的文件描述符限制:
bash
# 创建文件描述符限制配置文件
cat > /etc/security/limits.d/tdsql.conf << EOF
# TDSQL用户文件描述符限制
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
# TDSQL进程限制
tdsql soft memlock unlimited
tdsql hard memlock unlimited
tdsql soft stack 8192
tdsql hard stack 16384
EOF依赖安装
基础依赖
安装TDSQL运行所需的基础依赖:
bash
# CentOS/RHEL系统安装命令
sudo yum install -y gcc gcc-c++ make cmake autoconf automake libtool libmysqlclient-devel libpq-devel openssl-devel zlib-devel python3 python3-pip python3-devel
# Ubuntu/Debian系统安装命令
sudo apt install -y build-essential cmake autoconf automake libtool libmysqlclient-dev libpq-dev libssl-dev zlib1g-dev python3 python3-pip python3-devPython依赖
安装TDSQL管理工具所需的Python依赖:
bash
# 升级pip工具
sudo pip3 install --upgrade pip
# 安装所需依赖包
sudo pip3 install pymysql psycopg2-binary redis requests prometheus-client监控依赖
安装TDSQL监控所需的依赖:
bash
# 下载并安装Node Exporter(用于监控系统资源)
download_url=https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
sudo wget $download_url -O /tmp/node_exporter.tar.gz
sudo tar -zxvf /tmp/node_exporter.tar.gz -C /opt
sudo mv /opt/node_exporter-1.2.2.linux-amd64 /opt/node_exporter
# 创建systemd服务文件
cat > /etc/systemd/system/node_exporter.service << EOF
[Unit]
Description=Node Exporter
After=network.target
[Service]
Type=simple
User=tdsql
ExecStart=/opt/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 启动并启用Node Exporter服务
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter网络配置
主机名配置
配置节点主机名,便于管理和识别:
bash
# 设置主机名(以tdsql-master为例)
sudo hostnamectl set-hostname tdsql-master
# 更新/etc/hosts文件,添加所有节点的主机名和IP映射
sudo cat >> /etc/hosts << EOF
10.0.0.10 tdsql-master
10.0.0.11 tdsql-slave1
10.0.0.12 tdsql-slave2
10.0.0.13 tdsql-monitor
EOFSSH免密登录
配置节点间SSH免密登录,便于管理和自动化操作:
bash
# 在所有节点上执行以下命令,生成SSH密钥对
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
# 将公钥复制到所有节点,实现免密登录
for host in tdsql-master tdsql-slave1 tdsql-slave2 tdsql-monitor;
do
ssh-copy-id -i ~/.ssh/id_rsa.pub $host;
done端口配置
确保TDSQL所需的端口已开放:
| 端口 | 用途 |
|---|---|
| 3306 | 数据库服务端口 |
| 33060 | 监控和管理端口 |
| 9100 | Node Exporter端口 |
| 9104 | MySQL Exporter端口 |
| 22 | SSH管理端口 |
bash
# 如果防火墙开启,需要开放相关端口
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --permanent --add-port=33060/tcp
sudo firewall-cmd --permanent --add-port=9100/tcp
sudo firewall-cmd --permanent --add-port=9104/tcp
sudo firewall-cmd --reload环境验证
系统资源验证
验证系统资源是否满足TDSQL运行要求:
bash
# 查看CPU信息
lscpu | grep -E 'Model name|CPU\(s\)'
# 查看内存信息
free -h
# 查看磁盘信息
df -h
# 查看磁盘IO性能
iostat -dx 1 3
# 查看网络性能
ethtool eth0 | grep -E 'Speed|Duplex'依赖验证
验证所需依赖是否已正确安装:
bash
# 验证Python版本
python3 --version
# 验证GCC版本
gcc --version
# 验证CMake版本
cmake --version
# 验证OpenSSL版本
openssl version网络连通性验证
验证节点间网络连通性:
bash
# 测试节点间ping连通性
ping -c 3 tdsql-slave1
# 测试端口连通性
telnet tdsql-master 3306
# 或使用nc命令测试端口连通性
nc -zv tdsql-master 3306初始化脚本
创建初始化脚本,便于快速部署多个节点:
bash
cat > tdsql_env_init.sh << EOF
#!/bin/bash
# 系统更新
yum update -y
# 安装基础依赖
yum install -y gcc gcc-c++ make cmake autoconf automake libtool libmysqlclient-devel libpq-devel openssl-devel zlib-devel python3 python3-pip python3-devel
# 创建tdsql用户
useradd -m -d /home/tdsql -s /bin/bash tdsql
echo "tdsql:tdsql@123" | chpasswd
usermod -aG wheel tdsql
# 创建目录
mkdir -p /home/tdsql/data /home/tdsql/logs /home/tdsql/conf /home/tdsql/backup
chown -R tdsql:tdsql /home/tdsql
chmod -R 750 /home/tdsql
# 配置文件描述符限制
cat > /etc/security/limits.d/tdsql.conf << LIMITS
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
tdsql soft memlock unlimited
tdsql hard memlock unlimited
LIMITS
# 配置内核参数
cat > /etc/sysctl.d/tdsql.conf << SYSCTL
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 = 0
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
fs.file-max = 655350
vm.swappiness = 1
vm.max_map_count = 262144
SYSCTL
sysctl -p /etc/sysctl.d/tdsql.conf
echo "TDSQL环境初始化完成!"
EOF
# 添加执行权限
chmod +x tdsql_env_init.sh常见问题(FAQ)
Q1: 如何查看系统内核版本?
A1: 使用以下命令查看系统内核版本:
bash
uname -rQ2: 如何检查磁盘IO性能?
A2: 可以使用iostat、fio或dd命令测试磁盘IO性能:
bash
# 使用iostat查看实时IO状态
iostat -dx 1
# 使用fio进行IO性能测试
fio --name=randwrite --ioengine=libaio --direct=1 --rw=randwrite --bs=4k --size=1G --numjobs=4 --runtime=60 --group_reporting
# 使用dd命令进行简单测试
dd if=/dev/zero of=/home/tdsql/test bs=4k count=100000 oflag=directQ3: 如何检查网络带宽?
A3: 可以使用iperf3工具测试网络带宽:
bash
# 在一台节点上启动服务器
iperf3 -s
# 在另一台节点上测试
iperf3 -c tdsql-masterQ4: 如何解决"Permission denied"错误?
A4: 检查文件或目录的所有者和权限,确保TDSQL用户有足够的权限访问:
bash
# 查看文件权限
ls -l /home/tdsql/data
# 修改所有者和权限
chown -R tdsql:tdsql /home/tdsql
chmod -R 750 /home/tdsqlQ5: 如何优化系统启动时间?
A5: 关闭不必要的系统服务,提高系统启动速度:
bash
# 查看开机启动的服务
systemctl list-unit-files --type=service --state=enabled
# 禁用不必要的服务
systemctl disable postfix NetworkManager-wait-online.serviceQ6: 如何设置系统定时任务?
A6: 使用crontab设置定时任务,用于备份、监控等:
bash
# 编辑tdsql用户的crontab
crontab -u tdsql -e
# 添加定时任务(每天凌晨2点执行备份)
0 2 * * * /home/tdsql/scripts/backup.shQ7: 如何检查系统负载?
A7: 使用top、htop或uptime命令查看系统负载:
bash
# 查看系统负载
top
# 或使用uptime
uptimeQ8: 如何查看系统日志?
A8: 使用journalctl或查看/var/log目录下的日志文件:
bash
# 查看系统日志
journalctl -n 100
# 查看安全日志
cat /var/log/secure
# 查看messages日志
cat /var/log/messagesQ9: 如何关闭透明大页?
A9: 关闭透明大页,提高TDSQL性能:
bash
# 临时关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 永久关闭透明大页,添加到/etc/rc.d/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.d/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.localQ10: 如何验证时钟同步?
A10: 使用ntpq或chronyc命令验证时钟同步:
bash
# 使用ntpq查看时钟同步状态
ntpq -p
# 使用chronyc查看时钟同步源
chronyc sources最佳实践
- 使用标准化配置:所有节点使用相同的系统版本、内核参数和配置,便于管理和维护
- 定期更新系统:定期更新系统和依赖包,修复安全漏洞
- 监控系统资源:部署监控系统,实时监控CPU、内存、IO和网络性能
- 使用自动化工具:使用Ansible、Terraform等自动化工具管理节点,提高部署效率
- 文档化配置:记录所有配置变更,便于追踪和回滚
- 测试环境验证:在测试环境验证配置变更,确保不影响生产环境
- 遵循最小权限原则:只授予TDSQL用户必要的权限,提高系统安全性
- 备份重要配置:定期备份/etc/fstab、/etc/sysctl.conf等重要配置文件
- 使用日志管理工具:使用ELK、Graylog等工具集中管理系统日志,便于分析和故障排查
- 定期性能评估:定期评估系统性能,及时调整配置,优化TDSQL运行效率
