用shell脚本实现通用二进制格式mysql 5.5.28 x86_64的安装
时间:2022-03-14 03:30
用shell脚本实现通用二进制格式mysql 5.5.28 x86_64的安装
首先在网上用gfsoso.com来搜索下载mysql软件包mysql-5.5.28-linux2.6-x86_64.tar.gz,再用
winSCP把mysql上传到服务器上,上传位置可根据个人喜好,我个人一般放在服务器的/usr/local/src目录下。
此处我们是先命令行下实现一次,而后所有操作全部用shell脚本自动实现。
个人环境 centos 6.5 X86-64 所用空闲空间都做成了LVM。
准备工作:
[root@localhostsrc]# mkdir /mysql
使用lvdisplay查看逻辑卷是否创建成功
[root@localhostsrc]# lvdisplay
。。。。。。。。。。。。。。。。。。。
--- Logical volume---
LV Path /dev/vg_lvm/data
LV Name data
VG Name vg_lvm
LV UUID nYkURv-67Av-ST1L-05EL-rhGA-Dt1V-Rfl1cA
LV Write Access read/write
LV Creation host, time localhost.localdomain,2014-12-01 22:15:26 +0800
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 160
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
我们发现创建成功了,此时我们来格式化创建的逻辑卷
[root@localhostsrc]# mkfs -t ext4 /dev/vg_lvm/data
mke2fs 1.41.12(17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096(log=2)
Fragment size=4096(log=2)
Stride=0 blocks,Stripe width=0 blocks
327680 inodes,1310720 blocks
65536 blocks(5.00%) reserved for the super user
First data block=0
Maximum filesystemblocks=1342177280
40 block groups
32768 blocks pergroup, 32768 fragments per group
8192 inodes pergroup
Superblock backupsstored on blocks:
32768, 98304, 163840, 229376, 294912,819200, 884736
Writing inodetables: done
Creating journal(32768 blocks): done
Writingsuperblocks and filesystem accounting information: done
This filesystemwill be automatically checked every 21 mounts or
180 days,whichever comes first. Use tune2fs -c or-i to override.
格式化成功
注意:此处写脚本时,应该让其睡眠一会
把创建的逻辑卷挂载到/mysql上,并让其开机后可以自动挂载,我们把挂载信息放到/etc/fstab文件上。
[root@localhostsrc]# mount /dev/vg_lvm/data /mysql
[root@localhostsrc]# vim /etc/fstab
把
/dev/vg_lvm /mysql ext4 defaults 0 0添加到尾部
让系统读取/etc/fstab文件
[root@localhostsrc]# mount -a
mount: /dev/vg_lvmis not a block device
挂载设备写错了修改
/dev/vg_lvm/data /mysql ext4 defaults 0 0
此时在执行Mount -a
[root@localhostsrc]# ls /mysql/
lost+found
创建数据目录
[root@localhostsrc]# mkdir /mysql/data
因此目录是给mysql用的,所以把权限改为mysql用户和组,由于是mysql使用,其他用户应该不给予任何权限操作。
[root@localhostsrc]# chown -R mysql.mysql /mysql/data
[root@localhostsrc]# chmod o=- /mysql/data
[root@localhostsrc]# ls -ld /mysql/data/
drwxr-x---. 2mysql mysql 4096 Dec 1 22:34/mysql/data/
此时就可以进入操作mysql了
执行此脚本
[root@localhostmysql]# . /etc/profile.d/mysql.sh
启动mysql
[root@localhostmysql]# service mysqld start
Starting MySQL...SUCCESS!
[root@localhostmysql]# mysql
Welcome to theMySQL monitor. Commands end with ; or\g.
Your MySQLconnection id is 1
Server version:5.5.28-log MySQL Community Server (GPL)
Copyright (c)2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is aregistered trademark of Oracle Corporation and/or its
affiliates. Othernames may be trademarks of their respective
owners.
Type ‘help;‘ or‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql> \q
Bye
导出二进制文件、导出库文件、导出头文件、导出man文件不是一定要做的,可以根据需要自己系统环境要求选择导出相应的目录
mysql帮助文档目录
[root@localhostmysql]# ls /usr/local/mysql/man/
man1 man8
输出mysql的帮助文件,编辑/etc/man.config
在MANPATH那行添加mysql的man路径
#
# Everyautomatically generated MANPATH includes these fields
#
MANPATH /usr/man
MANPATH/usr/share/man
MANPATH/usr/local/man
MANPATH/usr/local/share/man
MANPATH/usr/X11R6/man
添加MANPATH /usr/local/mysql/man
输出mysql的库文件
[root@localhostmysql]# ls /usr/local/mysql/lib/
在/etc/ld.so.conf.d/下面新增一个mysql.conf文件,把mysql的库文件路径添加到mysql.conf中。
再执行ldconfig -v使其生效 -v是显示过程的,让系统重新读取库文件到缓存中,系统的缓存文件
为/etc/ld.so.cache
[root@localhostmysql]# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
[root@localhostmysql]# ldconfig -v
输出头文件,用创建连接的方式实现
[root@localhostmysql]# ln -sv /usr/local/mysql/include /usr/include/mysql
`/usr/include/mysql‘-> `/usr/local/mysql/include‘
[root@localhostmysql]# ls /usr/include/mysql/
decimal.h my_compiler.h my_net.h mysql.h plugin.h
errmsg.h my_config.h my_pthread.h mysql_time.h sql_common.h
。。。。。。
完成了
脚本实现
#!/bin/bash
#current derectoryis /usr/local/
#Automation mysqlinstallation
groupadd -g 306mysql
useradd -g 306 -u306 -r -s /sbin/nologin mysql
lvcreate -n data-L 10G /dev/vg_lvm > /dev/null
mkdir /mysql
mkfs -t ext4/dev/vg_lvm/data >/dev/null
sleep 3
mount/dev/vg_lvm/data /mysql
echo"/dev/vg_lvm/data /mysql ext4 defaults 00">>/etc/fstab
mount -a
mkdir /mysql/data
chown -Rmysql.mysql /mysql/data
chmod -R o=-/mysql/data
tar xf/usr/local/src/mysql-5.5.28-linux2.6-x86_64.tar.gz -C /usr/local/
sleep 10
ln -sv/usr/local/mysql-5.5.28-linux2.6-x86_64/ /usr/local/mysql >/dev/null
chown -Rmysql.mysql /usr/local/mysql/*
/usr/local/mysql/scripts/mysql_install_db--user=mysql --datadir=/mysql/data/ --basedir=/usr/local/mysql >/dev/null
sleep 3
chown -R root/usr/local/mysql/*
cp/usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --addmysqld
[ -e /etc/my.cnf ]&& rm -f /etc/my.cnf ] && cp /usr/local/mysql/support-files/my-huge.cnf/etc/my.cnf -f
sed -i‘/^\[mysqld\]/a datadir=/mysql/data‘ /etc/my.cnf
echo"PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
./etc/profile.d/mysql.sh
service mysqldstart >/dev/null
sleep 2
mysql
有什么漏掉了,希望可以帮忙指正 谢谢
本文出自 “” 博客,请务必保留此出处