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