关键词:
自动化运维是一个DBA应该掌握的技术,其中,自动化安装数据库是一项基本的技能,本文中的安装脚本已通过测试,作为生产库来说没有问题,鉴于每个公司存储规划要求不同,可以按需自行修改脚本。
脚本中已经注释说明一些基本的安装信息
本脚本默认启用5.6部分新特性
innodb_buffer_pool_dump_at_shutdown=1 它dump的不是数据,是Id号
innodb_buffer_pool_load_at_startup=1
开启这个两个参数当数据库重启后把这些热数据重新加载回去
只有正常关库才会dump热数据块,宕机和kill -9不会
部分参数按需整改,例如innodb_buffer_pool_size = 512M,本文给的512M,一般给内存的50%-80%。
来看一下脚本的具体情况
[[email protected] ~]# cat mysql_auto_install.sh
###### 二进制自动安装数据库脚本root密码MANAGER将脚本和安装包放在/root目录即可############### ######数据库目录/usr/local/mysql############ ######数据目录/data/mysql############ ######日志目录/log/mysql############ ######端口号默认3306其余参数按需自行修改############ ################## #author:[email protected]# ################## #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:~/bin export PATH # Check if user is root if [ $(id -u) != "0" ]; then echo "Error: You must be root to run this script, please use root to install" exit 1 fi clear echo "=========================================================================" echo "A tool to auto-compile & install MySQL 5.6.25 on Redhat/CentOS Linux " echo "=========================================================================" cur_dir=$(pwd) #set mysql root password echo "===========================" mysqlrootpwd="MANAGER" echo -e "Please input the root password of mysql:" read -p "(Default password: MANAGER):" mysqlrootpwd if [ "$mysqlrootpwd" = "" ]; then mysqlrootpwd="MANAGER" fi echo "===========================" echo "MySQL root password:$mysqlrootpwd" echo "===========================" #which MySQL Version do you want to install? echo "===========================" isinstallmysql56="n" echo "Install MySQL 5.6.25,Please input y" read -p "(Please input y , n):" isinstallmysql56 case "$isinstallmysql56" in y|Y|Yes|YES|yes|yES|yEs|YeS|yeS) echo "You will install MySQL 5.6.25" isinstallmysql56="y" ;; *) echo "INPUT error,You will exit install MySQL 5.6.25" isinstallmysql56="n" exit esac get_char() { SAVEDSTTY=`stty -g` stty -echo stty cbreak #dd if=/dev/tty bs=1 count=1 2> /dev/null stty -raw stty echo stty $SAVEDSTTY } echo "" echo "Press any key to start...or Press Ctrl+c to cancel" char=`get_char` # Initialize the installation related content. function InitInstall() { cat /etc/issue uname -a MemTotal=`free -m | grep Mem | awk ‘{print $2}‘` echo -e " Memory is: ${MemTotal} MB " #Set timezone rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #Delete Old Mysql program rpm -qa|grep mysql rpm -e mysql #yum -y remove mysql-server mysql mysql-libs #yum -y remove php-mysql #yum -y install yum-fastestmirror #yum -y update #Disable SeLinux if [ -s /etc/selinux/config ]; then sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/selinux/config fi setenforce 0 } #Installation of depend on and optimization options. function InstallDependsAndOpt() { cd $cur_dir cat >>/etc/security/limits.conf<<EOF * soft nproc 65535 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535 EOF echo "fs.file-max=65535" >> /etc/sysctl.conf } #Install MySQL function InstallMySQL56() { echo "============================Install MySQL 5.6.22==================================" cd $cur_dir #Backup old my.cnf #rm -f /etc/my.cnf if [ -s /etc/my.cnf ]; then mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bak fi #mysql directory configuration groupadd mysql -g 512 useradd -u 512 -g mysql -s /sbin/nologin -d /home/mysql mysql tar xvf /root/mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz mv /root/mysql-5.6.25-linux-glibc2.5-x86_64 /usr/local/mysql mkdir -p /data/mysql mkdir -p /log/mysql chown -R mysql:mysql /data/mysql chown -R mysql:mysql /usr/local/mysql chown -R mysql:mysql /log #edit /etc/my.cnf SERVERID=`ifconfig eth0 | grep "inet addr" | awk ‘{ print $2}‘| awk -F. ‘{ print $4"3306"}‘` cat >>/etc/my.cnf<<EOF [client] port = 3306 socket = /tmp/mysql.sock default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] port = 3306 socket = /tmp/mysql.sock basedir = /usr/local/mysql datadir = /data/mysql open_files_limit = 3072 back_log = 103 max_connections = 800 max_connect_errors = 100000 table_open_cache = 512 external-locking = FALSE max_allowed_packet = 32M sort_buffer_size = 2M join_buffer_size = 2M thread_cache_size = 51 query_cache_size = 32M tmp_table_size = 96M max_heap_table_size = 96M slow_query_log = 1 slow_query_log_file = /log/mysql/slow.log log-error = /log/mysql/error.log long_query_time = 1 server-id = $SERVERID log-bin = mysql-bin sync_binlog = 1 binlog_cache_size = 4M max_binlog_cache_size = 8M max_binlog_size = 1024M expire_logs_days = 60 key_buffer_size = 32M read_buffer_size = 1M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 64M character-set-server=utf8 default-storage-engine = InnoDB binlog_format = row innodb_buffer_pool_dump_at_shutdown = 1 innodb_buffer_pool_load_at_startup = 1 binlog_rows_query_log_events = 1 explicit_defaults_for_timestamp = 1 #log_slave_updates=1 #gtid_mode=on #enforce_gtid_consistency=1 #innodb_write_io_threads = 8 #innodb_read_io_threads = 8 #innodb_thread_concurrency = 0 transaction_isolation = REPEATABLE-READ innodb_additional_mem_pool_size = 16M innodb_buffer_pool_size = 512M innodb_data_file_path = ibdata1:1024M:autoextend innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 16M innodb_log_file_size = 512M innodb_log_files_in_group = 2 innodb_max_dirty_pages_pct = 50 innodb_file_per_table = 1 innodb_locks_unsafe_for_binlog = 0 wait_timeout = 14400 interactive_timeout = 14400 skip-name-resolve [mysqldump] quick max_allowed_packet = 32M EOF /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --defaults-file=/etc/my.cnf --user=mysql cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chmod 700 /etc/init.d/mysqld chkconfig --add mysqld chkconfig --level 2345 mysqld on cat >> /etc/ld.so.conf.d/mysql-x86_64.conf<<EOF /usr/local/mysql/lib EOF ldconfig if [ -d "/proc/vz" ];then ulimit -s unlimited fi /etc/init.d/mysqld start cat >> /etc/profile <<EOF export PATH=$PATH:/usr/local/mysql/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib EOF source /etc/profile /usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd cat > /tmp/mysql_sec_script<<EOF use mysql; delete from mysql.user where user!=‘root‘ or host!=‘localhost‘; grant all privileges on *.* to ‘sys_admin‘@‘%‘ identified by ‘MANAGER‘; flush privileges; EOF /usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script #rm -f /tmp/mysql_sec_script /etc/init.d/mysqld restart echo "============================MySQL 5.6.25 install completed=========================" } function CheckInstall() { echo "===================================== Check install ===================================" clear ismysql="" echo "Checking..." if [ -s /usr/local/mysql/bin/mysql ] && [ -s /usr/local/mysql/bin/mysqld_safe ] && [ -s /etc/my.cnf ]; then echo "MySQL: OK" ismysql="ok" else echo "Error: /usr/local/mysql not found!!!MySQL install failed." fi if [ "$ismysql" = "ok" ]; then echo "Install MySQL 5.6.25 completed! enjoy it." echo "=========================================================================" netstat -ntl else echo "Sorry,Failed to install MySQL!" echo "You can tail /root/mysql-install.log from your server." fi } #The installation log InitInstall 2>&1 | tee /root/mysql-install.log CheckAndDownloadFiles 2>&1 | tee -a /root/mysql-install.log InstallDependsAndOpt 2>&1 | tee -a /root/mysql-install.log InstallMySQL56 2>&1 | tee -a /root/mysql-install.log CheckInstall 2>&1 | tee -a /root/mysql-install.log
执行脚本后,输入用户名密码(默认MANAGER)后登录数据库成功。
至此,MySQL5.6安装完成。
本文出自 “岁伏” 博客,请务必保留此出处http://suifu.blog.51cto.com/9167728/1846671
mysql5.6多实例部署
...方式和单实例安装数据库略有不同,本文记录下如何完成MySQL5.6多实例部署。首先我们看一下my.cnf和单实例的区分:[[email protected] scripts]#cat /etc/my.cnf[client]#port = 3306#socket&n 查看详情
mysql5.6多实例部署
...方式和单实例安装数据库略有不同,本文记录下如何完成MySQL5.6多实例部署。 首 查看详情
mysql5.7多源复制(用于生产库多主库合并到一个查询从库)(代码片段)
...据同步到不分库分表的从库共查询和管理类系统使用。在mysql5.6以及之前的版本中,没有原生的解决方法,除非使用mariadb分支,在mysql5.7之后支持多源复制,除了使用原生的多源复制之外,还有一个选择,就是使用案例开源的otte... 查看详情
zabbix3.4服务端安装
...安装方式来源于zabbix官网安装的操作系统Centos7数据库:Mysql5.6.171、安装源码库配置部署包安装源码库配置部署包。这个部署包包含了yum配置文件。#rpm-ivhhttp://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.noarch.rpm2、安装Zabbix... 查看详情
linux下安装部署jdk7+tomcat7+mysql5.6+redis3.07
配置jdk环境变量 1.解压:tar-zxvfjdk-8u121-linux-x64.tar.gz生成新文件夹2.通过命令[[email protected]/]#vietc/profile3.在末尾添加:unsetiunset-fpathmunge exportJAVA_HOME=/usr/java/jdk8exportPATH=$JAVA_HOME/bin:$PA 查看详情
十分钟完成springboot生产环境搭建代码仓库安装自动打包部署(代码片段)
...ringboot官方的HelloWorld项目为例,教你掌握Springboot项目生产环境搭建、持续集成环境搭建。通过此教程,你将获得:Gitlab代码托管环境GitlabCI/CD环境Springboot生产环境Springboot项目自动打包部署环境整个过程采用CSDN开发云... 查看详情
十分钟完成springboot生产环境搭建代码仓库安装自动打包部署(密码登录)(代码片段)
十分钟完成Springboot生产环境搭建、代码仓库安装、自动打包部署本文为了让新手更容易的体验持续部署的整个过程,故登录Linux采用密码登录方式。整个体验过程全部在网页中进行操作,教程每一步都提供了截图,即... 查看详情
十分钟完成springboot生产环境搭建代码仓库安装自动打包部署
...ringboot官方的HelloWorld项目为例,教你掌握Springboot项目生产环境搭建、持续集成环境搭建。如果你不想那么麻烦,也可以一键创建环境通过此教程, 查看详情
十分钟完成springboot生产环境搭建代码仓库安装自动打包部署(代码片段)
...ringboot官方的HelloWorld项目为例,教你掌握Springboot项目生产环境搭建、持续集成环境搭建。如果你不想那么麻烦,也可以一键创建环境通过此教程, 查看详情
mysql5.6二进制软件包编译安装详解(代码片段)
一、软件环境[[email protected]~]#uname-r3.10.0-862.el7.x86_64[[email protected]~]#cat/etc/redhat-releaseCentOSLinuxrelease7.5.1804(Core)二、安装部署过程详解MySQL安装3种方式:1>rpm包安装应用文件默认安装在/usr/local目录下2> 查看详情
记录windows2012部署asp项目
安装mysql5.6安装本地环境.NET4.6.1环境安装IIS部署 查看详情
十分钟完成springboot生产环境搭建代码仓库安装自动打包部署(代码片段)
...ringboot官方的HelloWorld项目为例,教你掌握Springboot项目生产环境搭建、持续集成环境搭建。如果你不想那么麻烦,也可以一键创建环境通过此教程,你将获得:Gitlab代码托管环境GitlabCI/CD环境Springboot生产环境Springboo... 查看详情
十分钟完成springboot生产环境搭建代码仓库安装自动打包部署(证书登录)(代码片段)
...ringboot官方的HelloWorld项目为例,教你掌握Springboot项目生产环境搭建、持续集成环境搭建。如果你是新手,对Linux操作不熟悉,可以参考密码登录完成持续部署进行实践,整个过程在网页中完成,不需要使用终... 查看详情
jekins—持续集成
json转换为Python的字典形式Martinfowler:通过自动化的构建,编译-发布-自动化测试,尽早的发现集成的错误持续集成的要素:统一的代码库自动构建编译自动测试(单元测试)每个人每天都向代码库主干提交代码每次提交之后再持... 查看详情
十分钟完成springboot生产环境搭建代码仓库安装自动打包部署(密码登录)(代码片段)
...ringboot官方的HelloWorld项目为例,教你掌握Springboot项目生产环境搭建、持续集成环境搭建。通过此教程,你将获得:Gitlab代码托管环境GitlabCI/CD环境Springboot生产环境Springboot项目自动打包部署环境GitLab自动打包部署流程... 查看详情
jenkins实现生产环境部署文件的回滚操作
...环境部署工具比较少,所以我使用jenkins作为生产环境的自动化部署工具。既然有回滚操作,那么就会有部署操作;要实现回滚,先要实现部署的操作,我在jenkins搭建了一键从测试环境发布到正式环境的工具,部署的大致思路如... 查看详情
walle自动化部署平台安装
Walle-瓦力 是一个支持svn、git、多用户、多项目、多环境同时部署的上线部署系统。相比jenkins其项目配置更简单、回滚快速、权限分级、用户分组功能更完善;UI界面更优雅,用户体验更人性,大大方便了开发者和管理者的持... 查看详情
设置django生产环境系统重启后的自动启动项(代码片段)
前面,作者已经介绍了把Django部署到生产环境中的主要方法,现在我们来看一下如何设置项目开机启动。在把Django项目部署到生产环境中时,我们前面使用安装包和源码安装了Nginx、uwsgi、redis等,这些应用安装后,不会使用系统... 查看详情