Mysql集群搭建-MySQL 安装(二进制版)

/ 0评 / 0

MySQL 的安装方式一般分为三种:

  1. 二进制版本
  2. 编译版本
  3. RPM 包

比较常见的是二进制版本安装,方便简单,相对于编译安装,如果不是追求极致性能,使用起来差别不大。

本次教程以二进制版本为例,系统为红帽7.4或者Centos7.4,MySQL 版本为5.7.34

下载安装包

先去官网下载二进制安装包,进入官网下载页面 mysql下载页面,点击下载 5.7.34二进制64位版本

image-20210923171657967

下载完成,把安装包移到目标 Linux服务器下。

环境准备

1. 安装linux依赖包

查看安装文档

在下载页面上面有安装指南

image-20210923173928910

翻译大概是,mysql依赖libaio这个library。如果没有安装,那么安装会失败。

安装命令:yum install libaio numactl ncurses-devel autoconf

删除自带的mariadb,卸载后/etc/my.cnf将不存在!!!初始化及启动要自己指定参数,不推荐卸载!!!

#查找是否安装mariadb
rpm -qa|grep mariadb
#卸载mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

2. 创建用户以及用户组

#添加一个用户组
groupadd mysql
#添加一个用户
useradd -m -r -g mysql mysql

3. 配置 ulimit

我们一般使用 mysql 用户启动数据库,如果不设置文件打开数和进程数,后期会有问题

打开 /etc/security/limits.conf 文件,在文件末尾写上

mysql     soft    nproc    65536
mysql     hard    nproc    65536
mysql     soft    nofile   131072
mysql     hard    nofile   131072

打开 /etc/security/limits.d/20-nproc.conf 把参数调整为

* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

4.设置服务器主机名,并且添加到hosts中.

# echo "ip 名称" >> /etc/hosts
echo "10.143.87.22 WYDSJ-gpapp04" >> /etc/hosts

5.开启时间同步

时间同步对于数据库来说非常重要,请保证所有数据库节点时间是一致的

可自行选择ntp时间同步或者chrony时钟同步,这里步骤省略

6.关闭 selinux

selinux 可能会造成无法写入数据,如果对它不熟悉,建议关掉

查看 selinux 状态

getenforce

临时关闭

setenforce 0

永久关闭

打开 /etc/sysconfig/selinux

SELINUX=enforcing 改为 SELINUX=disabled

安装配置

这次安装数据目录为 /data4/mysql_db/,日志目录为 /data4/mysql_log/,启动用户为 mysql

1. 解压文件

把二进制文件解压出来,放到 /user/local/ 目录下

# 将tar压缩文件解压到当前文件夹
tar -zxvf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz 

# 把解压后的文件软连接mysql,软连接mysql文件在/usr/local下面,或者重命名也可以
# 做软链主要是方便日后升级和管理目录
ln -s /usr/local/mysql-5.7.34-linux-glibc2.12-x86_64 /usr/local/mysql

# 改变当前文件夹所属用户
cd /usr/local/mysql
chown -R mysql ./

2.创建数据和日志目录

mkdir -p /data4/mysql_db/
mkdir -p /data4/mysql_log/
# 授权
chown mysql:mysql -R /data4/mysql*

3.安装配置模块解读

[client]: 所有mysql客户端程序读取的配置块,包括bin下面的很多工具,例如mysql、mysqladmin、mysqlcheck、mysqldump、mysqlimport、mysqlshow、mysqlslap。
[mysqldump]: 只有mysqldump这个客户端程序才会读取的配置文件。
[mysql]: 只有mysql这个客户端程序才会读取的配置块,即mysql命令行。
[server]: 所有服务端如mysqld会读取的配置块。 
[mysqld]: mysql服务端程序mysqld 和 mysqld_safe ,mysqld_multi 的配置文件。

配置,修改/etc/my.cnf文件,此文件作为初始化和启动时的参数,启动时也可自我指定

# my.cnf
# 客户端设置,即客户端默认的连接参数
[client]
# 默认连接端口
port = 3306
# 编码
default-character-set = utf8
# 用于本地连接的socket套接字,这个不同于上面mysqld中的socket,如果这个不写执行mysql -uroot -p会报错
socket = /data4/mysql_db/mysql.sock

