二进制安装GreatSQL/MySQL

二进制安装GreatSQL/MySQL

vate_room 372 2022-08-22

二进制安装GreatSQL/MySQL

  1. 在一个全新CentOS环境中,下载GreatSQL二进制包,手动安装,并根据GreatSQL提供的my.cnf模板适当调整后用于考核环境的my.cnf。

  2. 完成初始化,并启动实例。

安装操作系统

在一个全新CentOS环境中,下载GreatSQL二进制包,手动安装,并根据GreatSQL提供的my.cnf模板适当调整后用于考核环境的my.cnf。

安装操作系统:

安装操作系统

系统版本

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]#  rpm -q centos-release
centos-release-7-9.2009.1.el7.centos.x86_64

配置如下

配置

SSH连接:

  1. ifconfig查看虚拟机的ip地址

    ifconfig
    
  2. 用ssh工具连接

更新阿里源

  1. 更改配置文件(很重要)
    备份CentOS 7系统自带yum源配置文件命令:

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

  2. 下载CentOS 7的repo文件
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    epo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!

  3. 打开CentOS-Base.repo文件:
    vim /etc/yum.repos.d/CentOS-Base.repo

  4. 将文件中的所有http开头的地址更改为https(虽然要手动改的地方不多,但是可以用命令代替手动改,有空研究一下)

  5. 更新镜像源
    清除缓存:yum clean all
    生成缓存:yum makecache

  6. 更新源yum update

环境准备

jemalloc库

安装依赖jemalloc库(推荐5.2.1+版本)。jemalloc 是一款内存分配器

yum -y install jemalloc jemalloc-devel

找不到要安装的包:

[root@localhost yum.repos.d]# yum -y install jemalloc jemalloc-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
没有可用软件包 jemalloc。
没有可用软件包 jemalloc-devel。
错误:无须任何处理

以下为踩坑记录,可跳过

#安装epel.repo数据源,然后通过yum安装jemalloc

yum install epel-release  -y
yum install jemalloc -y

#查看安装的版本
yum list jemalloc

#发现版本是3.6.0,踩坑了
jemalloc.x86_64 0:3.6.0-1.el7 

#卸载
yum remove jemalloc.x86_64 

用rpm包重新安装

#下载rpm包
https://centos.pkgs.org/8/epel-x86_64/jemalloc-5.2.1-2.el8.x86_64.rpm.html

#安装rpm包
rpm  -ivh /root/jemalloc-5.2.1-2.el8.x86_64.rpm

#查看安装的版本
yum list jemalloc

验证安装:而后执行下面的操作加载libjemalloc库,并确认是否已存在

[root@localhost ~]#  ldconfig
[root@localhost ~]# ldconfig -p | grep libjemalloc
        libjemalloc.so.1 (libc6,x86-64) => /lib64/libjemalloc.so.1
        
#比文档的示例少了下面这行,问题不大继续安装
libjemalloc.so (libc6,x86-64) => /usr/local/lib64/libjemalloc.so
#安装完发现了文档提供了安装指令,下次试试
yum install -y pkg-config perl libaio-devel numactl-devel numactl-libs net-tools openssl openssl-devel jemalloc jemalloc-devel

c语言库glibc

检查c语言库glibc版本,查到是2.17

ldd --version

[root@localhost ld.so.conf.d]# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
由 Roland McGrath 和 Ulrich Drepper 编写

检查系统中的Mysql或mariadb

检查系统中的Mysql或mariadb,如果存在将其卸载

[root@localhost ld.so.conf.d]#  rpm -qa | grep mysql
[root@localhost ld.so.conf.d]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@localhost ld.so.conf.d]# yum -y remove mariadb-libs-5.5.68-1.el7.x86_64

二进制安装GreatSQL

下载GreatSQL二进制包

#下载地址:https://gitee.com/GreatSQL/GreatSQL/releases
wget https://product.greatdb.com/GreatSQL-8.0.25-16/GreatSQL-8.0.25-16-Linux-glibc2.17-x86_64.tar.xz

解压二进制包,到/usr/local/目录,并改名

