Skip to content

TDSQL 实例启动/停止

实例启动

启动方式

1. 使用命令行启动

bash
# 启动TDSQL实例
tdsql_safe --defaults-file=/etc/tdsql/my.cnf &

# 或使用systemd管理
systemctl start tdsql

# 或使用service命令
service tdsql start

2. 使用管理控制台启动

  • 登录TDSQL管理控制台
  • 选择目标实例
  • 点击"启动"按钮
  • 确认启动操作
  • 等待实例状态变为"运行中"

3. 使用API启动

bash
# 使用TDSQL API启动实例
curl -X POST \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"instance_id": "tdsql-123456"}' \
  https://tdsql-api.example.com/v1/instances/start

启动前检查

系统资源检查

bash
# 检查磁盘空间
df -h

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

# 检查CPU负载
uptime

# 检查端口是否被占用
netstat -tuln | grep 3306

配置文件检查

  • 检查配置文件是否存在且权限正确
  • 验证配置文件语法是否正确
  • 检查数据目录和日志目录配置
  • 确认配置文件中的关键参数设置

数据文件检查

  • 检查数据文件是否完整
  • 验证日志文件状态
  • 检查二进制日志位置
  • 确认表空间文件存在

启动过程监控

查看启动日志

bash
# 查看错误日志
tail -f /var/log/tdsql/error.log

# 查看启动日志
grep "start" /var/log/tdsql/error.log

检查实例状态

bash
# 检查进程是否运行
ps aux | grep mysqld

# 检查端口是否监听
netstat -tuln | grep 3306

# 使用mysqladmin检查状态
mysqladmin -u root -p status

实例停止

停止方式

1. 优雅停止

bash
# 使用mysqladmin优雅停止
mysqladmin -u root -p shutdown

# 或使用systemd优雅停止
systemctl stop tdsql

# 或使用service命令优雅停止
service tdsql stop

2. 强制停止

bash
# 强制终止进程
pkill -9 mysqld

# 或使用systemd强制停止
systemctl kill tdsql

3. 使用管理控制台停止

  • 登录TDSQL管理控制台
  • 选择目标实例
  • 点击"停止"按钮
  • 确认停止操作
  • 等待实例状态变为"已停止"

停止前准备

1. 业务通知

  • 提前通知业务方停止时间
  • 确认业务低峰期
  • 制定详细的停机计划
  • 建立应急回滚机制

2. 数据一致性检查

sql
-- 检查当前连接数
SHOW GLOBAL STATUS LIKE 'Threads_connected';

-- 检查正在执行的事务
SHOW ENGINE INNODB STATUS\G

-- 检查慢查询
SHOW PROCESSLIST WHERE Time > 60;

-- 刷新表数据到磁盘
FLUSH TABLES WITH READ LOCK;

3. 备份数据

  • 执行全量备份
  • 备份二进制日志
  • 验证备份文件完整性
  • 存储备份文件到安全位置

停止过程监控

查看停止日志

bash
# 查看错误日志
tail -f /var/log/tdsql/error.log

# 查看停止日志
grep "shutdown" /var/log/tdsql/error.log

检查实例状态

bash
# 检查进程是否已停止
ps aux | grep mysqld

# 检查端口是否已释放
netstat -tuln | grep 3306

实例重启

重启方式

1. 命令行重启

bash
# 使用systemd重启
systemctl restart tdsql

# 或使用service命令重启
service tdsql restart

# 或先停止再启动
mysqladmin -u root -p shutdown
tdsql_safe --defaults-file=/etc/tdsql/my.cnf &

2. 管理控制台重启

  • 登录TDSQL管理控制台
  • 选择目标实例
  • 点击"重启"按钮
  • 确认重启操作
  • 等待实例状态变为"运行中"

重启注意事项

  • 重启会中断业务连接
  • 重启前需确保所有事务已提交
  • 重启过程中会进行日志回放和崩溃恢复
  • 重启后需验证实例状态和业务功能

实例状态管理

查看实例状态

命令行方式

bash
# 使用mysqladmin查看状态
mysqladmin -u root -p status

# 查看实例详细状态
mysql -u root -p -e "SHOW GLOBAL STATUS;"

SQL方式

sql
-- 查看实例状态
SHOW STATUS;

-- 查看InnoDB状态
SHOW ENGINE INNODB STATUS\G

-- 查看变量设置
SHOW VARIABLES;

实例状态解释

  • 运行中:实例正常运行,可接受连接
  • 已停止:实例已停止,不可接受连接
  • 启动中:实例正在启动过程中
  • 停止中:实例正在停止过程中
  • 异常:实例运行异常,需要检查
  • 维护中:实例正在进行维护操作

最佳实践

启动最佳实践

  • 定期备份配置文件
  • 启动前检查系统资源
  • 监控启动过程中的日志
  • 启动后验证实例状态和业务功能
  • 建立启动操作的标准化流程

停止最佳实践

  • 提前通知业务方
  • 选择业务低峰期进行
  • 停止前备份数据
  • 优先使用优雅停止方式
  • 记录停止原因和时间

自动化管理

  • 使用systemd或其他进程管理工具
  • 配置自动启动脚本
  • 实现启动/停止的监控和告警
  • 建立自动化的实例管理平台

应急处理

  • 准备启动/停止失败的应急预案
  • 建立故障处理流程
  • 定期演练启动/停止操作
  • 保持技术支持渠道畅通

常见问题(FAQ)

Q1: 实例启动失败怎么办?

A1: 实例启动失败的处理步骤:

  1. 查看错误日志,定位失败原因
  2. 检查配置文件是否正确
  3. 验证数据文件完整性
  4. 检查系统资源是否充足
  5. 确认端口是否被占用
  6. 尝试使用 --skip-grant-tables 等参数启动
  7. 如无法解决,联系技术支持

Q2: 如何优雅停止长时间运行的事务?

A2: 优雅停止长时间运行事务的方法:

  1. 查看当前运行的事务
  2. 通知业务方终止长时间运行的操作
  3. 等待事务自然结束
  4. 如果无法等待,可考虑使用 KILL 命令终止事务
  5. 记录终止的事务信息,以便后续分析

Q3: 实例重启会影响业务吗?

A3: 实例重启会影响业务:

  • 重启过程中实例不可用,业务连接会中断
  • 重启后需要重新建立连接
  • 重启会进行日志回放,可能需要一定时间
  • 建议在业务低峰期进行重启操作

Q4: 如何设置实例开机自动启动?

A4: 设置实例开机自动启动的方法:

  • 使用systemd:systemctl enable tdsql
  • 使用chkconfig:chkconfig tdsql on
  • 在/etc/rc.local中添加启动命令
  • 配置云平台的自动启动选项

Q5: 如何监控实例启动/停止操作?

A5: 监控实例启动/停止操作的方法:

  • 配置日志监控,实时关注启动/停止事件
  • 使用监控工具监控实例状态变化
  • 配置告警规则,当实例状态变化时发送通知
  • 记录所有启动/停止操作的日志和审计信息