当前位置: 首页 > news >正文

【数据库相关】TxSQL新增数据库节点步骤

TxSQL新增数据库节点步骤

      • 准备工作与注意事项
      • 具体操作步骤
        • 第 1 步:在主库上创建复制专用账号
        • 第 2 步:对主库进行锁表并获取二进制日志坐标
        • 第 3 步:备份主库数据并传输到新从库
        • 第 4 步:主库解锁
        • 第 5 步:在新从库服务器上准备数据
        • 第 6 步:配置新从库
        • 第 7 步:在从库上配置主从复制链路
        • 第 8 步:启动从库复制进程并验证
        • 第 9 步:更新应用配置或中间件
      • 流程总结与后续监控

好的,为自建的 TDSQL(这里我们理解为基于 MySQL 构建的、类似 TDSQL 架构的数据库集群,如 Master-Slave 或 Group Replication 集群)新增一个数据库从节点,需要一套严谨的手工操作流程。

与腾讯云托管的 TDSQL 不同,自建集群的数据同步、配置修改、服务发现等所有步骤都需要手动完成

以下是详细的步骤指南,假设您的基础架构是标准的 MySQL 主从复制(Master-Slave Replication)。


准备工作与注意事项

⚠️ 重要前提:

  1. 选择业务低峰期:整个操作过程会对主库产生 I/O 和网络压力,务必在业务低峰期进行。
  2. 备份主库:操作前,强烈建议对主数据库进行一次全量备份。
  3. 规划好网络与配置:确保新节点与主节点网络互通,且 server_id 等配置不会冲突。

📋 准备信息:

项目示例说明
主库 IP192.168.1.100现有主数据库服务器的 IP 地址
新从库 IP192.168.1.101新增加的从数据库服务器的 IP 地址
复制账号repl专门用于主从复制的数据库用户
复制密码Repl@123复制用户的密码
主库端口3306主数据库的监听端口
数据目录/var/lib/mysqlMySQL 数据文件存放目录

具体操作步骤

第 1 步:在主库上创建复制专用账号

登录到主库服务器,在 MySQL 中执行以下命令,创建一个专门用于数据复制的账户。

mysql> CREATE USER 'repl'@'192.168.1.101' IDENTIFIED BY 'Repl@123';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101';
mysql> FLUSH PRIVILEGES;

说明'repl'@'192.168.1.101' 表示只允许从 IP 为 192.168.1.101 的服务器使用 repl 用户连接,这是为了安全。

第 2 步:对主库进行锁表并获取二进制日志坐标

为了获取一份一致性的数据快照,需要暂时锁定主库的写操作。

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;

记录下 SHOW MASTER STATUS 命令输出的关键信息,稍后配置从库时会用到

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      745 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
  • File: mysql-bin.000003
  • Position: 745

保持这个终端窗口打开,否则锁会释放! 快速进行下一步的数据备份。

第 3 步:备份主库数据并传输到新从库

使用 mysqldump 或物理备份工具(如 Percona XtraBackup)进行备份。XtraBackup 可以在不长时间锁表的情况下进行热备,更适合生产环境。

方法A:使用 mysqldump(适用于数据量不大或可接受短暂锁表的情况)

# 在主库服务器上执行
$ mysqldump -uroot -p --all-databases --master-data > full_backup.sql# 将备份文件传输到新的从库服务器
$ scp full_backup.sql root@192.168.1.101:/tmp/

方法B(推荐):使用 Percona XtraBackup(热备,最小化锁表时间)

# 1. 在主库上安装XtraBackup并执行备份
$ xtrabackup --backup --user=root --password --target-dir=/path/to/backup/# 2. 准备备份
$ xtrabackup --prepare --target-dir=/path/to/backup/# 3. 将备份文件SCP或RSYNC到新从库服务器
$ rsync -avp /path/to/backup/ root@192.168.1.101:/var/lib/mysql/
第 4 步:主库解锁

数据备份完成后,回到第2步的MySQL终端,释放主库的锁。

mysql> UNLOCK TABLES;

