MySQL5.7.37进阶安装(详细配置说明)

​​​​​​​​​​​​​​​​​​​​之前发布的一篇文章简单安装了MySQL:MySQL5.7.37二进制包简单安装(2022-01-18发行版),但没有设置配置文件,也没有注册为系统服务,可维护性及灵活性较差,接下来我们定制一下配置并为其注册服务。

0.配置

my.cnf配置详情如下(⚠️ 变量名中 下划线和横线都支持):

## my.cnf for MySQL 5.7/8.0
##update date  2022-05-17
[client]
port	= 3306
socket	= /opt/data/mysql/mysql.sock

[mysql]
#重新配置mysql提示,增加时间、数据库显示
prompt="\u@db \R:\m:\s [\d]> "
#与skip-auto-rehash作用相似,关闭自动重新散列
no-auto-rehash

[mysqld]
log_bin_trust_function_creators = 1
user	= mysql
port	= 3306
basedir	= /opt/mysql
datadir	= /opt/data/mysql
socket	= /opt/data/mysql/mysql.sock
pid-file = mysqldb.pid
character-set-server = utf8mb4
#跳过解析主机名,只使用ip地址(off|on)
skip_name_resolve = on

#若你的MySQL数据库主要运行在境外,请务必根据实际情况调整本参数
default_time_zone = "+8:00"

open_files_limit    = 65535
back_log = 1024
#允许的最大同时客户端连接数(默认151,0~100000)
max_connections = 512
max_connect_errors = 100000
table_open_cache = 1024
table_definition_cache = 1024
table_open_cache_instances = 64
max_allowed_packet = 32M
sort_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 768
interactive_timeout = 3600
wait_timeout = 3600
tmp_table_size = 32M
max_heap_table_size = 32M
slow_query_log = 1
log_timestamps = SYSTEM
slow_query_log_file = /opt/data/mysql/slow.log
log-error = /opt/data/mysql/error.log
long_query_time = 0.2
log_queries_not_using_indexes =1
log_throttle_queries_not_using_indexes = 60
min_examined_row_limit = 100
log_slow_admin_statements = 1
log_slow_slave_statements = 1
#表示本机的序列号为1,如果做主从,或者多实例,serverid一定不能相同(默认为0)
server-id = 1
#启用二进制日志记录
log-bin = on


binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G

#注意:MySQL 8.0开始,binlog_expire_logs_seconds选项也存在的话,会忽略expire_logs_days选项
expire_logs_days = 15

master_info_repository = TABLE
relay_log_info_repository = TABLE
#控制是否启用基于 GTID 的日志记录以及日志可以包含的事务类型(OFF、OFF_PERMISSIVE、ON_PERMISSIVE、ON)
gtid_mode = on
#服务器通过只允许执行可以使用 GTID 安全记录的语句来强制执行 GTID 一致性
enforce_gtid_consistency = 1
#通常,副本不会将从源服务器接收到的任何更新记录到自己的二进制日志中。启用此变量会导致副本将其复制 SQL 线程执行的更新写入其自己的二进制日志。要使此选项生效,还必须启用二进制日志记录的选项。
log_slave_updates
slave-rows-search-algorithms = 'INDEX_SCAN,HASH_SCAN'
#设置二进制日志记录格式,可以是STATEMENT、 ROW或MIXED
binlog_format = row
binlog_checksum = 1
relay_log_recovery = 1
relay-log-purge = 1
#指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。
key_buffer_size = 32M
read_buffer_size = 8M
read_rnd_buffer_size = 4M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
lock_wait_timeout = 3600
explicit_defaults_for_timestamp = 1
#innodb_thread_concurrency的默认值为0,它表⽰默认情况下不限制线程并发执⾏的数量
innodb_thread_concurrency = 0
#innodb_sync_spin_loops = 100
#innodb_spin_wait_delay = 30

#数据库隔离级别 (READ UNCOMMITTED(读取未提交内容) READ COMMITTED(读取提交内容) REPEATABLE READ(可重读) SERIALIZABLE(可串行化))
transaction_isolation = REPEATABLE-READ
#innodb_additional_mem_pool_size = 16M
#InnoDB使用一个缓冲池来保存索引和原始数据,设置越大,在存取表里面数据时所需要的磁盘I/O越少。一般配置为物理内存的50%~75%,应根据具体环境而定。
innodb_buffer_pool_size = 45875M
#InnoDB 缓冲池划分 的区域数。对于具有数 GB 范围内缓冲池的系统,将缓冲池划分为单独的实例可以通过减少不同线程读取和写入缓存页面时的争用来提高并发性。使用散列函数将存储在缓冲池中或从缓冲池中读取的每一页随机分配给缓冲池实例之一。注意,此选项仅在设置为 1GB 或更大 时生效,大于等于 1GB 时默认值为 8 。否则,默认值为 1(非Windows)
innodb_buffer_pool_instances = 4
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
#设置配置一个可扩展大小的尺寸为1G的单独文件,名为ibdata1.没有给出文件的位置,所以默认的是在MySQL的数据目录内。
innodb_data_file_path = ibdata1:1G:autoextend

