MySQL数据库服务器初始化步骤

日期: 2011-09-19 作者:Eugene 来源:TechTarget中国 英文

  文章内容中介绍的MySQL数据库服务器初始化步骤,是作者曾经在呆过的某著名电子商务公司的工作中,摸索而总结的服务器初始化步骤,不过是根据遗留的部分内容,外加回忆而重新整理成文章,供大家工作中参考。

  风险性操作命令被强迫隐含重改写

  1) Shell命令rm:不管你输入的rm 后面为何参数,都会隐形地转为 rm –i 命令执行;

  2) Shell命令cp:不管你输入的cp 后面为何参数,都会隐形地转为 cp –i 命令执行;

  3) Shell命令mv:不管你输入的mv后面为何参数,都会隐形地转为 mv –i 命令执行;

  修改每个操作系统级别帐号默认配置的隐藏文件bash_profile的内容,实现上述3个命令的隐形修改,同时也可能增加路径和提示等其他信息,具体的详细信息可以参考文章设置Linux系统的环境变量方式,减少悲剧操作的发生。

  服务器名称

  主机名称要能包含三部分信息:服务器所在的机房名称、应用名称、集群中的代号。另外,为方便统一管理,与其他兄弟部门交流和合作,改变过去自成章法的做法,而制定严格的格式要求,三部分的连接符合统一为中划线“-”,举例说明:xy-brmms-db1a、xy-brmms-db1b、xy-brmms-db2a、xy-brmms-db2b….

  其中,db1a和db1b表示一对互为主备的主从复制关系,集群中有多台服务器支持数据服务,则最后二位的数字和字母会相应变化而体现出来。

  ITIL流程单提交

  1) 域名申请:若应用程序访问数据库服务器的方式,是通过域名而非IP地址的时候,则需要提交ITIL流程单,并且指定为SA部门的***同事,一般会在2个小时内处理,故需要提前申请准备好;

  2) 服务器的IP地址变更:若想更改数据库服务器的IP地址,包含做VIP用处的IP地址,则需要提交ITIL流程单,并且指定为网络部门的***同事,此需求一般会及时响应,但依然建议提前填写;

  3) 服务器访问安全列表增加:待服务器所有的配置工作都完成之后,通过向安全部门提交ITIL流程单方式,要求描述清楚:服务器的IP地址信息(备注:需要用到VIP或域名的,也需要一并描述清楚),主机的名称,那个组的成员或个人需要访问此服务器,并且描述清楚各自需要拥有的权限,以及默认登录的帐号名称(一般默认为:admin);

  MySQL软件包安装

  鉴于我们使用MySQL开源软件的社区版本产品,其测试和验证过程主要依赖社区的用户和开源贡献者完成,即使商业产品也不能盲目使用最新发布的版本,另外使用的版本必须经过我们做过一定量针对性的测试,以及开发环境或性能测试环境验证过,为此推荐使用版本:5.1.34、5.1.36、5.1.40,若是想使用Plugin-innodb,则推荐使用版本:mysql-5.1.48,暂不推荐生产环境使用版本:mysql 5.5.*系列。

  以mysql 5.1.40版本为例,安装的软件包为:

  MySQL-server-community-5.1.40-0.rhel5.x86_64.rpm
  MySQL-shared-community-5.1.40-0.rhel5.x86_64.rpm
  MySQL-client-community-5.1.40-0.rhel5.x86_64.rpm
  MySQL-devel-community-5.1.40-0.rhel5.x86_64.rpm

  MySQL数据库的初始化

  1) 主备服务器都优先增加用于复制的帐

GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’%’ IDENTIFIED BY’XXXXXXXXXXXXXXXXXX’;

  2) 待主主复制搭建完成后,任选一台主机执行其他初始化操作

  初始化root帐号的信息:

  DELETE FROM mysql.user WHERE user=” OR host=”;
  UPDATE mysql.user SET password=PASSWORD(‘XXXXXXXXXXXXXXXX’) WHERE user=’root’;
  FLUSH PRIVILEGES;

  创建用于监控的数据库信息:

  CREATE DATABASE `monitor` CHARACTER SET utf8 COLLATE utf8_general_ci;
  USE monitor;
  CREATE TABLE `xdual` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `x` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
  ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
  INSERT INTO xdual(x) VALUES(NOW());

  创建用于管理、监控和本地备份的帐号信息:

GRANT SUPER,PROCESS,FILE,SELECT ON *.* TO ‘admin’@’localhost’ IDENTIFIED BY’XXXXXXXXXXXXXXXXX’;
  GRANT UPDATE ON monitor.* TO ‘admin’@’localhost’;

  创建用于只读应用场景的帐号(比如:数据仓库):

ANT SELECT ON stanley.* TO ‘rnd’@’%’ IDENTIFIED BY’XXXXXXXXXXXXXXXX’;

  增加应用程序和DBA操作对应库的帐号信息:

GRANT SELECT,INSERT,UPDATE,DELETE ON stanley.* TO ‘stanley’@’%’ IDENTIFIED BY’XXXXXXXX’;
  GRANT ALL ON stanley.* TO ‘stanley’@’localhost’ IDENTIFIED BY’XXXXXXXXXXXXXXXX’;

  备注:

  DBA人员访问mysql数据库服务器完成具体工作时,必须尽量使用对应权限的帐号,而不能一味使用最高权限帐号root,虽然此举可能带来成本上升,却可以减少误操作事件的发生概率,以及降低误操作影响范围。

  MySQL复制搭建

  因新安装的数据库服务器,还未跑任何应用,只是2台主机都创建了一个一样属性的数据库帐号信息而已,为此没有必要执行数据库备份的方式用于搭建复制,简单描述如下(备注:以xy-brmms-db1a和xy-brmms-db1b为例):

  (1) 主机xy-brmms-db1a上执行SQL命令:SHOW MASTER STATUS;

  (2) 主机xy-brmms-db1b上执行SQL命令:

  CHANGE MASTER TO
  master_host=’172.22.32.88′,master_user=’repl’,master_password=’XXXXXXXXXXXXXXXX’,
  master_log_file=’mysql-bin.000006′,master_log_pos=2256;
  START SLAVE;

  (3) 主机xy-brmms-db1b上执行SQL命令:SHOW SLAVE STATUS;根据输出信息判断是否xy-brmms-db1a->xy-brmms-db1b方向的复制是否成功;

  (4) 通过上述3个步骤完成xy-brmms-db1a->xy-brmms-db1b的复制,接下来重复上述3个步骤,替换相关信息,能完成xy-brmms-db1b->xy-brmms-db1a的复制;

  备注:

  MySQL生产环境可能碰到的场景,需要搭建复制的步骤及详细方法,可以参考文章生产环境搭建MySQL复制的教程。

  操作系统需要增加的帐号

  根据实际访问及应用的需要,服务器操作系统访问的帐号,每台主机上有 3-5个帐号,并且每个帐号都会有其独自对应的密码。对于一个应用集群中,所有数据库服务器的帐号密码都相同,其他情况下不同服务器操作系统中的帐号名称相同,但是密码肯定不同。

  为了避免用户和组ID的混乱,对用户名称的id和用户所属组id进行统一的规定:

  admin用户的uid 必须为:501

  admin用户组的gid 必须为:501

  对应shell命令为:

  groupadd -g 501 admin
  useradd -c “dragoon and other software owner” -g admin -u 501 admin

  mysql用户的uid 必须为:601

  mysql用户组的gid 必须为:601

  对应shell命令为:

  groupadd -g 601 mysql
  useradd -c “mysql software owner” -g mysql -u 601 mysql

  备注:

  使用nagios作为监控手段的情况下,还会创建一个名称为nagios,群组名为nagios,ID号同为401的用户及用户组,另外还有一些其他的帐号,都是类似的方式。

  监控配置

  为了加快部署的速度,以及部署工作的简易,Dragoon系统设计之初就希望做到不需要修改任何操作脚本,只需要创建必要的目录,并且把所有通用性的脚本当到对应目录下,然后启动agent程序即可完成主机信息的自动注册,然后通过操作界面完成即可。

  我们特意通过一台公用型的服务器搭建了监控样机,放置了通用性的脚本程序及文件,可以从此服务器上scp文件到需要的主机上,监控配置界面也可以勾选模版为此服务器,即可轻易完成监控配置的整个过程。

  创建用于存放mysql访问帐号配置信息:

  mkdir -p /home/mysql/admin/conf/

  创建监控帐号帐号文件:

  vi /home/mysql/admin/conf/.dragoon_mysql_ps.conf

  向文件增加如下内容:

  #dragoon connect to mysql’s user and password
  USER=admin
  PASS=XXXXXXXXXXXXXXXX
  SOCKET=/data/mysqldata/sock/mysql.sock

  最后修改文件目录及属性:

  chown -R mysql:mysql /home/mysql/

  创建用于存放通用性及文件的目录:

  mkdir -p /usr/alisys/dragoon
  mkdir /usr/alisys/dragoon/bin
  mkdir /usr/alisys/dragoon/libexec
  mkdir /usr/alisys/dragoon/var
  mkdir -p /home/ops/appops/noc/log
  mkdir -p /home/ops/appops/noc/tmp

  最后修改目录及文件属性:

  chown -R admin:admin /home/ops

  从Linux环境监控样机上拷贝相关脚本及文件:

scp root@172.22.7.155:/usr/alisys/dragoon/bin/* /usr/alisys/dragoon/bin/
  scp root@172.22.7.155:/usr/alisys/dragoon/libexec/* /usr/alisys/dragoon/libexec/
  scp root@172.22.7.155:/usr/alisys/dragoon/DragoonInit /usr/alisys/dragoon/DragoonInit
  scp root@172.22.7.155:/usr/alisys/dragoon/dragoon_operate_alert.sh /usr/alisys/dragoon/dragoon_operate_alert.sh

  增加系统启动项:

  cp /usr/alisys/dragoon/DragoonInit /etc/rc.d/init.d/DragoonAgent
  chkconfig –add DragoonAgent #(chkconfig –list DragoonAgent 检查是否正常添加)

  监控服务启动命令:

  /etc/init.d/DragoonAgent start OR /etc/init.d/DragoonAgent restart

  监控服务关闭命令:

  /etc/init.d/DragoonAgent stop

  完成主机上所有监控配置及启动agent程序的操作之后,接下来可以到Dragoon系统网站页面,搜索主机名称即可找到,并且修改相关属性,比如所属的群组等,并且选中模版监控机,还可以再增加新的监控项目,最后点击确定即完成所有的配置过程,系统将开始按规则采集相关数据。

  【总结】

  非采用数据层中间件的数据库服务器,主要是借助MySQL主主复制,以及加上Heartbeat提供的VIP服务实现数据服务的高可用性,当时主要使用**版本,而最新的版本跟其差别甚大,以及介绍起来文章篇幅过长,故未涉及,后续再单独介绍Heartbeat的安装、配置和维护。

  Dragoon监控平台未正式上线之前,我们一直使用nagios作为监控报警的工具,mrtg实现服务器及数据库的性能数据展示,以及有非常多的脚本需要用到及配置,比如logwatch用于监控主机上产生的日志信息,然后及时邮件和短信的方式报警。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Eugene
Eugene

相关推荐