为了满足企业上云业务的培训需求,近日启动企业上云系列培训教程,将从基础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

redis新增数据脚本格式 redis创建数据表_mysql

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所需的一些先决条件

redis新增数据脚本格式 redis创建数据表_mysql_02

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 

redis新增数据脚本格式 redis创建数据表_redis_03

查找编译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

redis新增数据脚本格式 redis创建数据表_mysql_04

恭喜,到这一步已经可以开始安装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

redis新增数据脚本格式 redis创建数据表_redis_05

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

redis新增数据脚本格式 redis创建数据表_mysql_06

自定义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新增数据脚本格式 redis创建数据表_redis_07

三、手工安装redis

1、下载redis文件并解压缩

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

  

redis新增数据脚本格式 redis创建数据表_libstdc++_08

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

$ cd redis-5.0.5
$ make

redis新增数据脚本格式 redis创建数据表_redis新增数据脚本格式_09

四、根据题目要求配置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 serverPlease 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端口

redis新增数据脚本格式 redis创建数据表_redis新增数据脚本格式_10

 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命令查看内存配置是否生效。

redis新增数据脚本格式 redis创建数据表_libstdc++_11

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

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

redis新增数据脚本格式 redis创建数据表_libstdc++_12

 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));

redis新增数据脚本格式 redis创建数据表_mysql_13

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

redis新增数据脚本格式 redis创建数据表_libstdc++_14

测试数据样例如上图,字段使用|分割,行间隔使用 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;

redis新增数据脚本格式 redis创建数据表_redis_15

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

e、查看数据导入后效果

 

redis新增数据脚本格式 redis创建数据表_redis_16

总结:

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