[mysqld]
# 指定basedir,启动时就不用指定basedir了
basedir = /usr/local/mysql
# 指定数据存储目录
datadir = /data4/mysql_db
tmpdir = /tmp
socket = /data4/mysql_db/mysql.sock
# user=mysql
pid-file = /data4/mysql_db/mysql.pid
skip-external-locking = 1
skip-name-resolve = 1
port = 3306
server_id = 1

default-storage-engine = InnoDB
character_set_server=utf8
#character-set-server = utf8
default_password_lifetime=0

#### log ####
log_timestamps=system
binlog_cache_size = 16M
# 表示启用二进制日志
log_bin = /data4/mysql_log/mysql-bin
log_bin_index = /data4/mysql_log/mysql-bin.index
binlog_format = row
expire_logs_days = 15

relay_log_recovery=ON
relay_log=/data4/mysql_log/mysql-relay-bin
relay_log_index=/data4/mysql_log/mysql-relay-bin.index

log_error = /data4/mysql_log/mysql-error.log
log_queries_not_using_indexes = /data4/mysql_log/nouseindex.log

slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data4/mysql_log/mysql-slow.log

#### innodb ####
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 8
innodb_log_group_home_dir = /data4/mysql_log/
innodb_undo_directory = /data4/mysql_log/
innodb_undo_logs = 128
innodb_flush_neighbors = 1
innodb_log_file_size =  1G
innodb_file_per_table = on 

bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 64M
myisam_max_sort_file_size = 1G
myisam_repair_threads = 1

4.安装mysql命令-初始化mysql目录

# 初始化mysql,指定mysql的文件夹和data的文件夹,卸载mariadb后必须指定,basedir和basedata不指定默认用/etc/my.cnf文件里面的参数
# 其中 initialize-insecure 表示不生成MySQL数据库root用户的随机密码,即root密码为空;
/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/data4/mysql_db --user=mysql

/usr/local/mysql/bin/mysql_ssl_rsa_setup --basedir=/usr/local/mysql --datadir=/data4/mysql_db

5. 生成启动文件

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server
chmod 755 /etc/init.d/mysql.server 
# vim /etc/init.d/mysql.server

6.启动mysql,连接测试

# 启动mysql,卸载mariadb后必须指定,--user也可以写在配置文件里,相当于./bin/mysqld_safe --defaults-file=/etc/my.cnf
/usr/local/mysql/bin/mysqld_safe --user=mysql &

ps:没有/etc/my.cnf的话一定要指定

查看是否启动成功:

ps -ef|grep mysql

连接测试数据库:

/usr/local/mysql/bin/mysql -uroot -p(因为初始化为无密码,因此密码为空)

为了安全先设置一个密码

SET PASSWORD = PASSWORD('Tjcmcc@139.com');
set password for 'root'@'localhost' = password('Tjcmcc@139.com');
flush privileges;

7.关闭mysql

没有安装为服务时,使用此方法关闭mysql,输入密码后关闭成功:

/usr/local/mysql/bin/mysqladmin -u root -p shutdown

查看是否关闭成功:

ps -ef|grep mysql

8.mysql设置为服务

复制启动脚本到资源目录:

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

增加mysqld服务控制脚本执行权限

chmod +x /etc/rc.d/init.d/mysqld

将mysqld服务加入系统服务

chkconfig --add mysqld

检查mysqld服务是否生效

chkconfig --list mysqld

配置好后可以使用service命令控制mysql的启动和停止,命令为:service mysqld startservice mysqld stop

9.配置全局环境变量

如果想要全局访问到 mysql 客户端,可以把 /usr/local/mysql/bin 加入系统路径,我这里采取直接创建软连接的方式

ln -s  /usr/local/mysql/bin/mysql /usr/bin/mysql
# ln -s  /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog

或者编辑/etc/profile文件

# 修改 /etc/profile
vi /etc/profile
# 在/etc/profile 文件底部添加如下两行配置,保存后退出
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH
# 设置环境变量立即生效
source /etc/profile

10.设置远程主机登录

# 其中*.* 的第一个*表示所有数据库名,第二个*表示所有的数据库表;
# root@'%' 中的root表示用户名,%表示ip地址,%也可以指定具体的ip地址,比如root@localhost,root@192.168.10.129
grant all on *.* to 'root'@'%' identified by 'Tjcmcc@139.com';
# 执行以下如下命令刷新权限:
flush privileges;

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注