zoukankan      html  css  js  c++  java
  • MySQL-NDB7.6集群软件升级

    注意事项

    • 由于磁盘文件格式发生改变,升级或降级到下面任一版本时,需要将每个数据节点重新初始化

      • NDB 7.6.2中为NDB磁盘数据表引入了一种新的文件格式,这使得可以在不重复使用任何表ID的情况下唯一标识每个磁盘数据表。该格式在NDB 7.6.4中得到了进一步改进
        • NDB 7.6.2
        • NDB 7.6.4
      • 应重新创建任何现有的表空间并撤消日志文件组
        • 通过--initial在升级过程中对每个数据节点执行一次初始重启来完成此操作
    • 据内存池和动态索引内存

      • 索引所需要的内存通过动态分配(内存值由DataMemory参数指定),因此不建议在config.ini文件中设置IndexMemory参数项
      • 在特定的系统环境(如需要大量缓冲区,大量数据加载 等系统)中,需要指定SharedGlobalMemory参数,增加事务内存

    软件升级流程

    滚动升级(在线)

    • 备份数据库

    • 检查版本兼容性及新特性

    • 滚动更新

      • 先在每个SQL节点更新

      • (创建新config.ini文件)安装新版本软件

      • 其次,在管理节点服务器上,执行ndb_mgmd --reload 选项启动服务

      • 然后,在每个数据节点执行ndb(or ndbmtd) 启动服务

        • 启动时带上--initial 选项:强制清除待升级数据节点上文件,并从其他数据节点重新加载所有NDB Cluster数据和元数据
        • 通过ndb_mgm客户端执行start backup命令备份数据,升级软件后,使用ndb_restore将数据还原到一个或多个数据节点上
        • 升级前使用mysqldump创建一个数据备份,升级后,通过load data 的方式恢复数据
          • mysqldump --no-data --triggers --routines <DB> > <DB>.sql
    • 更新系统表

    详细步骤(在线)

    备份数据库
    使用 ndb_mgm 客户端方式备份
    ndb_mgm -e "START BACKUP"
    
    # 还原 ndb_restore 
    ## ndb_restore -n 1 -b 1 -r /path/to/BACKUP-1 -f --include-table='mysql.ndb_apply_status'
    ## ndb_restore -n 2 -b 1 -r /path/to/BACKUP-1 -f --include-table='mysql.ndb_apply_status' 
    
    mysql.ndb_binlog_index 中获取 binlog 信息
    SELECT * FROM mysql.ndb_apply_status;
    
    SELECT SUBSTRING_INDEX(File, '/', -1) AS Master_Log_File , Position AS Master_Log_Pos
    FROM mysql.ndb_binlog_index WHERE epoch > 217458489163782 /* 上面查询得到的 epoch 的值 */
    ORDER BY epoch ASC LIMIT 1;
    
    -- CHANGE MASTER TO MASTER_LOG_FILE="master-bin.00001",MASTER_LOG_POS=305976;
    
    备份将每个SQL节点的binlog日志文件
    #  利用系统工具如:tar, scp等备份binlog日志文件
    
    用mysqldump 工具备份权限表
    通过mysqldump工具备份数据
    mysqldump --no-data --triggers --routines --events mydb > schema_mydb.sql
    
    检查软件的兼容性
    • 检查 MysQL NDB Cluster 软件的兼容性
    • 检查 MysQL NDB Cluster 软件变更历史
    • 检查 MySQL Server 版本变更历史情况
    滚动更新(每个节点)
    • 停止节点上服务进程
    • 替换相关二进制文件
    • 用新版本软件启动节点上服务进程
    更新SQL 节点
    # 1. 关闭SQL节点
    service stop mysqld3308
    
    # 2. 更新软件 ndbd or ndbmtd
    SOFT_FILE_NAME="mysql-cluster-gpl-7.6.17-linux-glibc2.12-x86_64.tar.gz"
    unlink ${SOFT_LINK_DIR}
    tar -xf ${SOFT_FILE_NAME}.tar.gz --no-same-owner -C ${SOFT_INSTALL_DIR}
    ln -s ${SOFT_INSTALL_DIR}/${SOFT_FILE_NAME} ${SOFT_LINK_DIR}
    
    # 3. 启动服务
    service start mysqld3308
    
    更新管理节点
    # 1. 关闭管理节点
    ## ndb_mgm -e "SHOW" -c <connect-string>
    ## ndb_mgm -e "<mgm-nodeid> STOP" -c <connect-string>
    ndb_mgm -e "100 stop"
    
    # 2. 更新 ndb_mgmd 和 ndb_mgm 文件
    cp ${SOFT_LINK_DIR}/bin/ndb_mgmd{,bak}
    cp ${SOFT_LINK_DIR}/bin/ndb_mgm{,bak}
    
    # 3. 启动管理节点进程服务
    ${SOFT_LINK_DIR}/bin/ndb_mgmd -f ${SOFT_LINK_DIR}/config.ini --configdir=${DATA_DIR}  --reload
    
    更新数据节点
    # 1. 关闭数据节点
    ## ndb_mgm -e "<data-nodeid> STOP" -c <connect-string>
    ndb_mgm -e "1 stop"
    
    # 2. 更新软件 ndbd or ndbmtd
    cp ${SOFT_LINK_DIR}/bin/ndbd{,bak}
    cp ${SOFT_LINK_DIR}/bin/ndbmtd{,bak}
    
    # 3. 启动服务
    ${SOFT_LINK_DIR}/bin/ndbd --initial
    
    更新系统表信息

    待完成上面软件更新之后,执行 mysql_upgrade 更新系统表

    mysql_upgrade -uroot -p -P3308
    

    离线更新|降级详细步骤

    备份数据库

    同上

    检查兼容性和新特性
    停止所有节点服务
    停止SQL 节点
    service mysqld3308 stop
    
    停止NDB Cluster
    ndb_mgm -e "SHUTDOWN" -c <connect-string>
    
    变更所有节点软件
    SQL 节点
    SOFT_FILE_NAME="mysql-cluster-gpl-7.6.17-linux-glibc2.12-x86_64.tar.gz"
    unlink ${SOFT_LINK_DIR}
    tar -xf ${SOFT_FILE_NAME}.tar.gz --no-same-owner -C ${SOFT_INSTALL_DIR}
    ln -s ${SOFT_INSTALL_DIR}/${SOFT_FILE_NAME} ${SOFT_LINK_DIR}
    
    管理节点
    
    
    数据节点
    
    
    启动NDB 集群
    启动管理节点
    ${SOFT_LINK_DIR}/bin/ndb_mgmd -f ${SOFT_LINK_DIR}/config.ini --configdir=${DATA_DIR} --initial -c <connect-string>
    
    启动数据节点
    ${SOFT_LINK_DIR}/bin/ndbd 
    
    启动SQL节点
    service mysqld3308 start
    
    运行mysql_upgrade更新系统表
    mysql_upgrade
    
    验证集群表和数据

    有必要时,通过 ndb_restore 工具导入备份数据

    ndb_restore [-c connection_string] -n node_id -b backup_id 
          [-m] -r --backup-path=/path/to/backup/files
    
  • 相关阅读:
    对pg_latch.c 的来源探索
    对PostgreSQL的执行计划的初步学习
    21个css和Ajax表格
    23种设计模式有趣诠释
    Spket IDE, Ext开发人员的紫色匕首~
    Sql Server 2008 Reporting Services系列(一)
    C#积累(二)——ASP.NET的Session会加锁
    在TSQL语句中访问远程数据库(openrowset/opendatasource/openquery)
    ASP.NET视图的保存与加载解析(一)——视图的保存
    C#积累(一)——扩展方法就近原则和匿名类型的成员探讨
  • 原文地址:https://www.cnblogs.com/binliubiao/p/14520113.html
Copyright © 2011-2022 走看看