MySQL 二进制安装

云掣YunChe3个月前技术文章285

一、前言


● 介绍:业务环境安装 MySQL 一般都会通过二进制来安装,今天就记录一下业务环境二进制安装 MySQL 过程。

● 环境:CentOS 7 安装:MySQL 5.7+



二、安装 MySQL


1. 首先从官网下载自己需要安装版本的 MySQL 二进制包,上传到 /opt 路径下

[root@db01 opt]# ls
mysql-5.7.29-el7-x86_64.tar.gz
[root@db01 opt]#


2. 用户组权限设置:

groupadd mysql
useradd -r -g mysql -s /bin/false mysql


3. 规划 MySQL 安装路径:

安装目录:/usr/local/mysql
数据目录:/data/mysql57


3. 解压安装包并移动到安装目录:

tar -zxvf mysql-5.7.29-el7-x86_64.tar.gz
mv mysql-5.7.29-el7-x86_64 /usr/local/mysql
[root@db01 mysql]# cd /usr/local/mysql
[root@db01 mysql]# ls
bin  docs  include  lib  LICENSE  man  README  share  support-files
[root@db01 mysql]#


4. 创建数据目录:

mkdir -p /data/mysql57/{data,logs,tmp,run}
[root@db01 mysql]# cd /data/mysql57/
[root@db01 mysql57]# ls
data  logs  run  tmp
[root@db01 mysql57]#


5. 现在数据目录和安装目录都已经准备完成,接下来开始授权:

chown -R mysql:mysql /data/mysql57
chown -R mysql:mysql /usr/local/mysql


6. 接下来开始初始化 MySQL:

cd /usr/local/mysql/bin/
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql57/data

6. 没有报错则表示初始化完成,可以查看数据目录

[root@db01 /]# cd /data/mysql57/data/
[root@db01 data]# ls
auto.cnf         client-key.pem  ib_logfile1         public_key.pem   undo001
ca-key.pem       ib_buffer_pool  mysql               server-cert.pem  undo002
ca.pem           ibdata1         performance_schema  server-key.pem
client-cert.pem  ib_logfile0     private_key.pem     sys
[root@db01 data]#


7. 接下来启动 MySQL 首先先准备好 my.cnf 文件:

[client]
port = 3306
socket = /data/mysql_57/data/mysql.sock
[mysql]
prompt = "\u@mysql \R:\m:\s [\d]>"
port = 3306
socket = /data/mysql_57/data/mysql.sock
[mysqld]
# 用户
user = mysql
# 端口
port = 3306
# 安装目录
basedir = /usr/local/mysql
# 数据目录
datadir = /data/mysql_57/data
# sock 文件目录
socket = /data/mysql_57/data/mysql.sock
# 临时文件目录
tmpdir = /data/mysql_57/tmp
# 错误日志目录
log-error = /data/mysql_57/logs/error.log
# Server id
server-id = 553306
# 二进制日志
log-bin = /data/mysql_57/logs/mysql-bin
# binlog 清理机制
expire_logs_days = 10
# 日志格式 推荐为 row
binlog_format = ROW
# 双一参数
sync_binlog = 1
# binlog 缓存 如果有大事务 可以提升 binlog 写入效率
binlog_cache_size = 4M
# binlog 使用最大内存
max_binlog_cache_size = 4G
# 单 binlog 文件大小
max_binlog_size = 500M
# 中继日志目录
relay_log = /data/mysql_57/logs/mysql-relay
# GTID
gtid_mode = on
# 强制GTID的一致性
enforce_gtid_consistency = 1
# 隔离级别
transaction_isolation = READ-COMMITTED
# innodb 最大缓存区 操作系统内存的 70%-80% 最佳
innodb_buffer_pool_size = 2048M
# 独立的缓冲池实例,建议每个实例大小至少为 1 G 参考 buffer pool 大小设置
innodb_buffer_pool_instances = 2
# 默认为关闭OFF。如果开启该参数,启动MySQL服务时,MySQL将本地热数据加载到InnoDB缓冲池中
innodb_buffer_pool_load_at_startup = 1
# 默认为关闭OFF。如果开启该参数,停止MySQL服务时,InnoDB将InnoDB缓冲池中的热数据保存到本地硬盘
innodb_buffer_pool_dump_at_shutdown = 1
# 共享表空间大小
innodb_data_file_path = ibdata1:500M:autoextend
# 临时表空间
innodb_temp_data_file_path = ibtmp1:200M:autoextend
# redo 刷写机制 双一参数之一
innodb_flush_log_at_trx_commit = 1
# redo buffer size
innodb_log_buffer_size = 32M
# redo 文件大小
innodb_log_file_size = 128MB
# redo 日志组数 默认为 2
innodb_log_files_in_group = 2
# 排序缓存大小
innodb_sort_buffer_size = 1048576
# doublewrite 两次写机制
innodb_doublewrite = 1
# 开启慢日志组
slow_query_log = 1
# 慢日志目录
slow_query_log_file = /data/mysql_57/logs/slow.log
# 查询大于多少秒会记录到慢日志中
long_query_time = 5
# 是否记录未使用索引的 SQL
log_queries_not_using_indexes = 0
# MySQL 允许的最大连接
max_connections = 1000
# 单个用户限制的最大连接数,默认是不限制
max_user_connections = 64
#最大连接错误数,防止密码暴力破解
max_connect_errors = 10000
# PID 文件
pid-file = mysql.pid
# Server 编码
character-set-server = utf8mb4
# Server 比较规则
collation_server = utf8mb4_general_ci
# 禁用DNS主机名查找
skip_name_resolve = 1
# 打开文件最大数量
open_files_limit = 65535
# 自动提交
autocommit = 1
# timestamp 列如果没有显式定义为 null
explicit_defaults_for_timestamp = 1

