概述

1、安装方式介绍

mysql安装共3中方式

1)yum安装,最简单的方式

2)rpm包安装,切记下载相应系统的 稳定版 源码包,相对较简单

3)压缩包安装:自由度高,但配置相应复杂,且需要自己注册自启服务

注:1,2,3无法在一台机器上共存,
1,2可以通过mulit-mysql启动多个服务看,但无法实现:单机上的myql主从
只有3方式支持1台安装多个mysql服务,实现mysql主从

注:作为数据库,应该做系统参数优化

Rocky(Centos)数据库等高并发或高io应用,linux应调优系统-CSDN博客文章浏览阅读131次。默认的最大打开文件数是1024.不满足生产环境的要求。https://blog.csdn.net/qq_26408545/article/details/137542338

补充知识

文章最后含:
    1)mysql 根据并发选择合适的主机
    2)合理设计mysql数据表,mysql8用到的
第二部分:
    优化mysql配置:(32G linux电脑)
第四部:64G windows mysl数据库优化配置

2、切换数据库路径,如何加入的SELINUX

#SELINUX 授权
semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"
restorecon -Rv /data/mysql
#查看授权
semanage fcontext -l|grep mysqld_db_t

#授予目录权限
chown -R mysql:mysql /data/mysql
chmod -R 755 /data/mysql

3、mysql优化配置

优化:linux 详见本文章 二.2;window 优化详见本文章 四

一、安装步骤

1.获取最新的yum rmp包地址

获取mysql yum 本地源 下载地址:MySQL :: MySQL Community Downloadsicon-default.png?t=N7T8https://dev.mysql.com/downloads/

根据系统:获取相应版本的 yum源 下载地址:

https://repo.mysql.com//mysql80-community-release-el7-5.noarch.rpm

2.添加mysql 本地 yum 源

2.1)切换路径:运行

cd /usr/local

2.2)将第一步获取的.rpm 上传至/usr/local下mysql yum源:

注意:需要下相应系统的yum 版本(找red hat相应版本)

或者用命令下载到 /usr/local 下(注意下面文件名,要根据官网下载的文件来)

wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm

2.3) 安装本地 mysql yum源:运行 (注意下面文件名,要根据官网下载的文件来)

yum localinstall mysql80-community-release-el7-5.noarch.rpm

3.安装mysql

3.1)创建Mysql账户:运行

#添加用户组
groupadd mysql
#用户组添加用户
useradd -g mysql mysql

3.2) 安装mysql:运行

yum install mysql-community-server

 如果安装失败则运行下列命令后,再执行安装命令

# 若报错:先执行:
yum module disable mysql 
#再执行:
yum install mysql-community-server

3.3)初始化数据,主要是忽略大小写

3.3.1)执行:

/usr/sbin/mysqld --initialize --user=mysql --lower-case-table-names=1 

3.3.2)修改配置 /etc/my.cnf  添加

#linux 需配置,忽略表名大小写
lower_case_table_names=1

3.4)启动服务

systemctl start mysqld

3.4)查看初密码

cat /var/log/mysqld.log | grep password

4.登录mysql,开启远程访问

4.1)登录myql:运行

mysql -u root -p

输入临时密码

4.2)登录后修改密码

注:必须修改,否则新版mysql会限制操作;

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

修改密码后,则root有权限执行其他命令,例如:

select version();

4.3)登陆后运行远程访问

use mysql;

update user set host='%' where user='root';

4.4)退出mysql登录:

quit;

4.5)重启mysql服务让远程访问生效

systemctl restart mysqld

4.6)卸载mysql yum源,(防止执行yum update误更新数据库)(注意下面文件名,要根据官网下载的文件来)

yum -y remove mysql80-community-release-el7-5.noarch

5.开启防火墙,调优配置,重启服务

5.1)mysql配置修改

mysql配置路径/etc/my.cnf,mysql数据路径/var/lib/mysql

优化:linux 详见本文章 二.2;window 优化详见本文章 四

5.2)开启防火墙,若仅对部分网段开放,详见知识库的防火墙文档

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

可能用到的命令

#移除端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
firewall-cmd --reload
#查看开放端口情况
firewall-cmd --list-all

5.3)用navicate连接mysql

执行查看全局配置:

show global variables;

查看数据目录配置:

show global variables like "%datadir%";

二、优化msql配置 和 切换数据路径

注:不用必须关闭SELINUX

1)备份数据库配置文件

#备份配置文件
cp /etc/my.cnf /etc/my.cnf.backup

2)优化mysql配置:(32G linux电脑)

以下是32G电脑的mysql优化后的配置文件:根据内存比例适当调低内存大小和线程大小

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password

