企业上云培训一手工编译安装gcc7.3.0,mariadb10.4.6,redis5.0.5,导入csv数据进数据库表

    为了满足企业上云业务的培训需求,近日启动企业上云系列培训教程,将从基础IT配置讲到云原生应用开发部署及调优,本次课程的目标如下:

    目标一:手工编译安装mariadb和redis并启动

    目标二:设置mairadb默认字符集为utf8,创建hubeitel数据库,创建message数据表

    目标三:将data.csv文件导入hubeitel数据库的message表中,日期格式为yyyy/mm/dd hh24:mi:ss 字段分隔符为|,行分隔符为\n

    目标四:设置redis端口为16379,最大内存占用为1G,驱逐策略设置为:noeviction

一、下载安装包

1、下载mariadb安装包

wget http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.4.6/bintar-linux-systemd-x86_64/mariadb-10.4.6-linux-systemd-x86_64.tar.gz

2、下载redis安装包

wget http://download.redis.io/releases/redis-5.0.5.tar.gz

二、升级centos7的gcc从4.8.5到7.3.0

因为下面的Maradb 10安装需要依赖C++ 更高的特性。而默认的centos7安装的gcc是4.8.5

1、下载安装文件

wget http://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-7.3.0/gcc-7.3.0.tar.gz

编译安装gcc时需要M4,GMP,MPFR,MPC这三个依赖的库,注意:mpfr库依赖于gmp,mpc依赖于gmp和mpfr。所以四个库的安装顺序为:m4->gmp->mpfr->mpc.

a、解压缩tar存档并更改当前工作目录

tar zxf gcc-7.3.0.tar.gz
cd gcc-7.3.0

b、安装bzip2并运行'download_prerequisites'脚本以下载GCC所需的一些先决条件

yum -y install bzip2
./contrib/download_prerequisites

c、执行以下命令以开始配置GCC构建环境

./configure --disable-multilib --enable-languages = c,c ++

d、运行以下命令编译源代码。根据您服务器的CPU性能,编译可能需要1个半小时甚至更长时间才能完成

make -j 4
make install

e、验证gcc-7.3.0安装是否成功

 gcc -v 

查找编译gcc时生成的最新动态库

find / -name "libstdc++.so*"

 将上面的最新动态库libstdc++.so.6.0.21复制到/usr/lib64目录下

cp /usr/local/gcc-5.2.0/lib64/libstdc++.so.6.0.21 /usr/lib64/

切换工作目录至/usr/lib64,删除原来软连接

rm libstdc++.so.6

将默认库的软连接指向最新动态库:

ln -s libstdc++.so.6.0.21 libstdc++.so.6

运行以下命令检查动态库:必须要出现3.4.21,默认情况gcc4.9.x会出现3.4.20,但是mariadb需要更高的3.4.21支持,否则后面安装mariadb会失败。

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

恭喜,到这一步已经可以开始安装mariadb了。 

三、手工安装mariadb

安装包文件统一下载至/home/app目录下

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /home/app/mariadb-10.4.6-linux-systemd-x86_64.tar.gz | tar xvf -
shell> ln -s /usr/local/mariadb-10.4.6-linux-systemd-x86_64/ mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql

mariadb已经安装成功,系统创建了两个账号,一个是root@localhost,这个账号没有密码,你只能在本地登陆,登陆后可以重新设置密码,也可以设置其它权限;
shell> chown -R root .
shell> chown -R mysql data

将mysql.server启动文件复制到/etc/init.d目录下重命名为mysqld
cp /usr/local/mariadb-10.4.6-linux-glibc_214-x86_64/support-files/mysql.server /etc/init.d/mysqld

启动mariadb数据库

/etc/init.d/mysqld start

自定义mariadb配置文件确保本地登陆成功,数据库默认数据集为utf8

[root@wangstudy mysql]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character-set-server = utf8
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

!includedir /etc/my.cnf.d

[client]
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8

重启mysql服务后进入mysql数据库通过status命令查看状态

三、手工安装redis

1、下载redis文件并解压缩

wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xvzf redis-5.0.5.tar.gz

  

2、进入解压目录编译安装redis

$ cd redis-5.0.5
$ make

四、根据题目要求配置mysql及redis服务

1、将redis服务安装在linux服务中并指定启动端口为16379

redis的安装目录中有一个utils目录,进入utils后执行install_server.sh即可

[root@devops01 utils]# install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 16379
Please select the redis config file name [/etc/redis/16379.conf] 
Selected default - /etc/redis/16379.conf
Please select the redis log file name [/var/log/redis_16379.log] 
Selected default - /var/log/redis_16379.log
Please select the data directory for this instance [/var/lib/redis/16379] 
Selected default - /var/lib/redis/16379
Please select the redis executable path [] /usr/local/redis-5.0.5/src/redis-server
Selected config:
Port           : 16379
Config file    : /etc/redis/16379.conf
Log file       : /var/log/redis_16379.log
Data dir       : /var/lib/redis/16379
Executable     : /usr/local/redis-5.0.5/src/redis-server
Cli Executable : /usr/local/redis-5.0.5/src/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/16379.conf => /etc/init.d/redis_16379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

2、验证redis服务是否开启16379端口

 3、修改redis最大内存占用为1g,内存驱逐策略为noeviction,redis绑定所有主机网卡运行

sed 's/# maxmemory-policy noeviction/maxmemory-policy noeviction/g' -i /etc/redis/16379.conf 
sed 's/# maxmemory <bytes>/maxmemory 1g/g' -i /etc/redis/16379.conf 
sed 's/bind 127.0.0.1/bind 0.0.0.0/g' -i /etc/redis/16379.conf

修改完毕后重启redis服务

/etc/rc.d/init.d/redis_16379 restart

使用redis_cli登陆redis数据库使用info all命令查看内存配置是否生效。

4、关于MySQL数据库部分的操作

a、root账号授权允许远程访问 

 b、创建数据库hubeitel

create database hubeitel;

c、创建数据表message

create table message (id int not null auto_increment,message varchar(255) not null,title varchar(100) not null,createtime datetime not null,primary key(id));

d、导入csv文件到hubeitel数据库的message表格中

测试数据样例如上图,字段使用|分割,行间隔使用 CR+LF,导入的日期字段格式为yyyy-mm-dd hh24:mi:ss

load data infile '/home/app/data.csv' into table message fields terminated by '|' lines terminated by '\n' ignore 1 rows;

FIELDS TERMINATED BY '|' #分隔符
ENCLOSED BY '"' #结尾符
LINES TERMINATED BY '\n' #换行 
IGNORE 1 ROWS; #忽略csv文件的第一行文件
所有的 CSV 文件都是用 '\n' 换行,因为文件第一行包含列名,所以,不应该导入数据表中,这里用 IGNORE 1 ROWS.语句忽略第一行,保证不导入。

e、查看数据导入后效果

 

总结:

自此,前面提到的手工编译安装mysql,redis,并修改redis启动端口,将默认监听本地127.0.0.1修改为监听所有网卡地址,可以支持外部远程访问redis,同时修改redis最大使用内存及内存驱逐参数全部配置完成,最后将准备好的 csv测试文件数据导入mysql数据库hubeitel的message表中。