#InnoDB为了在与事务一起使用 的复制设置中获得最大可能的持久性和一致性,请使用以下设置
#在提交事务之前启用二进制日志到磁盘的同步。这是最安全的设置,但由于磁盘写入次数增加,可能会对性能产生负面影响
sync_binlog = 1
#设置为0就等于innodb_log_buffer_size队列满后在统一存储。默认为1,InnoDB 会在每次提交后将事务日志写到磁盘上,也是最安全的设置。
innodb_flush_log_at_trx_commit = 1

#用于写入磁盘上日志文件 的缓冲区大小(以字节为单位),默认为16MB。
innodb_log_buffer_size = 32M
#日志组中每个日志文件的大小,(每个日志大小*日志组中的日志个数<512GB)默认48MB,最大: 512GB/innodb_log_files_in_group
innodb_log_file_size = 2G
#日志组 中 的日志文件数。 以循环方式写入文件。默认(和推荐)值为 2
innodb_log_files_in_group = 3
#innodb_max_undo_log_size = 4G
#innodb_undo_directory = /data/mysql/undolog
#innodb_undo_tablespaces = 95
# 根据您的服务器IOPS能力适当调整
# 一般配普通SSD盘的话,可以调整到 10000 - 20000
# 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_sync = 0
innodb_flush_neighbors = 0
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_purge_threads = 4
innodb_page_cleaners = 4
innodb_open_files = 65535
#InnoDB尝试 从缓冲池中刷新数据,以 使脏页的百分比不超过此值。默认值为 75。(0~99.99)
innodb_max_dirty_pages_pct = 50
#定义用于将 数据刷新到 InnoDB 数据文件和日志文件的方法,这会影响 I/O 吞吐量(fsync、O_DSYNC、littlesync、nosync、O_DIRECT、O_DIRECT_NO_FSYNC)
innodb_flush_method = O_DIRECT
innodb_lru_scan_depth = 4000
innodb_checksum_algorithm = crc32
#仅适用于InnoDB行锁,InnoDB 事务在放弃之前等待行锁 的时间长度(以秒为单位)。默认值为 50 秒。当发生锁等待超时时,当前语句被 回滚(而不是整个事务)。
innodb_lock_wait_timeout = 10
innodb_rollback_on_timeout = 1
innodb_print_all_deadlocks = 1
#InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。0关闭,1开启。
innodb_file_per_table = 1
#MySQL 5.6.6新加入的一个参数,用以指定对InnoDB表进行在线DDL操作时,所使用的临时日志文件的最大大小(以字节为单位,默认128MB)
innodb_online_alter_log_max_size = 4G
innodb_stats_on_metadata = 0
innodb_undo_log_truncate = 1
# some var for MySQL 5.7
innodb_checksums = 1
#innodb_file_format = Barracuda
#innodb_file_format_max = Barracuda
query_cache_size = 0
query_cache_type = 0
innodb_undo_logs = 128

innodb_status_file = 1
#注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log-error文件增长较快
innodb_status_output = 0
innodb_status_output_locks = 1

innodb_sort_buffer_size = 67108864
innodb_autoinc_lock_mode = 1

#实现MySQL不区分大小
lower_case_table_names=1
auto_increment_offset = 1
auto_increment_increment = 2
[mysqldump]
quick
#设定在网络传输中一次消息传输量的最大值。系统默认值为1MB,最大值是1GB,必须设置为1024的倍数。单位为字节。
max_allowed_packet = 32M

1.安装

1.1、添加软连接至/etc/my.cnf

ln -s /opt/mysql/my.cnf /etc/my.cnf

1.2、注册服务

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

1.3、初始化

bin/mysqld --initialize --user=mysql

 1.4、启动服务

service mysqld start

1.5、修改密码

SET PASSWORD = PASSWORD('123456'); 

 

 PS:数据库详情

 参考链接:

MySQL :: MySQL 5.7 Reference Manual :: 5.1.7 Server System Variables

MySQL :: MySQL 5.7 Reference Manual :: 4.5.1.2 mysql Client Commands

MySQL :: MySQL 5.7 Reference Manual :: 14.15 InnoDB Startup Options and System Variables

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值