主库现在可以正常处理写入了。

第 5 步:在新从库服务器上准备数据
  1. 安装 MySQL:确保新服务器上已安装与主库完全相同版本的 MySQL。
  2. 停止 MySQL 服务
    $ systemctl stop mysql
    
  3. 清空数据目录(如果是全新安装可跳过):
    $ rm -rf /var/lib/mysql/*
    
  4. 恢复备份数据
    如果使用 mysqldump:
    $ mysql -uroot -p < /tmp/full_backup.sql
    
    如果使用 XtraBackup:
    # 将传输过来的文件权限修改为mysql用户
    $ chown -R mysql:mysql /var/lib/mysql/
    # XtraBackup已经完成了数据恢复的准备
    
第 6 步:配置新从库

编辑新从库的 MySQL 配置文件 /etc/my.cnf/etc/mysql/my.cnf.d/server.cnf

[mysqld]
# 核心配置:每个节点的server_id必须唯一
server-id = 2# 可选配置:开启中继日志和二进制日志(方便后续做级联复制或切换)
relay-log = /var/lib/mysql/mysql-relay-bin
log-bin = /var/lib/mysql/mysql-bin# 可选配置:指定需要复制的数据库(如不设置,默认复制所有)
#replicate-do-db = my_application_db# 可选配置:忽略复制系统库,避免冲突
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = sys

保存配置文件后,启动 MySQL 服务:

$ systemctl start mysql
第 7 步:在从库上配置主从复制链路

登录到新从库的 MySQL,执行以下命令,使用第2步获取的信息。

mysql> CHANGE MASTER TO-> MASTER_HOST='192.168.1.100',      -- 主库IP-> MASTER_USER='repl',               -- 复制账号-> MASTER_PASSWORD='Repl@123',      -- 复制密码-> MASTER_LOG_FILE='mysql-bin.000003', -- 第2步的File-> MASTER_LOG_POS=745;               -- 第2步的Position
第 8 步:启动从库复制进程并验证
  1. 启动 Slave

    mysql> START SLAVE;   -- MySQL 8.0+ 推荐使用 START REPLICA;
    
  2. 检查复制状态(这是最关键的一步):

    mysql> SHOW SLAVE STATUS\G
    

    查看输出结果,重点关注以下字段

    • Slave_IO_State: 等待主库发送事件
    • Slave_IO_Running: Yes
    • Slave_SQL_Running: Yes
    • Seconds_Behind_Master: 0 (表示没有延迟,这是最终目标。刚开始可能是一个很大的数,会逐渐减少)
    • Last_IO_Errno, Last_SQL_Errno: 0 (必须为0,表示没有错误)

    !https://file+.vscode-resource.vscode-cdn.net/Users/pan/Downloads/slave_status.png

第 9 步:更新应用配置或中间件

新的从节点已经加入集群,但应用程序还无法使用它进行读操作。您需要:

  1. 更新应用配置:如果应用直接连接数据库,需要在配置文件中添加新从库的连接信息。
  2. 更新中间件:如果使用了数据库中间件(如 ProxySQL, MaxScale, HAProxy),需要将新从库的IP加入后端服务器组(Backend Servers)并重新加载配置。

流程总结与后续监控

整个手动添加从节点的流程可以总结为以下图表:

在主库创建复制账号
锁主库表并获取binlog坐标
备份主库数据
主库解锁
传输备份到新节点
新节点恢复数据
配置新节点my.cnf
确保server-id唯一
启动新节点MySQL服务
在新节点执行
CHANGE MASTER TO命令
启动Slave复制进程
检查Slave状态
确认IO/SQL线程正常运行
更新应用或中间件配置

后续工作:

  • 监控:持续监控 Seconds_Behind_Master 指标,确保复制延迟为0。
  • 告警:对 Slave_IO_RunningSlave_SQL_Running 状态设置告警,一旦变为 NoConnecting 立即排查。
  • 测试:进行简单的读写测试,在主库插入数据,观察从库是否成功同步。

自建集群的扩容是一个高风险操作,务必做好预案和备份。如果可能,强烈建议采用自动化工具(如 Ansible)或选择云数据库服务来规避手动操作的风险和繁琐性。


文章转载自:

http://1nLhjPWM.jfnLj.cn
http://cnOcQArY.jfnLj.cn
http://S3tWQCXd.jfnLj.cn
http://BFiDRyc0.jfnLj.cn
http://a7LLfxXa.jfnLj.cn
http://TwyMbPVd.jfnLj.cn
http://90aBevTO.jfnLj.cn
http://YlA2rtAK.jfnLj.cn
http://6YW0bXoi.jfnLj.cn
http://sWErD5jQ.jfnLj.cn
http://9mjutTnB.jfnLj.cn
http://Wa49zaIA.jfnLj.cn
http://spTzPkkZ.jfnLj.cn
http://glZju28j.jfnLj.cn
http://4lZjW2hw.jfnLj.cn
http://F0pXb8Cz.jfnLj.cn
http://9pq4Cbwn.jfnLj.cn
http://Ehhcvqn6.jfnLj.cn
http://Y7x91kVn.jfnLj.cn
http://zZmIangT.jfnLj.cn
http://g10oZ4Fe.jfnLj.cn
http://XYxHN8bv.jfnLj.cn
http://4HRW6hE4.jfnLj.cn
http://BiFKW98i.jfnLj.cn
http://yfzPiVzz.jfnLj.cn
http://hwGpw4h5.jfnLj.cn
http://3ntt7qnq.jfnLj.cn
http://jjXJ1jg4.jfnLj.cn
http://5ZLYKwq0.jfnLj.cn
http://NZRtvxfU.jfnLj.cn
http://www.dtcms.com/a/369847.html

相关文章:

  • 理想汽车智驾方案介绍 4 World model + 强化学习重建自动驾驶交互环境
  • 大语言模型预训练数据采集与清洗技术实践:从语料到知识库的全流程优化
  • 腾讯混元翻译模型Hunyuan-MT-7B开源,先前拿了30个冠军
  • MiniDrive:面向自动驾驶的更高效的视觉语言模型
  • 2025年渗透测试面试题总结-54(题目+回答)
  • 《Kubernetes 构建 MySQL MGR 集群实战教程》
  • 创建阿里云ECS实例操作(免费试用版)
  • 【数学建模】质量消光系数在烟幕遮蔽效能建模中的核心作用
  • 小孔成像原理
  • 操作系统基本概念.1
  • Jupyter Notebook与cpolar:构建跨地域数据科学协作平台
  • 山西移动九联UNT413HS-海思MV320-2+8G-原机全量备份包
  • AI热点周报(8.31~9.6): Qwen3‑Max‑Preview上线、GLM-4.5提供一键迁移、Gemini for Home,AI风向何在?
  • 【C++】C++11的可变参数模板、emplace接口、类的新功能
  • [特殊字符] 从零到一:打造你的VSCode圈复杂度分析插件
  • JVM如何排查OOM
  • Miniconda安装与VSCode搭建远程Python、Jupyter开发环境
  • 智能客户服务支持智能体
  • Gutenberg块编辑器:WordPress 2025高效内容开发指南
  • JUC、JVM八股补充
  • windows找不到gpedit.msc(本地组策略编辑器)
  • 【洛谷】队列相关经典算法题详解:模板队列、机器翻译、海港
  • 激光频率梳 3D 轮廓测量 - 油路板的凹槽深度和平面度测量
  • 24.线程概念和控制(一)
  • Altium Designer(AD24)切换工作界面为浅灰色的方法
  • 让字符串变成回文串的最少插入次数-二维dp
  • 零基础入门深度学习:从理论到实战,GitHub+开源资源全指南(2025最新版)
  • 从文本到知识:使用LLM图转换器构建知识图谱的详细指南
  • 【开题答辩全过程】以 停车场管理系统的设计与实现为例,包含答辩的问题和答案
  • 带fat32文件系统的bin二进制文件制作教程