一种MySQL的批量化安装部署方法_2

文档序号:9452900阅读:来源:国知局
ffer_ pool_size),如图 2 所不。InnoDB缓存池实例数(innodb_buffer_pool_instances)的值根 据InnoDB缓存池大小而不同,1GB左右对应一个实例,实例数最多为32个,如下表所示:
[0049]
[0050] 其次,同一个复制架构中的每个MySQL需要设置不同的server_id参数,以免引 起经典的复制死循环等问题。复制死循环发生的一个场景是,MySQL部署时使用相同的 server_id,在搭建复制架构时,需要手工检查同一复制架构中server_id的唯一,性,如果 不小心没有检查,就造成复制死循环。很多人没有注意到,serverjd参数的取值范围其实 相当于一个4字节的无符号整型,与每个IPv4使用4字节正好保持一致。因此,考虑到一 个数据中心的每个Linux操作系统都具有唯一的IPv4地址,本发明的server_id可以从该 IPv4通过一种计算方法得到,如图3所示。
[0051] 有别于使用手工方案修改MySQL参数,本发明通过一段脚本自动化完成MySQL参 数的修改,操作系统普通用户的环境变量设置也使用脚本实现。
[0052] 本发明使用一个Linux服务器作为部署的执行平台,以提高效率,这里称其为部 署服务器,而众多待部署MySQL的Linux服务器则是目标服务器,如图4所示。部署服务器 能够免密码SSH到目标服务器,能远程执行高权限命令。因为部署服务器需要的存储空间 不多,且是间断性执行部署任务的,因此它可以与其他业务系统合用一个Linux服务器。前 面所述的MySQL安装部署包存放在部署节点,同时需要一段部署脚本的配合,其主要实现 过程如下:
[0053] 1?将MySQL安装部署包远程传输到目标服务器的指定目录。
[0054] 2.为MySQL主目录以及其下的所有文件设置合理权限。
[0055] 3.在目标服务器上运行配置脚本,完成MySQL参数文件和环境变量的设置。
[0056] 上述步骤均可在部署服务器上执行完成,减少没有必要的目标服务器登录跳转。 进一步地,可以将这些命令汇总到一个部署脚本中,每个MySQL的部署均只需带参数地执 行该脚本即可。本发明的部署脚本主要内容可以设置如下:
[0057] MYSQL_H0ME = /uOl/mysql
[0058] cd$MYSQL_H0ME
[0059] MEM_T0TAL = 'grep MemTotal/proc/meminfo|awk' {print$2}''
[0060] BUFFER_P00L_SIZE = $((MEM_T0TAL*3/4/1024/1024))
[0061] if["$BUFFER_P00L_SIZE"-lt 2]
[0062] then
[0063] BUFFER_P00L_INSTANCE = 1
[0064] elif["$BUFFER_P00L_SIZE"-ge 32]
[0065] then
[0066] BUFFER_P00L_INSTANCE = 32
[0067] else
[0068] BUFFER_P00L_INSTANCE = $ {BUFFER_P00L_SIZE% .
[0069] fi
[0070] sed-i
[0071] s/innodb_buffer_pool_size = [0-9]*G/innodb_buffer_pool_size = $ {BUFFER_P00
[0072] L_SIZE}G/g my. cnf
[0073] sed-i
[0074] s/innodb_buffer_pool_instances = [0-9]氺/innodb_buffer_pool_instances ={BU
[0075] FFER_P00L_INSTANCE}/g my. cnf
[0076] IP = ' ip addr | sed_n's/[] *inet
[0077] \([0-9]\{l,3\}\(\. [0-9]\{1,3\}\)\{3\}\). *八1/p,|egrep-v,~127. ' |head
[0078] -r
[0079] IP_A = 'echo$IP|awk-F. ' {print$l}' '
[0080] IP_B = 'echo$IP|awk-F. ' {print$2}' '
[0081] IP_C = 'echo$IP|awk-F. ' {print$3}
[0082] IP_D = 'echo$IP|awk-F. ' {print$4}' '
[0083] SERVER_ID = $(($IP_A*256*256*256+$IP_B*256*256+$IP_C*256+$IP_D))
[0084] sed-i s/server_id = [0-9]*/server_id = ${SERVER_ID}/g my. cnf
[0085] 本发明的部署脚本在部署服务器上执行,一部分命令通过SSH在目标服务器上远 程执行,即在目标服务器上远程调用InnoDB参数修改脚本和server_id参数修改脚本,完 成MySQL部署。部署脚本至少有一个目标服务器主机名或IPv4地址的参数,因此,当同时部 署多个MySQL时,可以在后台并行执行多个部署脚本,将日志输出到不同文件待后续查看。 部署服务器可以与跳板机合用。部署服务器存有MySQL安装部署包,使用scp命令可以将 其传输至目标服务器,远程执行命令通过"sshhostco_and"的语法实现。
[0086] 综上所述,本发明在官方Linux通用二进制发行版中按照规范事先添加参数文 件、数据文件,得到当前环境下的MySQL安装部署包,使用部署服务器通过SSH免登录方式 远程完成MySQL部署,从而大大减少了实际部署时所需步骤和时间,满足大规模批量化的 部署需求。本发明实施例是基于Linux给出,其他非类UNIX操作系统虽然与Linux存在较 大差别,但其中的安装部署方法相似,在此不再--赘述。此外,本发明注意到server_id 与IPv4均相当于4字节存储,基于IPv4计算出数据中心唯一的server_id值,避免了复制 死循环的发生。本发明针对数据中心的需求提出了一种规范化、高效率的MySQL部署方法, 具体优点如下:1、给MySQL部署给出了必要的规范,统一运行环境,降低运维复杂度。2、提 高了MySQL部署效率,能够应对大规模MySQL部署所带来的挑战。3、可行性高。
[0087] 虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技 术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范 围当以权利要求书所界定的为准。
【主权项】
1. 一种MySQL的批量化安装部署方法,其特征在于,包括如下步骤: a) 获取MySQL二进制发行版,解压得到MySQL主目录及其下的文件; b) 在MySQL主目录下创建参数文件、初始化数据文件并修改帐号,生成适用于当前环 境的MySQL安装部署包; c) 配置部署服务器,利用部署服务器将MySQL安装部署包远程传输到目标服务器的指 定目录; d) 所述目标服务器根据接收到的MySQL安装部署包进行配置,完成MySQL安装部署。2. 如权利要求1所述的MySQL的批量化安装部署方法,其特征在于,所述步骤b)创建 的参数文件为my.cnf,所述参数文件包含InnoDB缓存池参数以及server_id参数;所述步 骤b)通过执行scripts/mysql_install_db-defaults-file=my.cnf完成数据目录下数 据文件的初始化。3. 如权利要求1所述的MySQL的批量化安装部署方法,其特征在于,所述步骤b)中修 改帐号包括:保留三个MySQL的初始用户:root@127. 0? 0?l、root@: : 1和rootOlocalhost, 并删除掉其他的初始用户。4. 如权利要求1所述的MySQL的批量化安装部署方法,其特征在于,所述步骤b)还包 括创建InnoDB缓存池参数修改脚本,使得目标服务器根据当前系统内存大小设定InnoDB 缓存池大小以及InnoDB缓存池实例数;所述InnoDB缓存池大小为当前目标服务器的 MySQL主目录下/proc/meminfo中读取到的系统内存大小的70%~80%;所述InnoDB缓存 池实例数的值根据InnoDB缓存池大小设定,IGB左右对应一个实例,实例数最多为32个。5. 如权利要求1所述的MySQL的批量化安装部署方法,其特征在于,所述步骤b)还包 括创建server_id参数修改脚本,使得目标服务器获取当前系统的IPv4地址A.B.C.D,并将 server_id设置为A*256*256*256+B*256*256+C*256+D〇6. 如权利要求1所述的MySQL的批量化安装部署方法,其特征在于,所述步骤c)中的 部署服务器上存储有MySQL安装部署包,所述部署服务器设置SSH免密码登录目标服务器, 使用SCP命令将所述MySQL安装部署包传输至目标服务器。7. 如权利要求1所述的MySQL的批量化安装部署方法,其特征在于,所述步骤c)中的 部署服务器通过SSH免密码登录方式在目标服务器上远程调用InnoDB缓存池参数修改脚 本和serverjd参数修改脚本,完成MySQL部署。8. 如权利要求1所述的MySQL的批量化安装部署方法,其特征在于,所述部署服务器与 其他业务系统合用一个Linux服务器,一个部署服务器对应多个目标服务器,并可进行并 行执行部署。
【专利摘要】本发明公开了一种MySQL的批量化安装部署方法,包括如下步骤:a)获取MySQL二进制发行版,解压得到MySQL主目录及其下的文件;b)在MySQL主目录下创建参数文件、初始化数据文件并修改帐号,生成适用于当前环境的MySQL安装部署包;c)配置部署服务器,并将MySQL安装部署包远程传输到目标服务器的指定目录;d)所述目标服务器根据接收到的MySQL安装部署包进行配置,完成MySQL安装部署。本发明通过预先生成适用于当前环境的MySQL安装部署包,减少了实际部署时所需步骤和时间;并利用部署服务器实现远程传输,易于批量化完成MySQL的安装部署,大大提高MySQL的部署效率,可行性高。
【IPC分类】G06F9/445
【公开号】CN105204897
【申请号】CN201510581721
【发明人】程永新, 宋辉, 朱智武
【申请人】上海新炬网络信息技术有限公司
【公开日】2015年12月30日
【申请日】2015年9月14日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1