zhmg23

我们是如此的不同

CentOS7.4安装mysql5.7多实例

说明:

mysql版本: 5.7.25

操作系统:CentOS Linux release 7.4.1708 (Core)

1、创建数据目录

mkdir -p /data/mysql/{3307,3308}

mkdir -p /var/log/mysql


chown mysql: /data/mysql/{3307,3308}

chown mysql: /var/log/mysql


2、安装

rpm -qa | grep mariadb | xargs rpm -e --nodeps

rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

注:下载可去官网下载或yum安装


3、编辑配置文件

查询 mysql 使用的配置文件次序:

# mysql --help |grep 'my.cnf'

order of preference, my.cnf, $MYSQL_TCP_PORT,

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


vim  /etc/my.cnf

只留如下2行:

[mysqld]

!includedir /etc/my.cnf.d


其他全部屏蔽

然后针对每个实例,创建配置文件

/etc/my.cnf.d/mysqld-3307.cnf

[mysqld@3307]

port       = 3307#端口

pid-file   = /var/run/mysqld/mysqld3307.pid#PID文件

socket     = /var/lib/mysql/mysql3307.sock#socket文件位置

datadir    = /data/mysql/3307/data#数据目录

log-bin    = /data/mysql/3307/binlog/mysql-bin#binlog日志名

log-error  = /var/log/mysql/mysqld3307.log#错误日志位置

tmpdir     = /data/mysql/3307/tmp#临时文件目录

slow_query_log_file = /data/mysql/3307/slowlog/slow.log#慢查询日志


skip-name-resolve#禁用dns解析

skip-host-cache#忽略dns解析

slow_query_log#开启慢查询日志

lower_case_table_names = 0#开启大小写

#log_queries_not_using_indexes#记录没有使用索引的sql语句

#explicit_defaults_for_timestamp#停止mysql自动更新列timestamp

binlog-format = ROW#binlog 日志模式,采用row模式记录最完整数据

binlog_rows_query_log_events = 1 #binlog开启记录用户原始sql语句。

server_id = 263307#服务器id,配置主从时需要

auto_increment_offset = 2#确定AUTO_INCREMENT列值的起点

auto_increment_increment = 2  #表示自增长字段每次递增的量

slave-skip-errors = 1062,1032#跳过主键重复错误,跳过所有类型为1062的错误

log-slave-updates=true#当一个服务器既作为主服务器又作为从服务器时,必须开启此选项,从而保证数据不丢失。

event_scheduler=on              #默认开启计划任务

log_bin_trust_function_creators=on      #默认开启触发器

enforce_gtid_consistency=on#gtid不执行不支持gtid的语句

gtid-mode=on#开启gtid模式

max_connections = 2000#最大连接数

wait_timeout = 3600#等待超时时间

connect_timeout = 800#连接超时时间

max_allowed_packet = 64M#限制server接受的数据包大小

max_connect_errors = 10#负责阻止过多尝试失败的客户端以防止暴力破解密码的情况

bulk_insert_buffer_size = 8M#批量插入缓存大小, 这个参数是针对MyISAM存储引擎来说的。适用于在一次性插入100-1000+条记录时, 提高效率

query_prealloc_size = 16384#用于语句的解析和执行的持久性缓冲区的大小,默认值8192

query_alloc_block_size = 16384#语句的解析和执行过程中创建的对象分配的内存块的分配大小,默认值8192

default_password_lifetime=0# 默认密码过期时间,0代表不过期

character-set-server=utf8mb4#默认字符集:utf8mb4,支持emoji表情。

collation-server = utf8mb4_unicode_ci#collation-server字符集配置 utf8mb4

init_connect='SET NAMES utf8mb4'#一般用户连接数据库时隐式执行的语句,即一般用户登录服务器时会先设置此选项。

character-set-client-handshake = FALSE#使客户端字符集与服务器保持一致。

symbolic-links=0#允许mysql的数据库文件使用软链接

ft_min_word_len = 2#全文索引配置,只会对2个字或者2个字以上的关键字建立索引

long_query_time = 1#慢查询语句耗时阈值

expire_logs_days = 14#binlog日志保存时间

#slave-parallel-type=LOGICAL_CLOCK#基于组提交的并行复制方式

#slave-parallel-workers=16#并行的SQL线程数量

#master_info_repository=TABLE

#relay_log_info_repository=TABLE


# MYISAM STUFF #

myisam_sort_buffer_size = 32M#MyISAM表发生变化时重新排序所需的缓冲


# CACHES AND LIMITS #

tmp_table_size = 128M#控制内存临时表的最大值,超过限值后就往硬盘写,写的位置由变量 tmpdir 决定 

max_heap_table_size = 32M#用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的最大行数值

join_buffer_size = 64M#当我们的join是ALL,index,rang或者Index_merge的时候使用的buffer

read_buffer_size = 2M#为需要全表扫描的MYISAM数据表线程指定缓存

sort_buffer_size = 2M#系统中对数据进行排序的时候用到的Buffer

table_open_cache = 1800#指定表高速缓存的大小,不得超过系统设置的文件描述符大小(ulimit -n)。

thread_cache_size = 384#用户线程缓冲

key_buffer_size = 1024M#myisam索引缓冲

query_cache_limit = 200M#指定单个查询能够使用的缓冲区大小

query_cache_size = 512M#查询缓存大小

query_cache_type = 1#控制着查询缓存功能的开启的关闭


# INNODB #

innodb_flush_method = O_DIRECT#控制着innodb数据文件及redo log的打开、刷写模式,有三个值:fdatasync(默认),O_DSYNC,O_DIRECT。这里是直接从MySQL innodb buffer里直接向磁盘上写

innodb_log_files_in_group = 2#为提高性能,MySQL可以以循环方式将日志文件写到多个文件

innodb_log_file_size = 256M#为innodb 数据日志文件大小,和上面的参数结合可得到总的redo log 空间。

innodb_flush_log_at_trx_commit = 2#事务日志从innodb log buffer写入到redo log中的方式,0最快,1最安全但是最耗时间,2折中,一般都会用2.

innodb_file_per_table = 1#可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间

innodb_buffer_pool_size = 20G#缓存innodb表的索引,数据,插入数据时的缓冲,此参数很关键,不要设置太大也不要设置太小,系统剩余内存不足时,可能会无法启动数据库实例

sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES#模式定义mysql会支持哪些sql语法。以及应执行哪种数据验证检查


[mysqldump]

single-transaction

quick



其他如3308、3309如下,更换端口即可,然后要创建配置文件中的binlog、slowlog、tmp目录



4、启动初始化

systemctl start mysqld


#初始化实例,这步一定不能少

mysqld --initialize-insecure  --user=mysql --datadir=/data/mysql/3307/data

mkdir -p /data/mysql/3307/{binlog,slowlog,tmp}

chown mysql: /data/mysql/3307/  -R


systemctl start mysqld@3307

systemctl stop mysqld@3307

systemctl enable mysqld@3307


登录修改密码:

找到 root 初始密码

# grep "password"  /var/log/mysql/mysqld3307.log

2020-02-12T07:38:01.884113Z 1 [Note] A temporary password is generated for root@localhost: _is5ipk00jwL


# mysql_secure_installation -P 3307 -S  /var/lib/mysql/mysql3307.sock

根据提示先输入 root 初始密码,然后更改为新密码。


# mysql -u root -p'yourPasswd123' -S /var/lib/mysql/mysql3307.sock -P 3307





评论