根据自己的需求可以修改配置文件,将上面的配置文件 cp 到 /etc/my.cnf

注意⚠️:配置文件是非常重要的一步!


8. 根据配置文件启动 MySQL:

./mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

启动完成后接下来需要验证,我们就登陆到实例里测试一下

9. 去 error log 里面查询 root 用户的密码:

grep "password" /data/mysql57/logs/error.log

[root@db01 bin]# grep "password" /data/mysql57/logs/error.log
2020-11-24T18:04:51.402334+08:00 1 [Note] A temporary password is generated for root@localhost: I*0ypI1=j>#G

10. 尝试登陆到 MySQL 实例:

/usr/local/mysql/bin/mysql -uroot -p'I*0ypI1=j>#G' -S /data/mysql57/data/mysql.sock

[root@db01 bin]# /usr/local/mysql/bin/mysql -uroot -p'I*0ypI1=j>#G' -S /data/mysql57/data/mysql.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.29-log
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
root@mysql 18:32:  [(none)]>


MySQL 已经安装完成了,解析来修改 root 密码就可以使用

11. 修改 root 密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YouPassword';


12. 添加环境变量

-- 如果安装目录不在 /usr/local/mysql 先建一个软连接 
-- ln -s /安装目录 /usr/local/mysql
export PATH=$PATH:/usr/local/mysql/bin/
echo 'PATH=$PATH:/usr/local/mysql/bin/' >> /etc/profile


13. 验证:

[root@db01 /]# mysql
mysql                       mysql_embedded
mysqladmin                  mysqlimport
mysqlbinlog                 mysql_install_db
mysqlcheck                  mysql_plugin
mysql_client_test_embedded  mysqlpump
mysql_config                mysql_secure_installation
mysql_config_editor         mysqlshow
mysqld                      mysqlslap
mysqld-debug                mysql_ssl_rsa_setup
mysqld_multi                mysqltest_embedded
mysqld_safe                 mysql_tzinfo_to_sql
mysqldump                   mysql_upgrade
mysqldumpslow               mysqlxtest
[root@db01 /]#


14. 注意事项:

因为由于 MySQL 版本差异,在部署过程中按照此流程可能会出现初始化失败,MySQL 无法启动,可能因为 MySQL 没有创建 error.log 按照启动报错创建 error.log 然后清空 /data 目录,重新初始化即可。




相关文章

kubernetes集群清理

清理如果你在集群中使用了一次性服务器进行测试,则可以关闭这些服务器,而无需进一步清理。你可以使用 kubectl config delete-cluster 删除对集群的本地引用。但是,如果要更干净地...

mysql表结构对比工具

mysql表结构对比工具

一、AmpNmp.DatabaseCompare工具1、工具特点:优点:比较两个数据库全部表结构的差异,包括表名、存储引擎、字符集、注释的不同,以及每张表中的字段名、数据类型、字符集、默认值、注释的不...

bind服务-1

bind服务-1

DNS:域名系统(英文:Domain Name System)是一个域名系统,是万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP...

Go 配置文件管理(ini)

Go 配置文件管理(ini)

1、背景ini 文件是 Initialization File 的缩写,即初始化文件,可用于统一管理各项配置。gopkg.in/ini.v1 是地表最强大、最方便和最流行的 Go 语言 INI 文件操...

shell脚本-expect

shell脚本-expect

一、概述       Expect是建立在tcl基础上的一个工具,Expect 是用来进行自动化控制和测试的工具。主要解决shell脚本中不可交互的问题。       在一些需要交互输入指令的场景下,...

MySQL 通过 MTS 多线程恢复增量日志备份

MySQL 通过 MTS 多线程恢复增量日志备份

一、前言当发生 DDL 误删数据时,只能通过 备份 + 增量日志 来恢复,备份恢复到新实例后,将增量日志备份进行应用,此时只能单线程效率不高,我们可以使用 MySQL 5.7 推出的 MTS 多线程复...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。