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

[经验分享] CentOS6.x/CentOS7.x一键安装mysql5.6/5.7并定制数据目录

[复制链接]

尚未签到

发表于 2018-4-22 10:09:48 | 显示全部楼层 |阅读模式
  一、系统环境及说明
  系统:CentOS6.x_x64  mysql:社区版5.6.21,开源数据库用的最多的mysql,编译安装比较繁琐,yum安装版本比较低且默认安装的位置是/var/下,本次采用官方下载的rpm包,通过脚本自动化安装并定制数据目录到独立分区中(本次为/data1目录)
  另外补充部分是给出针对Ubuntu/CentOS7的实际配置;最后提供了脚本一键安装;注意的是glibc版本要大于2.12
  二、准备安装包
  1、官方下载
  #https://dev.mysql.com/downloads/mysql/5.6.html#downloads 选择对应的版本和平台软件包:
  MySQL-shared-compat-5.6.x-1.el6.x86_64.rpm     #x就是你下的版本号以下类同
MySQL-devel-5.6.x-1.el6.x86_64.rpm
MySQL-shared-5.6.x-1.el6.x86_64.rpm
MySQL-client-5.6.x-1.el6.x86_64.rpm
MySQL-test-5.6.x-1.el6.x86_64.rpm
MySQL-server-5.6.x-1.el6.x86_64.rpm
  2、本实验用到的包
  http://pan.baidu.com/s/1nvn0nUx包含了以下软件包(也是从官方下载):
  MySQL-shared-compat-5.6.21-1.el6.x86_64.rpm
MySQL-devel-5.6.21-1.el6.x86_64.rpm
MySQL-shared-5.6.21-1.el6.x86_64.rpm
MySQL-client-5.6.21-1.el6.x86_64.rpm
MySQL-test-5.6.21-1.el6.x86_64.rpm
MySQL-server-5.6.21-1.el6.x86_64.rpm
  三、安装mysql5.6
  1、如果是官方下载的请直接执行下面操作
#rpm -ivh MySQL-shared-compat-5.6.x-1.el6.x86_64.rpm       #提供基础依赖组件,需要第一个安装
#yum remove mysql-libs -y              #御载默认自带的mysql-lib
#yum install libaio -y                         #安装libiao
#rpm -ivh MySQL-devel-5.6.x-1.el6.x86_64.rpm
#rpm -ivh MySQL-shared-5.6.x-1.el6.x86_64.rpm
#rpm -ivh MySQL-client-5.6.x-1.el6.x86_64.rpm
#rpm -ivh MySQL-test-5.6.x-1.el6.x86_64.rpm
#rpm -ivh MySQL-server-5.6.x-1.el6.x86_64.rpm说明:以上直接安装的数据目录在/var/lib/mysql下 但有时你并不希望 数据目录和/目录在一个分区(磁盘)上
因此可通过脚本重重新初始化安装到别的目录;完成自定制;  2、本实验脚本如下:
  将以上rpm包放到一个目录,创建my.cnf文件(公供参考)
  cat my.cnf
[mysqld]
# GENERAL #
user                           = mysql
default-storage-engine         = InnoDB
socket                         = /data1/mysqldb/data/mysql.sock
pid-file                       = /data1/mysqldb/data/mysql.pid
# MyISAM #
key-buffer-size                = 32M
myisam-recover                 = FORCE,BACKUP
# SAFETY #
max-allowed-packet             = 16M
max-connect-errors             = 1000000
# DATA STORAGE #
datadir                        = /data1/mysqldb/data
# BINARY LOGGING #
log-bin                        = /data1/mysqldb/log/mysql-bin
expire-logs-days               = 14
sync-binlog                    = 1
# CACHES AND LIMITS #
tmp-table-size                 = 32M
max-heap-table-size            = 32M
query-cache-type               = 0
query-cache-size               = 0
max-connections                = 500
thread-cache-size              = 50
open-files-limit               = 65535
table-definition-cache         = 1024
table-open-cache               = 2048
# INNODB #
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-log-file-size           = 64M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 256M
# LOGGING #
log-error                      = /data1/mysqldb/log/mysql-error.log
log-queries-not-using-indexes  = 0
slow-query-log                 = 1
slow-query-log-file            = /data1/mysqldb/log/mysql-slow.log  注意:生产环境有些优化参数请按需修改;以上仅供参考;您也可以到https://tools.percona.com/   网站填写相关参数生成配置文件;

  并在目录中创建一个install.sh脚本内容如下:
  cat install.sh

