设为首页 收藏本站
查看: 1241|回复: 0

[经验分享] shell脚本和ansible实践MariaDB源码编译自动安装

[复制链接]

尚未签到

发表于 2018-7-30 11:59:26 | 显示全部楼层 |阅读模式
  在前面的博客中已经演示,通过脚本实现MySQL通用二进制的安装,下面通过演示用脚本实现源码编译MariaDB实现自动化,在大规模部署多台MariaDB时,这里使用ansible来实现其自动化部署,可以大大简化运维工程师的时间。
  先讲解脚本在本地自动化安装MariaDB,结合上一篇博客和前面自动化实现的MySQL通用二进制格式的安装。
  环境:Centos 6.6      mariadb-10.0.13.tar.gz    node5(hostname)   2块硬盘:1块是系统用、1块是作为MySQL数据盘
  查看卷组信息
  [root@node5 ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  vg_lvm   1   2   0 wz--n- 98.30g 68.30g
  [root@node5 ~]# vgs | awk '{if(NR==2) {print $1}}'  把卷组名切分出来
  vg_lvm
  扩容卷组
  [root@node5 ~]# vgextend vg_lvm /dev/sdb
  Volume group "vg_lvm" successfully extended
  [root@node5 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  vg_lvm   2   2   0 wz--n- 118.30g 88.30g
  [root@node5 ~]# vgreduce $(vgs | awk '{if(NR==2) {print $1}}') /dev/sdb
  Removed "/dev/sdb" from volume group "vg_lvm"
  [root@node5 ~]# lvcreate -L 18G -n data vg_lvm /dev/sdb
  Logical volume "data" created
  [root@node5 ~]# chmod +x mysql.sh  给定其权限
  [root@node5 ~]# vim mysql.sh    脚本内容如下:
  #!/bin/bash
  useradd -r -s /sbin/nologin mysql > /dev/null
  vgextend $(vgs|awk '{if(NR==2) {print $1}}') /dev/sdb > /dev/null
  lvcreate -L 18G -n data vg_lvm /dev/sdb > /dev/null
  mkdir /mysql
  mkfs.ext4 /dev/vg_lvm/data > /dev/null
  mount /dev/vg_lvm/data /mysql
  mkdir /mysql/data
  chown -R mysql.mysql /mysql/data
  tar -xf /usr/local/src/mariadb-10.0.13.tar.gz -C /usr/local/
  yum groupinstall -y "Development tools" "Server Platform Development" > /dev/null
  echo -e "\033[42mGroupinstall is OK.\033[0m"
  yum install -y libxml2-devel cmake > /dev/null
  echo -e "\033[42mInstall is OK.\033[0m"
  cd /usr/local/mariadb-10.0.13/
  cmake . -DMYSQL_DATADIR=/mysql/data -DWITH_SSL=system -DWITH_SPHINX_STORAGE_ENGINE=1 > /dev/null
  echo -e "\033[42mCmake is OK.\033[0m"
  make && make install > /dev/null
  echo -e "\033[42mMake and Make install is OK.\033[0m"
  cd /usr/local/mysql
  echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh
  source /etc/profile.d/mysql.sh
  cp -f support-files/my-large.cnf /etc/my.cnf
  sed -i '/^\[mysqld\]/a datadir=/mysql/data' /etc/my.cnf
  cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
  chmod +x /etc/rc.d/init.d/mysqld
  chkconfig --add mysqld
  chkconfig mysqld on
  chown -R root.mysql /usr/local/mysql/*
  /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mysql/data > /dev/null
  echo -e "033[42mMysql initial is ok.\033[0m"
  service mysqld start
  ss -tnlp|grep 3306
  [root@node5 ~]# ./mysql.sh  执行脚本
  .....
  150410  5:52:01 [Note] InnoDB: Starting shutdown...
  150410  5:52:03 [Note] InnoDB: Shutdown completed; log sequence number 1616707
  033[42mMysql initial is ok.  初始化完成
  Starting MySQL. SUCCESS!   启动ok
  LISTEN     0      128                      :::3306                    :::*      users:  (("mysqld",39585,21))  发现监听在3306端口了,说明自动化一切都ok
  MariaDB源码编译进行配置时,可以根据业务需求功能,定制其功能,通过命令行给其传递一个配置参数或者是通过在mysql.sh文件包含配置参数所在的文件,下次要使用另外功能时,直接修改另外一个文件的参数即可。在执行mysql.sh时,为了执行一切ok,也可以先在主机上安装好screen软件,通过screen命令来安全执行制动化脚本。
  下面是使用ansible实现自动化编译安装MariaDB
  hosts   /etc/ansible/hosts文件内容
  [dbserver]
  IP 或者是 HOSTNAME
  IP 或者是 HOSTNAME
  IP 或者是 HOSTNAME
  。。。
  args.sh   作为MariaDB 参数的文件,可以根据需求改动即可
  #!/bin/bash
  mariadb="-DMYSQL_DATADIR=/mysql/data -DWITH_SSL=system -DWITH_SPHINX_STORAGE_ENGINE=1"
  mysql.sh
  #!/bin/bash
  source /root/args.sh
  useradd -r -s /sbin/nologin mysql > /dev/null
  vgextend $(vgs|awk '{if(NR==2) {print $1}}') /dev/sdb > /dev/null
  lvcreate -L 18G -n data vg_lvm /dev/sdb > /dev/null
  mkdir /mysql
  mkfs.ext4 /dev/vg_lvm/data > /dev/null
  mount /dev/vg_lvm/data /mysql
  mkdir /mysql/data
  chown -R mysql.mysql /mysql/data
  yum groupinstall -y "Development tools" "Server Platform Development" > /dev/null
  echo -e "\033[42mGroupinstall is OK.\033[0m"
  yum install -y libxml2-devel cmake > /dev/null
  echo -e "\033[42mInstall is OK.\033[0m"
  cd /usr/local/mariadb-10.0.13/
  cmake .  $(mariadbarg) > /dev/null
  echo -e "\033[42mCmake is OK.\033[0m"
  make && make install > /dev/null
  echo -e "\033[42mMake and Make install is OK.\033[0m"
  cd /usr/local/mysql
  echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh
  source /etc/profile.d/mysql.sh
  cp -f support-files/my-large.cnf /etc/my.cnf
  sed -i '/^\[mysqld\]/a datadir=/mysql/data' /etc/my.cnf
  cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
  chmod +x /etc/rc.d/init.d/mysqld
  chkconfig --add mysqld
  chkconfig mysqld on
  chown -R root.mysql /usr/local/mysql/*
  /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mysql/data > /dev/null
  echo -e "033[42mMysql initial is ok.\033[0m"
  service mysqld start
  ss -tnlp|grep 3306
  mysql.yml   playbook文件内容如下: unarchive模块是复制和解压文件的,script是把当前shell脚本到远程主机上执行
  ---
  #file: mysql.yml
  - hosts: dbserver
  remote_user: root
  tasks:
  - name: remote copy decompress
  unarchive: src=/usr/local/src/mariadb-10.0.13.tar.gz dest dest=/usr/local/ copy=yes
  - name: execute mariadb install script
  script: /root/mysql.sql
  unarchive: src=/usr/local/src/mariadb-10.0.13.tar.gz dest dest=/usr/local/ copy=yes  意思是:复制本地文件/usr/local/src/mariadb-10.0.13.tar.gz到远程解压缩到/usr/local目录下。
  ok,到这里就已经全部ok了,如果实验中有说什么疑问,欢迎一起讨论

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-543556-1-1.html 上篇帖子: ansible中角色和模板使用及部署lamp平台 下篇帖子: 自动化运维工具Ansible部署详解与基本使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表