#linux 需配置,忽略表名大小写
lower_case_table_names=1
datadir=/data/mysql/data
socket=/var/lib/mysql/mysql.sock
#日志位置
#log-error=/var/log/mysqld.log
log-error=/data/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

log_bin=binlog
# 最大连接数。默认值是151,最多2000。如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量。
# 但是如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值。
max_connections=1500

# table高速缓存的数量
table_open_cache=200

# 临时表的大小,例如做高级GROUP BY操作生成的临时表。如果调高该值,MySQL同时将增加heap表的大小,可达到提高联接查询速度的效果,
# 建议尽量优化查询,要确保查询过程中生成的临时表在内存中,避免临时表过大导致生成基于硬盘的MyISAM表
# 默认值(524M),修改值(2G)
tmp_table_size=2G

# 线程缓存。当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)
# 建议设置接近Threads_connected值,再结合物理内存:1G-8;2G-16;3G-32 综合考虑一下值。
thread_cache_size=64

# 索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。
# 只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。
# 默认配置数值是(8M),改为(256M)
key_buffer_size=128M

# 是MySQL读入缓冲区的大小,将对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区,
# read_buffer_size变量控制这一缓冲区的大小,如果对表的顺序扫描非常频繁,并你认为频繁扫描进行的太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。
# 默认配置数值是(64K),改为(8M)
read_buffer_size=8M

#随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。
#进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。
#但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。
#默认数值是262144(256K),可改为16777208(16M)
read_rnd_buffer_size=16M

# 尚未执行的事务的缓存大小,默认值为8M,一般8M-16M。如果你有很多事务的更新,插入或删除操作,通过这个参数会大量的节省了磁盘I/O。
# 默认值(1M),修改后值(8M)
innodb_log_buffer_size=8M

#缓冲池的大小,缓存数据和索引,对InnoDB整体性能影响较大,相当于MyISAM的key_buffer_size。
#如果只用Innodb,可以把这个值设为内存的70%-80%。越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。
#该值直接占用内存,理论越大性能越好(独立部署可占机器内存的2/3)
innodb_buffer_pool_size=20480M

# 在一个日志组每个日志文件的大小,用于确保写操作快速而可靠并且在崩溃时恢复。
#一般用64M-512M,具体取决于服务器的空间。大的文件提供更高的性能,但数据库恢复时会用更多的时间。
#原始数值是48M,可改为(512M)
#innodb_log_file_size=256M (废弃参数)
innodb_redo_log_capacity=256M

# thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那thread_concurrency  的应该为4
#原始数值是33,可改为(64)
innodb_thread_concurrency=64

# 可以开启多个内存缓冲池,这样可以并行的内存读写。默认为8,一般为1-8。
# 最常1s就会刷新一次,故不用太大。对于较大的事务,可以增大缓存大小。如果InnoDB缓存池被划分成多个区域,建议每个区域不小于1GB的空间。
# 默认值(8),修改后值(4)
innodb_buffer_pool_instances=4

# MySQL能暂存的连接数量,默认值是80,最多512,可设置为128
# 如果MySQL的连接数据达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log。
# 如果等待连接的数量超过back_log,将不被授予连接资源。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用。类似于线程池
back_log=256

#联合查询操作所能使用的缓冲区大小
#read_buffer_size,read_rnd_buffer_size,sort_buffer_size,join_buffer_size为每个线程独占,也就是说,如果有100个线程连接,则占用为16M*500
#默认数值是(256K),可改为(8M)
join_buffer_size=8M

# 通信缓冲大小
max_allowed_packet=64M

#每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。
#默认数值是(256K),可改为(16M)
sort_buffer_size=16M

max_binlog_size=1G
binlog_expire_logs_seconds=864000

3)迁移数据

3.1)新建路径:/data/mysql

3.2)迁移数据

#迁移数据
cp -r /var/lib/mysql /data/mysql/
#迁移后会是:/data/mysql/mysql
#需重名 /data/mysql/mysql 为 /data/mysql/data

 4)目录并授权:

#授予目录权限
chown -R mysql:mysql /data/mysql
chmod -R 755 /data/mysql

5)selinux授权或关闭selinux

可操作1:selinux授权

#授权
semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"
restorecon -Rv /data/mysql
#查看授权
semanage fcontext -l|grep mysqld_db_t

可选操作2:关闭SELINUX

#临时关闭:运行
setenforce 0

永久关闭selinux

#修改 /etc/selinux/config 设置如下,并重启

#关闭: SELINUX
SELINUX=disabled

6)重启电脑测试

#重启命令测试
reboot