#!/bin/bash
src_dir=$(pwd)
cd $src_dir
rpm -ivh MySQL-shared-compat-5.6.21-1.el6.x86_64.rpm
yum remove mysql-libs -y
yum install libaio -y
rpm -ivh MySQL-devel-5.6.21-1.el6.x86_64.rpm
rpm -ivh MySQL-shared-5.6.21-1.el6.x86_64.rpm
rpm -ivh MySQL-client-5.6.21-1.el6.x86_64.rpm
rpm -ivh MySQL-test-5.6.21-1.el6.x86_64.rpm
rpm -ivh MySQL-server-5.6.21-1.el6.x86_64.rpm
#service mysql start && echo "mysql5.6.21 has installes sucess!"
#mysql_root_pwd=`gawk -F : '{ print $4 }' /root/.mysql_secret`
#echo "A random root password has been set. You will find it in '/root/.mysql_secret'."
#echo "The random root password was:'${mysql_root_pwd// }'"
service mysql stop
[ -d /data1/mysqldb/data ] || mkdir -p /data1/mysqldb/data
[ -d /data1/mysqldb/log ] || mkdir -p /data1/mysqldb/log
chown mysql.mysql /data1/mysqldb -R
cd $src_dir
cp ${src_dir}/my.cnf /etc
cd /usr/bin
./mysql_install_db --user=mysql --basedir=/usr --datadir=/data1/mysqldb/data   #迁移数据目录到/data1/mysqldb/data下可自行定制
cd /var/lib
mv mysql /tmp
mkdir mysql
chown mysql.mysql mysql
service mysql start && echo "Mysql root password was empty.Please change when you login mysql."
ln -s /data1/mysqldb/data/mysql.sock   /var/lib/mysql/mysql.sock       #由于一些mysql工具默认到这里找mysql.sock所以做个软链  四、注意问题
  1、关闭selinux否则脚本安装不成功
  2、安装后系统自带的postfix和crontab工具被御了,重新yum安装 一次即可
  3、mysql服务的root密码为空,请自行修改root密码
  或在脚本中添加以下行 在mysql迁移好目录启动后自动修改mysql root密码
  mysqladmin -u root password "123.com"      

  补充部分:

  CentOS7.x安装 mysql 5.7.21
  到mysql官方下载Linux通用包wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
  解压:
tar -xvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz  -C /usr/local
ln -sv mysql-5.7.21-linux-glibc2.12-x86_64  mysql  添加环境变量

cat /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH  初始化:
#useradd -r mysql
#mkdir -pv /data/mysql
#chown mysql.mysql /data/mysql
#mysqld --initialize-insecure  --datadir=/data/mysql --user=mysql --basedir=/usr/local/mysql/
#mkdir /usr/local/mysql/etc/my.cnf.d
#chown mysql.mysql -R /usr/local/mysql/etc
#cp /etc/my.cnf /usr/local/mysql/etc/
#cat /usr/local/mysql/etc/my.cnf[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/usr/local/mysql/log/error.log
pid-file=/var/run/mysql/mysql.pid
!includedir /usr/local/mysql/etc/my.cnf.d  
复制启动脚本:

#cp /usr/local/mysql/suppor-files/mysql.server /etc/init.d/mysqld
#touch /usr/local/mysql/log/error.log   
#chwon mysql.mysql /usr/local/mysql/log/error.log
#chmod 755 /usr/local/mysql/log/error.log
#chkconfig --add mysqld
#chkconfig mysqld on
#service mysqld start  

  Ubuntu 16.04上安装
  下载同样的包

  安装的步骤与上面CentOS7类似,不同的是ubuntu 16.04上不支持service 方式管理
  因此需要复制
