shell脚本和ansible实践MariaDB源码编译自动安装

在前面的博客中已经演示,通过脚本实现MySQL通用二进制的安装,下面通过演示用脚本实现源码编译MariaDB实现自动化,在大规模部署多台MariaDB时,这里使用ansible来实现其自动化部署,可以大大简化运维工程师的时间。

先讲解脚本在本地自动化安装MariaDB,结合上一篇博客和前面自动化实现的MySQL通用二进制格式的安装。

环境:Centos 6.6      mariadb-10.0.13.tar.gz    node5(hostname)   2块硬盘:1块是系统用、1块是作为MySQL数据盘

查看卷组信息
    [[email protected] ~]# vgs
      VG     #PV #LV #SN Attr   VSize  VFree
      vg_lvm   1   2   0 wz--n- 98.30g 68.30g
    [[email protected] ~]# vgs | awk ‘{if(NR==2) {print $1}}‘  把卷组名切分出来
    vg_lvm  
    扩容卷组  
    [[email protected] ~]# vgextend vg_lvm /dev/sdb
      Volume group "vg_lvm" successfully extended
    [[email protected] ~]# vgs
      VG     #PV #LV #SN Attr   VSize   VFree
      vg_lvm   2   2   0 wz--n- 118.30g 88.30g    
    [[email protected] ~]# vgreduce $(vgs | awk ‘{if(NR==2) {print $1}}‘) /dev/sdb
      Removed "/dev/sdb" from volume group "vg_lvm"
    [[email protected] ~]# lvcreate -L 18G -n data vg_lvm /dev/sdb
      Logical volume "data" created

[[email protected] ~]# chmod +x mysql.sh  给定其权限
    [[email protected] ~]# 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
    . /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
    [[email protected] ~]# ./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
    . /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
    . /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了,如果实验中有说什么疑问,欢迎一起讨论

时间: 2025-01-12 03:35:57

shell脚本和ansible实践MariaDB源码编译自动安装的相关文章

Mariadb源码编译过程

从微博上看到有人提及Mariadb,搜索了一下,找到地址https://mariadb.org/,这是mysql的一个分支,由原作者维护,意在与oracle分庭抗礼,避免oracle将来毕源. 目前版本Mariadb 10.0.10,我下载了一个,准备编译一个64位版本,下载地址: https://downloads.mariadb.org/mariadb/10.0.10/ 下载后用cmake编译一下试试,进入cmake图形界面,编译器选择vs12.0 win64 Warning: Bison

【Linux探索之旅】第四部分第五课:源码编译,安装便利

内容简介 1.第四部分第五课:源码编译,安装便利 2.第四部分第六课:DNS和域名,一探究竟 源码编译,安装便利 这一课相对轻松,毕竟刚跨年(2015-2016)么,新年怎么能让大家一个头两个大呢~ 小编怎么可能这么坏呢?小编是这样的人吗?(是啊 -_-#). 之前的课程([Linux探索之旅]第二部分第七课:软件安装,如虎添翼)中,我们已经了解过Ubuntu这个Linux的发行版下安装软件是何等方便,用apt-get这个工具可以轻松搞定.这种方式可以让我们下载并安装大部分的软件. 其他Linu

Android介绍以及源码编译---Ubuntu安装

二. Ubuntu安装和设置 2.1 原料 VMware Workstation 11 Ubuntu 14.04 x64位 iso镜像文件 Android4.1源码(Jelly Bean) 2.2  安装和设置 选择Ubuntu安装镜像:(Android2.3之后的版本,必须使用64位系统编译) 创建账户: 选择CPU以及核心数量(涉及后面的源码编译): 分配虚拟机内存,建议最低4GB,编译Android系统较耗内存: 硬盘空间分配至少40G以上.源码解压20G左右,编译完成后占用40G以上空间

linux下用shell脚本删除mysql记录ssc源码搭建

mysql下删除记录较多的ssc源码搭建会出现如下错误:企 娥:217 1793 408 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed. 因此需要分批删除表中数据,脚本如下: #!/bin/bashDB_USER="root"DB_PASS="pw"DB_HOS

centos7下源码编译方式安装httpd

语法: chkconfig --list [name] chkconfig --add name chkconfig --del name chkconfig [--level levels] name <on|off|reset> chkconfig [--level levels] name 参考文章http://www.cnblogs.com/jipeng87/p/6308725.html 前言 Apache至少需要apr.apr-util.pcre组件的支持. APR(Apache p

源码编译、安装net-snmp的方法和遇到的问题

本文参考地址:http://blog.163.com/[email protected]/blog/static/270110892014119113421364/ 1. 源码下载 # wget http://download.cloud.360.cn/yjk/net-snmp.tar.gz 2. 解压 # tar xzvf net-snmp.tar.gz 3. 初始化(指定的默认的安装目录是/usr/local/snmp) # cd net-snmp-5.7.2 # ./configure -

源码编译方式安装mysql服务 (Centos 6.X)

root 用户执行 $ yum install -y autoconf automake imake libxml2-devel expat-devel cmake gcc gcc-c++ libaio libaio-devel bzr bison ncurses5-devel$ rpm -qa | grep mysql$ rpm -e --nodeps XXX                            ----注:(XXX为上一条命令看到的所有条目) 普通用户执行 配置编译安装信息

mariadb源码编译

1.mariadb的编译过程 编译前准备 # yum install cmake ncurses-devel gcc gcc-c++  # groupadd -r mysql # useradd -r -g mysql -s /sbin/nologin -M mysql # mkdir /opt/data # chown mysql.mysql /opt/data -R # tar xf mariadb-10.0.13.tar.gz # cd /mariadb-10.0.13 2.配置文件 cm

Spark1.0.0源码编译及安装

最近想对自己学的东西做些回顾,想到写博客是个不错的方式,方便他人也有利自己,刚开始写不足之处大家多担待. 编译前需要安装JDK1.6以上.scala.Maven.Ant.hadoop2.20 如下图(/etc/profile): Spark编译有提供了两种方式: Maven编译:在 /etc/profile文中添加:export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m" 执行命令:mv