7)链接mysql查看数据路径

show variables like '%dir%';

 三、mysql常用命令


#其他mysqld命令
#查看状态
systemctl status mysqld
#启动
systemctl start mysqld
#关闭
systemctl stop mysqld
#重启
systemctl restart mysqld

四、64G windows mysl数据库优化配置

32G linux详见:2.2,以下是64G windows 独立部署优化配置文件

# Other default tuning values
# MySQL Server Instance Configuration File
# ----------------------------------------------------------------------
# Generated by the MySQL Server Instance Configuration Wizard
#
#
# Installation Instructions
# ----------------------------------------------------------------------
#
# On Linux you can copy this file to /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options
# (@localstatedir@ for this installation) or to
# ~/.my.cnf to set user-specific options.
#
# On Windows you should keep this file in the installation directory 
# of your server (e.g. C:\Program Files\MySQL\MySQL Server X.Y). To
# make sure the server reads the config file use the startup option 
# "--defaults-file". 
#
# To run the server from the command line, execute this in a 
# command line shell, e.g.
# mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"
#
# To install the server as a Windows service manually, execute this in a 
# command line shell, e.g.
# mysqld --install MySQLXY --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"
#
# And then execute this in a command line shell to start the server, e.g.
# net start MySQLXY
#
#
# Guidelines for editing this file
# ----------------------------------------------------------------------
#
# In this file, you can use all long options that the program supports.
# If you want to know the options a program supports, start the program
# with the "--help" option.
#
# More detailed information about the individual options can also be
# found in the manual.
#
# For advice on how to change settings please see
# https://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
#
#
# CLIENT SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section. If you want your own MySQL client program to
# honor these values, you need to specify it as an option during the
# MySQL client library initialization.
#
[client]

# pipe=

# socket=MYSQL

port=3306

[mysql]
no-beep

# default-character-set=

# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this 
# file.
#
# server_type=3
[mysqld]

# The next three options are mutually exclusive to SERVER_PORT below.
# skip-networking
# enable-named-pipe
# shared-memory

# shared-memory-base-name=MYSQL

# The Pipe the MySQL Server will use
# socket=MYSQL

# The TCP/IP Port the MySQL Server will listen on
port=3306

# Path to installation directory. All paths are usually resolved relative to this.
# basedir="C:/Program Files/MySQL/MySQL Server 8.0/"

# Path to the database root
datadir=C:/ProgramData/MySQL/MySQL Server 8.0\Data

# The default character set that will be used when a new schema or table is
# created and no character set is defined
# character-set-server=

# The default authentication plugin to be used when connecting to the server
default_authentication_plugin=caching_sha2_password

# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB

# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

# General and Slow logging.
log-output=FILE

general-log=0

general_log_file="WIN-PV2TDF6P2VR.log"

slow-query-log=1

slow_query_log_file="WIN-PV2TDF6P2VR-slow.log"

long_query_time=10

# Error Logging.
log-error="WIN-PV2TDF6P2VR.err"

# ***** Group Replication Related *****
# Specifies the base name to use for binary log files. With binary logging
# enabled, the server logs all statements that change data to the binary
# log, which is used for backup and replication.
log-bin="WIN-PV2TDF6P2VR-bin"

# ***** Group Replication Related *****
# Specifies the server ID. For servers that are used in a replication topology,
# you must specify a unique server ID for each replication server, in the
# range from 1 to 2^32 ? 1. “Unique” means that each ID must be different
# from every other ID in use by any other source or replica.
server-id=2

# ***** Group Replication Related *****
# The host name or IP address of the replica to be reported to the source
# during replica registration. This value appears in the output of SHOW REPLICAS
# on the source server. Leave the value unset if you do not want the replica to
# register itself with the source.
# report_host=0.0

# NOTE: Modify this value after Server initialization won't take effect.
#linux 需配置
lower_case_table_names=1

# Secure File Priv.
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"

# 最大连接数。默认值是151,最多2000。如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量。
# 但是如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值。
max_connections=1500

# table高速缓存的数量
table_open_cache=1024

# 临时表的大小,例如做高级GROUP BY操作生成的临时表。如果调高该值,MySQL同时将增加heap表的大小,可达到提高联接查询速度的效果,
# 建议尽量优化查询,要确保查询过程中生成的临时表在内存中,避免临时表过大导致生成基于硬盘的MyISAM表
# 默认值(524M),修改值(2G)
tmp_table_size=2G

# 线程缓存。当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)
# 建议设置接近Threads_connected值,再结合物理内存:1G-8;2G-16;3G-32 综合考虑一下值。
thread_cache_size=64

