二进制安装Mariadb

第一个实验:

实现二进制安装mariadb 用脚本或ansible的role实现
我们先手动执行一遍,能够更好的了解其流程

第一步:将我们下载的mariadb二进制包解压

由于我们下载的是二进制的程序包,所以,源码编译的步骤已经有人替我们做了,所以,我们可以跳过编译。但是,源码编译必须要指定编译目录,所以,我们必须知道二进制安装完后它存放的位置。所以,我们解压缩的时候,要指定存放路径,而usrlocal就是默认的存放路径

tar xvf mariadb-10.2.23-linux-x86_64.tar.gz -C usrlocal

第二步:

我们进入到usrlocal目录下,因为在下载二进制源包的网页上,有非常详细的安装过程,在这里,我只安装位置相关的一小部分:

In the example below we install MariaDB in the usrlocalmysql directory (this is the default location for MariaDB for many platforms). However any other directory should work too.
We install the binary with a symlink to the original name. This is done so that you can easily change MariaDB versions just by moving the symlink to point to another directory.

大概意思就是,我们默认的安装路径是在usrlocalmasql目录下,并且推荐使用软连接来指向mysql,这方便我们日后对mariaDB进行升级和降级,我们只需要将软连接重新指向一个新的版本就行了。

cd usrlocal
ln -s mariadb-10.2.23-linux-x86_64 mysql

第三步:

cd mysql

当我们ls -l 之后,发现,目录内的所有者和所属组是有些问题的,所以,我们需要改变该目录下所有的所属者和所属组,这里,我们修改为root就行

chown -R root.root mysql

第四步:

在正常的应用服务程序上,都会创建一个和该服务对应的用户账号,该用户的职责就只只负责对应的服务程序,在yum安装的时候,会自动创建,但是我们是手动的二进制安装,所以,我们需要创建对应的用户和用户组

groupadd -r -g 336 mysql
useradd -r -g my
sql -u 336 -s sbinnologin -d datamysql mysql

我们指定了家目录,这个家目录就意味着我们以后存放数据库的路径,但是我们指定的家目录不会自动生成,所以,我们需要手动创建

mkdir datamysql
chown -R mysql.mysql datamysql

第五步:

我们需要创建数据库文件,很多数据库文件都是二进制,我们,很难创建,但是,在usrlocalmysqlscripts目录下有一个mysql_install_db可执行程序,它就可以帮助我们创建数据库文件。
需要注意的是,我们进入到usrlocalmysqlscripts这个目录中,因为,我们没有添加到PATH变量中去,所有,我们要在这个目录下执行此程序,理论上是可以成功的

cd usrlocalmysqlscripts
.mysql_install_db --user=mysql --datadir=datamyql

我们需要执行此程序的用户和生成数据库文件的路径
但是,它会报错,内容如下:
FATAL ERROR Could not find .binmy_print_defaults

而这个文件存放在usrlocalmysqlbin目录下,我们需要在它的上一级目录下执行此命令,也就是usrlocalmysql目录下

scriptsmysql_install_db --user=mysql --datadir=datamysql

执行之后,就会在datamysql目录下生成数据库文件,并且所属组和所属者的身份是mysql,

yum install  libaio.x86_64 -y
scriptsmysql_install_db --user=mysql --datadir=datamysql

注意:如果有的同学发现执行之后会报错,报错内容为却少一个libaio.so.1的动态共享库,我们可以yum install libaio.x86_64 手动安装这个包

第六步:

接下来,我们要创建一个数据库的配置文件,
数据库的默认配置文件etcmy.cnf文件,但是这个配置文件默认的内容的是不符合要求的,我们可以自己创建一个配置文件,etcmysqlmy.cof,这个文配置文件的优先级要比系统自带的配置文件要高
我们可以参考解压缩文件中的usrlocalmysqlsupport-files目录下my-huge.cnf文件来当做配置文件

mkdir etcmysqlmy.cnf
cp usrlocalmysqlsupport-filesmy-huge.cnf etcmysqlmy.cnf
我们需要在配置文件中的28行添加一条配置信息,用来指定数据路文件的位置,
datadir=datamysql

第七步:

配置文件我们已经创建好了,接下来就是服务启动脚本了,CentOS7服务启动的脚本存放在etcinit.d下,我们不用自己编写这个启动脚本,当然,有能力的同学也可以自己编写,我们解压缩的二进制包很友好的给我们提供了服务启动的程序,在usrlocalmysqlsupport-files这个目录下的mysql.server文件,我们将这个文件复制到etcinit.d并且改名为mysqld,然后我们将服务脚本添加到列表中,然后启动服务就好了。3306端口已经处于监听状态了

cp usrlocalmysqlsupport-filesmysql.server etcinit.dmysqld
chkconfig --add mysqld
chkconfig --list 
systemctl start mysqld

第八步:

添加PATH路径,以后我们直接敲命令就好了
echo PATH='usrlocalmysqlbin$PATH'  etcprofile.dmysql.sh
. etcprofile.dmysql.sh

第九步:

我们现在就可以直接使用mysql密令登录到数据库了,但是,目前数据库很不安全,所以,我们需要对数据库进行安全加固。
安全加固:mysql会自带一个安全加固的一个程序mysql_secure_installation,这个是个交互式的方式,大概内容如下:

    1、默认是空密码,只能输入enter设置密码
    2、连续输入两次密码
    3、是否删除匿名用户
    4、禁止用户远程登录
    5、默认有一个test数据库,任何人都可以访问,只用测试环境,但是,进入生产环境之前,确保把这个数据库删除
    6、将以上信息,重新加载,

第十步:

测试连接,当执行完安全加固后,我们就必须要指定用户和密码登录了
mysql -u'user' -p'passwd'
示例
mysql -uabc -p123456

第二个实验:实现用shell脚本来完成上面的工作

注意:我们要模拟的真实的环境,所以,我们推荐把mariaDB的数据库存放在LV逻辑卷上,这样就可以灵活的实现空间的扩容了
先复习以下逻辑卷的创建过程,以我的虚拟机为例
我们添加一块新硬盘:20G devsdb3
在原有的磁盘上有一个sda3,挂载目录是在data下, devsdb1
这次用devsdae3和devsdb1来创建逻辑卷
步骤如下:

umount devsda3
fdisk devsdb
fdisk devsda tn 3n 8en wn
partprobe devsda
fdisk devsda nn n n +5Gn tn n 8en w
 pvcreate devsda3 devsdb1
 pvdisplay
 vgcreate mysql devsda3 devsdb1
 vgdisply
 lvcreate -L 5G -n mysql_data mysql
 lvdisplay
 mkfs.xfs devmysqlmysql_data
 mkdir datamysql
 mount devmappermysql_data datamysql
 vim etcfstab 

示例脚本:

#!binbash
#install mysql
#Create LVM
sleep 1
echo start install......
null=devnull
umount devsda3 & $null
sed -i '11d' etcfstab
fdisk devsda & $null EOF
8e
w
EOF
partprobe devsda
p
1

+5G
t
8e
w
EOF
echo disk create---done
pvcreate devsda3 devsdb1 & $null EOF
y
lvcreate -L 5G -n mysql_data mysql & $null
mkfs.xfs devmysqlmysql_data & $null
mkdir datamysql
mount -a

echo LVM create done
#bin install mariadb
cd usrlocal
ln -s mariadb-10.2.23-linux-x86_64 mysql & $null
chown -R root.root mysql & $null
echo decompress done
#create MASQL user
groupadd -r -g 336 mysql
useradd -r -g mysql -u 336 -s sbinnologin -d datamysql mysql
chown -R mysql.mysql datamysql
echo User create done
#create MYSQL DB  file 
cd usrlocalmysql

echo create mairiaDB file done
#create configure fiel
mkdir etcmysql
touch etcmysqlmy.cnf
cp usrlocalmysqlsupport-filesmy-huge.cnf etcmysqlmy.cnf
sed -i '28adatadir=datamysql' etcmysqlmy.cnf

#start service script
cp usrlocalmysqlsupport-filesmysql.server etcinit.dmysqld
chkconfig --add mysqld & $null
systemctl start mysqld
#add PATH
echo PATH='usrlocalmysqlbin$PATH'  etcprofile.dmysql.sh
. etcprofile.dmysql.sh
echo start service done
#secure enhance
mysql_secure_installation & $null EOF

y
centos
centos
y
y
y
y
EOF
echo secure done
sleep 3
echo tasks done

第二种:用ansible 实现完成安装
还有些问题,正在改善,不好意思!

猜你喜欢

转载自blog.51cto.com/14116879/2388850