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
评论