#*** MyISAM Specific options
# The maximum size of the temporary file MySQL is allowed to use while
# recreating the index (during REPAIR, ALTER TABLE or LOAD DATA INFILE.
# If the file-size would be bigger than this, the index will be created
# through the key cache (which is slower).
myisam_max_sort_file_size=100G

# The size of the buffer that is allocated when sorting MyISAM indexes
# during a REPAIR TABLE or when creating indexes with CREATE INDEX
# or ALTER TABLE.
myisam_sort_buffer_size=2G

# 索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。
# 只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。
# 默认配置数值是(8M),改为(256M)
key_buffer_size=256M

# 是MySQL读入缓冲区的大小,将对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区,
# read_buffer_size变量控制这一缓冲区的大小,如果对表的顺序扫描非常频繁,并你认为频繁扫描进行的太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。
# 默认配置数值是(64K),改为(8M)
read_buffer_size=8M
#随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。
#进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。
#但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。
#默认数值是262144(256K),可改为16777208(16M)
read_rnd_buffer_size=16M

#*** INNODB Specific options ***
# innodb_data_home_dir=

# Use this option if you have a MySQL server with InnoDB support enabled
# but you do not plan to use it. This will save memory and disk space
# and speed up some things.
# skip-innodb

# 把log buffer的数据写入日志文件并flush磁盘的策略,该值对插入数据的速度影响非常大。取值分别为0、1(默认值)、2(推荐值)
# 0:事务提交时,不写入磁盘,而是每秒把log buffer的数据写入日志文件,并且flush(刷到磁盘)。速度最快,但不安全。mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。
# 1:每次事务提交时把log buffer的数据写入日志文件,并且flush(刷到磁盘)。最安全,但也最慢。确保了事务的ACID。
# 2:每次事务提交时把log buffer的数据写入日志文件,每秒flush(刷到磁盘)。速度较快,比0安全。操作系统崩溃或者系统断电会导致上一秒钟所有事务数据的丢失。
# 默认值(1),修改后值(2)
innodb_flush_log_at_trx_commit=2

# 尚未执行的事务的缓存大小,默认值为8M,一般8M-16M。如果你有很多事务的更新,插入或删除操作,通过这个参数会大量的节省了磁盘I/O。
# 默认值(1M),修改后值(8M)
innodb_log_buffer_size=8M

#缓冲池的大小,缓存数据和索引,对InnoDB整体性能影响较大,相当于MyISAM的key_buffer_size。
#如果只用Innodb,可以把这个值设为内存的70%-80%。越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。
#该值直接占用内存,理论越大性能越好(独立部署可占机器内存的2/3)
innodb_buffer_pool_size=40960M

# 在一个日志组每个日志文件的大小,用于确保写操作快速而可靠并且在崩溃时恢复。
#一般用64M-512M,具体取决于服务器的空间。大的文件提供更高的性能,但数据库恢复时会用更多的时间。
#原始数值是48M,可改为(512M)
innodb_log_file_size=512M

# thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那thread_concurrency  的应该为4
#原始数值是33,可改为(64)
innodb_thread_concurrency=64

# The increment size (in MB) for extending the size of an auto-extend InnoDB system tablespace file when it becomes full.
innodb_autoextend_increment=64

# 可以开启多个内存缓冲池,这样可以并行的内存读写。默认为8,一般为1-8。
# 最常1s就会刷新一次,故不用太大。对于较大的事务,可以增大缓存大小。如果InnoDB缓存池被划分成多个区域,建议每个区域不小于1GB的空间。
# 默认值(8),修改后值(4)
innodb_buffer_pool_instances=4

# Determines the number of threads that can enter InnoDB concurrently.
innodb_concurrency_tickets=5000

# Specifies how long in milliseconds (ms) a block inserted into the old sublist must stay there after its first access before
# it can be moved to the new sublist.
innodb_old_blocks_time=1000

# It specifies the maximum number of .ibd files that MySQL can keep open at one time. The minimum value is 10.
innodb_open_files=300

# When this variable is enabled, InnoDB updates statistics during metadata statements.
innodb_stats_on_metadata=0

# When innodb_file_per_table is enabled (the default in 5.6.6 and higher), InnoDB stores the data and indexes for each newly created table
# in a separate .ibd file, rather than in the system tablespace.
innodb_file_per_table=1

# Use the following list of values: 0 for crc32, 1 for strict_crc32, 2 for innodb, 3 for strict_innodb, 4 for none, 5 for strict_none.
innodb_checksum_algorithm=0

# MySQL能暂存的连接数量,默认值是80,最多512,可设置为128
# 如果MySQL的连接数据达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log。
# 如果等待连接的数量超过back_log,将不被授予连接资源。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用。类似于线程池
back_log=256