#cp /usr/local/mysql/suppor-files/mysql.server /etc/init.d/mysqld
#sudo systemctl daemon-reload
#chown root.mysql /usr/local/mysql -R
#chmod 775 /usr/local/mysql -R
#systemctl enable mysqld
#systemctl start mysqld
#systemctl status mysqld  如图:
DSC0000.jpg

  mysql -uroot -p
  如图:
DSC0001.jpg

  注意安装后mysql root密码为空;请自行设置 root密码;以下脚本一键安装亦是如此!

  一键安装脚本
  以上在CentOS7上安装和Ubuntu 16.04下安装大同小异,均可以安装成功;因此整理成一键安装脚本!
  #cat auto_install_mysql.sh
#!/bin/bash
#version 2018-04-01 by san
setenforce 0
yum install wget -y
sourceDir=$(pwd)
installDir=/usr/local
mysqlData=/data1/mysqldb
mysqlBaseDir=/usr/local/mysql
mysqldb="mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz"
xtrabackup="percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm"

check_mariadb(){
if [ $(rpm -qa|grep mariadb|wc -l) -gt 1 ]
then
    echo "Find mariadb installed!"
    read -t 6 -p "default y|Y remove pause 6 seconds!n|N Cacle install!" yesNo
    if [[ $yesNo == "n" || $yesNo == "N" ]]
    then
    echo "Cacle install mysqldb" && exit 0
    else
         yum -y remove mariadb mariadb-server
         rm -rf /etc/my.cnf
    fi
fi
}
check_mariadb
[ -f $sourceDir ]||mkdir $sourceDir -pv
[[ $(id mysql >/dev/null && echo $?) == 0 ]] && echo "mysql is exsits!" || useradd -r mysql
cd $sourceDir
[ -f ${sourceDir}/${mysqldb} ] || wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
tar -xvf  $mysqldb  -C $installDir
cd $installDir
ln -sv mysql-5.7.21-linux-glibc2.12-x86_64  mysql
[ -f /etc/profile.d/mysql.sh ]|| echo "export PATH=$mysqlBaseDir/bin:$PATH" >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
#创建mysql数据目录
[ -d $mysqlData ]|| mkdir -pv $mysqlData
chown mysql.mysql $mysqlData
$mysqlBaseDir/bin/mysqld --initialize-insecure  --datadir=$mysqlData --user=mysql --basedir=$mysqlBaseDir/
[ -d $mysqlBaseDir/etc/my.cnf.d ] || mkdir -pv $mysqlBaseDir/etc/my.cnf.d
[ -d $mysqlBaseDir/log ] || mkdir -pv $mysqlBaseDir/log
echo '
[mysqld]
datadir=/data1/mysqldb
socket=/data1/mysqldb/mysql.sock
key_buffer_size         = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
query_cache_limit       = 1M
query_cache_size        = 64M
query_cache_type        = 1
symbolic-links=0
#binlog
server-id               = 1
log_bin                 = /data1/mysqldb/mysql-bin.log
#建议打开
innodb_file_per_table=ON
skip_name_resolve=ON
[mysqld_safe]
log-error=/usr/local/mysql/log/error.log
pid-file=/var/run/mysql/mysql.pid
!includedir /usr/local/mysql/etc/my.cnf.d
' >/$mysqlBaseDir/etc/my.cnf
touch /usr/local/mysql/log/error.log
chown mysql.mysql $mysqlBaseDir/* -R
chown mysql.mysql /usr/local/mysql/etc/my.cnf.d -R
#add manager script
cp -rp $mysqlBaseDir/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
systemctl daemon-reload
service mysqld start
ln -sv /data1/mysqldb/mysql.sock /tmp/mysql.sock
###
echo "mysql root password is empty"
echo 'install xtrabackup tool'
cd $sourceDir
[ -f ${sourceDir}/${xtrabackup} ] || wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm
yum install ./percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm -y  

运维网声明 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-450312-1-1.html 上篇帖子: centos6.5安装xampp报错 下篇帖子: VMware+centos7.3给lvm扩容
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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