shell指令碼和ansible實踐MariaDB源碼編譯自動安裝

來源:互聯網
上載者:User

標籤:mariadb編譯安裝   shell自動化   ansible項目實踐   

    在前面的部落格中已經示範,通過指令碼實現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了,如果實驗中有說什麼疑問,歡迎一起討論

本文出自 “快樂就好” 部落格,請務必保留此出處http://wdllife.blog.51cto.com/6615958/1633826

shell指令碼和ansible實踐MariaDB源碼編譯自動安裝

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.