# If this is set to a nonzero value, all tables are closed every flush_time seconds to free up resources and
# synchronize unflushed data to disk.
# This option is best used only on systems with minimal resources.
flush_time=0

#联合查询操作所能使用的缓冲区大小
#read_buffer_size,read_rnd_buffer_size,sort_buffer_size,join_buffer_size为每个线程独占,也就是说,如果有100个线程连接,则占用为16M*500
#默认数值是(256K),可改为(8M)
join_buffer_size=8M

# 通信缓冲大小
max_allowed_packet=64M

# If more than this many successive connection requests from a host are interrupted without a successful connection,
# the server blocks that host from performing further connections.
max_connect_errors=100

# Changes the number of file descriptors available to mysqld.
# You should try increasing the value of this option if mysqld gives you the error "Too many open files".
open_files_limit=4161

#每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。
#默认数值是(256K),可改为(16M)
sort_buffer_size=16M

# The number of table definitions (from .frm files) that can be stored in the definition cache.
# If you use a large number of tables, you can create a large table definition cache to speed up opening of tables.
# The table definition cache takes less space and does not use file descriptors, unlike the normal table cache.
# The minimum and default values are both 400.
table_definition_cache=1400

# Specify the maximum size of a row-based binary log event, in bytes.
# Rows are grouped into events smaller than this size if possible. The value should be a multiple of 256.
binlog_row_event_max_size=8K

# If the value of this variable is greater than 0, a replica synchronizes its master.info file to disk.
# (using fdatasync()) after every sync_master_info events.
sync_master_info=10000

# If the value of this variable is greater than 0, the MySQL server synchronizes its relay log to disk.
# (using fdatasync()) after every sync_relay_log writes to the relay log.
sync_relay_log=10000

# If the value of this variable is greater than 0, a replica synchronizes its relay-log.info file to disk.
# (using fdatasync()) after every sync_relay_log_info transactions.
sync_relay_log_info=10000

# Load mysql plugins at start."plugin_x ; plugin_y".
# plugin_load

# The TCP/IP Port the MySQL Server X Protocol will listen on.
loose_mysqlx_port=33060

五、防火墙添加端口转发,避免发布暴漏真实端口

暴漏端口最多5位,平时关闭;内部程序仍使用3306端口

防火墙基本命令

#启动防火墙   
systemctl start firewalld.service
#停止防火墙        
systemctl stop firewalld.service
#查看防火墙状态    
systemctl status firewalld
#设置防火墙随系统启动                   
systemctl enable firewalld
#禁止防火墙随系统启动
systemctl disable firewalld
#其他查看防火墙状态
firewall-cmd --state 

 将3306转发至33006端口,并开发33306端口,供发布时使用

firewall-cmd --add-forward-port=port=33306:proto=tcp:toport=3306:toaddr= --permanent
firewall-cmd --reload
firewall-cmd --list-all

发布后移除端口转发策略

sudo firewall-cmd --remove-forward-port=port=33306:proto=tcp:toport=3306 --permanent
firewall-cmd --reload
firewall-cmd --list-all

五、根据并发选择合理主机

  • 数据库先按照业务进行划分,拆分数据库
  • 然后搭建主从,提升查询能力
  • 根据业务规模选择合适的机器
  • 数据库先按照业务进行划分,拆分数据库,拆成了3个数据库
  • 然后搭建主从,提升查询能力,均是1主,1~3从(假设从机是3台,则第三台不参与核心业务,仅做备份和独立的分析数据库)
  • 根据业务规模选择合适的机器:采用16核-64G的机器

六、合理设计mysql数据表

1、设计好数据库表
注:1)查询、关联、排序 必须做到有索引;
2)索引数据尽量6以内,包含聚合索引;
3)表只能有一个聚合索引(联合索引,也叫多列索引,只能用于核心分析查询)

下面是mybatis-plus,设置的mysql对照关系表

作用Msql中类型对应java类型
主键bigint NOT NULL AUTO_INCREMENTLong
文本varchar(255)String
状态 或 -127 ~ 127 的整数tinyint DEFAULT '0'Byte :-127 ~ 127
排序或整数int unsigned DEFAULT '0'Integer:4亿内
小数decimal(24,4),不能用double、float存在精度丢失BigDecimal,财务计算精度不丢失,现代计算不让用其他的
是否字段,只能0、1 这2种值tinyint(1) DEFAULT '0'Boolean,比较Boolean.TRUE.equal(值)
时间datetime DEFAULT NULLDate
Logo

更多推荐