CentOS7安装MySQL5.7[ 二进制方式]

之前, 我总结了一篇用YUM方式安装MySQL5.7的博文,主要是为了方便快速搭建mysql实验环境。这次,我总结一下使用二进制方式安装mysql的方法,这种安装方式适用于实际生产环境。

安装包下载

MySQL官网: 点这里进入

二进制安装包下载链接: 点这里下载

或者根据以下图示一步步从官网下载:

image01

选择对应的操作系统及版本,然后点击Download:

image02

之后将页面下拉,然后点击此处下载即可。

image03

安装MySQL

官网安装文档:点这里

安装步骤如下:

一、安装 mysql 异步IO库

> yum install -y libaio       

二、创建mysql用户及用户组

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

三、下载 mysql 二进制安装包并解压

> wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz 
> tar zxf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

四、作链接到 /usr/local 目录下

> ln -s mysql-5.7.21-linux-glibc2.12-x86_64 /usr/local/mysql

五、进入 /usr/local/mysql 目录, 创建 mysql-files 目录并设置权限

> cd /usr/local/mysql 
> mkdir mysql-files
> chown mysql:mysql mysql-files
> chmod 750 mysql-files

六、配置 mysql 的默认配置文件

套接字文件: /data/mysql/mysql.sock pid 文件:/data/mysql/mysql.pid 数据目录:/data/mysql/mysql_data 错误日志文件:/data/mysql/mysql_log/error.log 二进制日志文件:/data/mysql/mysql_log/mysql_bin.log 慢查询日志文件:/data/mysql/mysql_log/mysql_slow_query.log

提前创建数据存储、日志存储等目录:

> mkdir -p /data/mysql
> mkdir /data/mysql/{mysql_data,mysql_log}
> chown -R mysql:mysql /data/mysql

配置 /etc/my.cnf :

(具体根据实际情况更改)

[client]
port = 3306
socket = /data/mysql/mysql.sock

[mysqld]
port = 3306
user=mysql
#skip_name_resolve
socket = /data/mysql/mysql.sock
pid_file = /data/mysql/mysql.pid
datadir = /data/mysql/mysql_data
log_error = /data/mysql/mysql_log/error.log
log_bin = /data/mysql/mysql_log/mysql_bin.log
slow_query_log_file = /data/mysql/mysql_log/mysql_slow_query.log

default_storage_engine = InnoDB
max_allowed_packet = 128M
max_connections = 2048
open_files_limit = 65535
lower_case_table_names=1
explicit_defaults_for_timestamp=true
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

innodb_buffer_pool_size = 6G
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_log_file_size = 4G
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 0
innodb_log_buffer_size = 16777216
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_thread_concurrency = 64
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 67108864 
innodb_page_size = 8192
innodb_lru_scan_depth = 2000
innodb_lock_wait_timeout = 5
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
innodb_purge_rseg_truncate_frequency = 128

binlog_gtid_simple_recovery=1
log_timestamps=system
transaction_write_set_extraction=MURMUR32
show_compatibility_56=on
key_buffer_size = 16M
long_query_time = 5
slow_query_log = 1
tmp_table_size = 16M
max_heap_table_size = 16M
query_cache_type = 0
query_cache_size = 0
server-id=1

七、数据库初始化

> bin/mysqld --initialize --user=mysql 

八、生成ssl

> bin/mysql_ssl_rsa_setup  

九、启动mysql服务

> bin/mysqld_safe --user=mysql &

十、查看服务监听状态

> ss -tnlp | grep mysql 
LISTEN     0      128         :::3306                    :::*                   users:(("mysqld",pid=2222,fd=20))

此时,mysql服务已启动, 可以查看到mysql默认端口正在被监听,安装完成!

十一、后续配置

1、mysql默认密码:

mysql5.7 开始,root 密码会在 mysql 初始化时会自动生成到 error log 中;使用该密码登陆后必须先修改密码才能进行数据库操作。

> grep 'temporary password' /data/mysql/mysql_log/error.log 
2018-04-12T11:52:26.444732-05:00 1 [Note] A temporary password is generated for [email protected]: 25PnaHWkJ_#W

2、设置 mysql 启动脚本路径:

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

3、设置环境变量并使其生效:

> echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
> source /etc/profile

5、mysql 的配置文件:

> mysql --help --v | grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf  

可以看到, mysql 的配置文件有四个:

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • /usr/local/mysql/etc/my.cnf
  • ~/.my.cnf

mysql 服务启动时默认会依次读取这四个配置文件, 如果四个配置文件里面都有做配置,生效原则是后面的覆盖前面的。

注:debian系统下 mysql 配置文件路径是 /etc/mysql/my.cnf

也可以指定默认的配置文件路径:

> mysql --help --v | grep defaults-file
--defaults-file=#       Only read default options from the given file #.

启动MySQL

第一种方式:

> /etc/init.d/mysql.server start 

第二种方式:

> systemctl start mysql.server

设置mysql服务开机自启:

> systemctl enable mysql.server

升级数据库

升级前先关闭数据库。

升级前不用备份, 一方面没必要备份, 另一方面因为线上数据库的量非常大, 可能备份不过来。

升级完成后可以回滚,回滚前需要先备份系统库(即mysql库)。

升级方法:

使用二进制包安装的 MySQL 数据库, 只要将旧的链接换成新的即可。

然后执行 mysql_upgrade -s -u USER -p PASSWORD 即可升级完成。

注:mysql_upgrade命令会修复元数据表、系统表等。

​ ` -s ` 选项不加的话会重建数据文件。

登录数据库

常用登录方法有以下几种:

第一种:输入用户名和密码进行登录,socket文件可省略。

USER:用户名;SOCKET_FILE:socket文件路径;PASSWORD:密码

> mysql -uUSER -S"SOCKET_FILE" -pPASSWORD

第二种:将密码写入配置文件,实现免密码登录,但这种做法极不安全,不推荐。

第三种:设置标签,免密码登录,相对安全。

20180413

配置参数

查看:

mysql> show variables \G;
mysql> show variables like 'innodb%';

修改参数:

  • 全局参数

    例如修改慢查询日志是否开启:

mysql> show variables like 'slow%';
+---------------------+-------------------------------+
| Variable_name       | Value                         |
+---------------------+-------------------------------+
| slow_launch_time    | 2                             |
| slow_query_log      | OFF                           |
| slow_query_log_file | /var/lib/mysql/amesy-slow.log |
+---------------------+-------------------------------+
3 rows in set (0.00 sec)

mysql> 

设置为打开状态,global 选项表示全局生效,

mysql> set global slow_query_log = on;
Query OK, 0 rows affected (0.00 sec)

mysql> 

不加 global 即会话层面生效, 如修改 autocommit 设置:

mysql> set autocommit=1;
Query OK, 0 rows affected (0.00 sec)

mysql> 

总结:

  • 从作用域上可分为 global 和 session。
  • 从类型上分为”可修改”和”只读参数”。
  • 用户可在线修改非只读参数。
  • 只读参数只能通过配置文件修改并重启。
  • 所有参数的修改都不会持久化,即修改在重启后都会恢复到修改之前的值,所以建议修改配置文件,永久生效。

(完).

PREVIOUSRedis数据库安装
NEXTCentOS7安装MySQL5.7[YUM方式]