#解压
tar xvf GreatSQL-8.0.25-16-Linux-glibc2.17-x86_64.tar.xz -C /usr/local/

#改名
cd /usr/local/
mv GreatSQL-8.0.25-16-Linux-glibc2.17-x86_64 mysql

#创建数据目录
cd mysql
mkdir data  

创建MySQL的专用用户

#-M不创建主目录,-s /sbin/nologin不允许登录,-r创建的是系统用户
useradd -M -s /sbin/nologin -r mysql

#修改所属主和所属组
chown -R mysql.mysql /usr/local/mysql/

创建全局变量

vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH

#刷新全局变量
. /etc/profile.d/mysql.sh  
#两种刷新方式,还可以使用
source /etc/profile.d/mysql.sh

创建自动启动

生成启动脚本,并启动mysql

cp support-files/mysql.server /etc/init.d/mysqld

加入启动列表

 chkconfig --add mysqld
 chkconfig --list

编辑配置文件/etc/my.cnf

叶老师的配置文件生成器,数据库文件地址要和初始化的参数一致

https://imysql.com/my-cnf-wizard.html

#关键参考代码
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/usr/local/mysql/mysql.sock
character-set-server=utf8
log-error=/var/log/mysqld.log
pid-file=/tmp/mysqld.pid
[mysql]
socket=/usr/local/mysql/mysql.sock
[client]
socket=/usr/local/mysql/mysql.sock

初始化GreatSQL

 bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 
  --initialize #初始化参数
  --basedir #数据库目录
  --datadir #数据目录
  #数据库目录要和my.cnf一致,并保证GreatSQL有权限
  #如果想重新初始化,记得数据目录,特别是.index文件。

运行效果如下

[root@localhost mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 

2022-08-22T01:02:36.060467Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.25-16) initializing of server in progress as process 55647
2022-08-22T01:02:36.079563Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-08-22T01:02:36.488646Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.

 #显示root@localhost第一次登录的临时密码
2022-08-22T01:02:37.680946Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: PBEGEs;Kj0Yr 

修改GreatSQL密码:

mysql -uroot -p'jcJ3Ncguf:ql'
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

发现启动用户是root

ps -ef | grep mysql
root      45090   3373  0 19:04 pts/0    00:00:00 grep --color=auto mysql

其余

相关命令

mysql -u root -p'123456'
stemctl status mysqld
systemctl mysql stop
service mysqld stop
service mysqld restart
service mysqld stop

ps -ef | grep mysql
mysql_secure_installation #安全加固

发现Navicat 连接不上,经排除是防火墙的问题

firewall-cmd --state    #. 查看防火墙状态
systemctl stop firewalld.service
systemctl disable firewalld.service#关闭防火墙firewal

systemctl start firewalld.service #关闭防火墙firewall后开启

#开启端口
## zone -- 作用域
## add-port=80/tcp -- 添加端口,格式为:端口/通讯协议
## permanent -- 永久生效,没有此参数重启后失效
firewall-cmd --zone=public --add-port=3306/tcp --permanent
## 开启3306端口后,workbench或naivcat 就能连接到MySQL数据库了

防火墙 常用命令介绍

firewall-cmd --state                           ##查看防火墙状态,是否是running
firewall-cmd --reload                          ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones                       ##列出支持的zone
firewall-cmd --get-services                    ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp               ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp                 ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent     ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent  ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent     ##永久添加80端口 
iptables -L -n                                 ##查看规则,这个命令是和iptables的相同的
man firewall-cmd                               ##查看帮助
systemctl status firewalld.service                               ##查看防火墙状态
systemctl [start|stop|restart] firewalld.service                 ##启动|关闭|重新启动  防火墙

##查询端口号80 是否开启
firewall-cmd --query-port=80/tcp

更多命令,使用 firewall-cmd --help 查看帮助文件

参考链接:

https://imysql.com/my-cnf-wizard.html

https://www.php.cn/mysql-tutorials-485563.html
https://www.cnblogs.com/diantong/p/11088901.html

https://www.cnblogs.com/huizhipeng/p/10127333.html