MySQL可运行的最小资源需求极低。InnoDB缓冲池的默认大小仅128M。基于基准测试数据,MySQL内存占用从1G到64G运行效率提高明显,CPU从1核至48核运行效率提高明显,进一步增长资源性能提高趋于平缓。而建议单数据库主机数据库内存设置在40%-60%左右。建议主机内存不超过126G,CPU核数不超过48核。mysql
操做系统linux |
CentOS Linux release 7.5.1804sql |
处理器数据库 |
1bash |
内存服务器 |
4G网络 |
硬盘架构 |
38G运维 |
主机名称socket |
chenzx |
IP地址 |
192.168.56.8 |
MySQL数据库建议运行在特定的用户与用户组下。对于同一主机安装不一样MySQL数据库的场景,建议使用不一样的用户管理不一样的数据库。
用户ID |
用户名称 |
用户组ID |
用户组名称 |
备注 |
1001 |
mysql |
1001 |
mysql |
数据库操做系统用户 |
用户不存在则很使用如下命令建立:
# groupadd -g 1001 mysql
# useradd –u 1001 –g mysql mysql
若已存在则使用如下命令修改:
# groupmod -g 1001 mysql
# usermod -s /bin/bash -u 1001 mysql
应用经过服务IP接入PROD数据库,故障时经过服务IP的漂移实现高可用性。本文不涉及高可用部分,须要开放3306端口,固定IP用于复制接入,服务IP用于应用接入。
接口名 |
主机名 |
IP地址 |
端口 |
描述 |
ens32 |
chenzx |
192.168.5.68 |
3306 |
固定IP地址 |
数据库相关文件系统规划,一个好的文件系统规划,有利于后续运维人员进行维护。
路径 |
文件系统大小 |
功能说明 |
/mysql/mysql_data |
200GB |
数据目录,存放数据文件,大小根据数据量而定。 |
/mysql/mysql_log |
200GB |
数据库redo、bin-log、relay-log等日志,能够根据具体需求再进行拆分。 |
/mysql/mysql_dump |
100GB |
备份目录,数据库备份或者其余数据文件备份。 |
建立相关目录:
# mkdir –p /mysql/mysql_data
# mkdir –p /mysql/mysql_log
# mkdir –p /mysql/mysql_dump
修改相关目录的属组信息:
# chown –R mysql:mysql /mysql/mysql_data
# chown –R mysql:mysql /mysql/mysql_log
# chown –R mysql:mysql /mysql/mysql_dump
数据库目录规划:
路径 |
功能说明 |
/mysql/mysql-5.7.23 |
区分版本的软件安装目录,软链接(/usr/local/mysql)指向目录 |
/home/mysql |
mysql用户家目录 |
/mysql/mysql_data/mysql |
数据目录,存放数据文件 |
/mysql/mysql_data/tmp |
临时数据目录 |
/mysql/mysql_log/redolog |
redo日志目录 |
/mysql/mysql_log/binlog |
二进制日志目录 |
/mysql/mysql_log/relaylog |
复制用中继日志目录 |
/mysql/mysql_log/slowlog |
指定慢查询日志目录 |
/mysql/mysql_log/innodb |
InnoDB日志目录 |
/mysql/mysql_log/errlog |
错误日志目录 |
建立相关目录:
# mkdir –p /mysql/mysql_log/redolog
# mkdir –p /mysql/mysql_log/binlog
# mkdir –p /mysql/mysql_log/relaylog
# mkdir –p /mysql/mysql_log/slowlog
# mkdir –p /mysql/mysql_log/innodb
# mkdir –p /mysql/mysql_log/errlog
修改相关目录的属组信息:
# chown –R mysql:mysql /mysql/mysql_log/redolog
# chown –R mysql:mysql /mysql/mysql_log/binlog
# chown –R mysql:mysql /mysql/mysql_log/relaylog
# chown –R mysql:mysql /mysql/mysql_log/slowlog
# chown –R mysql:mysql /mysql/mysql_log/innodb
# chown –R mysql:mysql /mysql/mysql_log/errlog
注意:
MySQL数据目录规划因根据数据库预计承载的数据量而定,当超过1T时,建议规划多个数据目录。
MySQL安装目录所在的文件系统,建议保持15G左右的空闲,用于后续升级。
MySQL redo日志目录大小应根据数据库平常写入量而定,建议15G左右。
MySQL 二进制日志存放归档的操做记录,根据数据库的繁忙程度,建议在50-100G左右。
若是是集群架构,须要计划中继日志目录。中继日志大小根据主库二进制日志产生量而定,通常是主库二级制目录大小的50%。
本文主要介绍MySQL社区版二进制软件包的安装过程。通常状况下,PROD环境和TEST环境都应该选用GA版本,切勿使用DMR版本、RC版本和Beta版本。二进制软件包能够到官网(https://www.mysql.com/downloads/)进行下载。
点击社区版本后进入下一个界面,选择“MySQL Community Server”。
使用scp或者ftp等工具把安装包(mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz)上传至服务器,并使用命令生成软件安装包的md5码与官网md5码进行比对:
$ md5sum mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
比对结果必须一致!!!
官网提供MD5码 |
下载后生成MD5码 |
比对结果 |
d903d3dbf235b74059a4b3e216c71161 |
|
一致 |
二进制的安装方式中,官方版本中已经把全部功能都配置好了,安装使用起来方便简单。
1) 解压安装包
$ su - mysql
$ tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /mysql/
2) 解压文件更名
$ su - mysql
$ mv mysql-5.7.23-linux-glibc2.12-x86_64/ mysql-5.7.23/
3) 创建软连接
$ su -
# ln -s /mysql/mysql-5.7.23/ /usr/local/mysql
# chown mysql:mysql -R /usr/local/mysql
因为是二进制安装,数据库的配置文件须要本身配置。
$ cat /etc/my.cnf
[mysql]
prompt="\u@\h:\p \R:\m:\s [\d]>"
[client]
port=3306
socket=/tmp/mysql.sock
[mysql_multi]
mysqld = /usr/local/mysql/bin/mysqld
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = mysql
[mysqld]
############################ system ##################################
basedir = /usr/local/mysql
server-id = 189
port = 3306
user = mysql
read_only = off
character-set-server = utf8
socket = /tmp/mysql.sock
datadir = /mysql/mysql_data/mysql
lower_case_table_names = 1
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
show_compatibility_56 = on
#skip_slave_start = 1
explicit_defaults_for_timestamp = ON
skip-name-resolve
log_timestamps = SYSTEM
#skip_grant_tables
############################ log ##################################
max-binlog-size = 1G
binlog_cache_size = 2097152
master_info_repository = TABLE
innodb_log_group_home_dir = /mysql/mysql_log/innodb/
log-bin = /mysql/mysql_log/binlog/logbin.log
relay_log = /mysql/mysql_log/relaylog/relay.log
log-error = /mysql/mysql_log/errlog/error.err
slow-query-log-file = /mysql/mysql_log/slowlog/slow.log
slow-query-log = 1
long_query_time = 1
relay_log_info_repository = TABLE
relay_log_recovery = 1
slave_preserve_commit_order = 1
log-queries-not-using-indexes = 0
expire_logs_days = 7
binlog_format = row
sync-binlog = 1
log_bin_trust_function_creators = 1
########################### connection ##############################
open-files-limit = 65535
symbolic-links = 0
max_allowed_packet = 1024M
max_connections = 3000
max_user_connections = 3000
max_connect_errors = 1000000
transaction_isolation = READ-COMMITTED
########################### BUFFER ##############################
query-cache-type = 0
query-cache-size = 0
thread-cache-size = 50
innodb_buffer_pool_size = 2G
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_print_all_deadlocks = 1
innodb_log_file_size = 1G
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 1
innodb_log_files_in_group = 3
################GTID#################
#gtid_mode = 1
#enforce_gtid_consistency = 1
slave_parallel_workers = 4
slave_parallel_type = LOGICAL_CLOCK
slave_preserve_commit_order = 1
log_slave_updates = 1
[mysqld_safe]
log-error = /mysql/mysql_log/errlog/error.err
pid-file = /mysql/mysql.pid
注意:
MySQL读取配置文件的顺序是
1) /etc/my.cnf
2) /etc/mysql/my.cnf
3) /usr/local/mysql/etc/my.cnf~/.my.cnf
建立数据库
$ /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/mysql/mysql_data/mysql --user=mysql --initialize
$ /usr/local/mysql/bin/mysqld_safe --user=mysql&