2021-07-01

centos7安装mysql5.7

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。

  1. 下载并安装MySQL官方的 Yum Repository:

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
2. 安装下载的rpm:

yum -y install mysql57-community-release-el7-10.noarch.rpm
3. 安装MySQL服务器:

yum -y install mysql-community-server
这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb

  1. 启动MySQL:

systemctl start mysqld.service

systemctl enable mysqld.service
5. 查看MySQL运行状态:

systemctl status mysqld.service
6. 通过如下命令可以在日志文件中找出密码,并且记录下来:

grep “password” /var/log/mysqld.log
7. 进入数据库:

mysql -uroot -p
8. 修改数据库密码规则:

mysql> SHOW VARIABLES LIKE ‘validate_password%’;
±-------------------------------------±------+
| Variable_name | Value |
±-------------------------------------±------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
±-------------------------------------±------+
7 rows in set (0.01 sec)

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
9. 修改自己的新密码:

ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’;
10. root用户外部ip能访问,使用下面语句:

mysql> CREATE USER ‘root’@’%’ IDENTIFIED BY ‘123456’;

mysql> grant all on . to ‘root’@’%’ identified by ‘123456’ with grant option;
11. 重启服务:

systemctl restart mysqld
12. 安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:

yum -y remove mysql57-community-release-el7-10.noarch
13.优化配置

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8
[mysql]
no-auto-rehash #仅允许使用键值的updates和deletes
[mysqld]
port = 3306 #msyql服务器端口号
basedir = /usr/local/mysql #mysql安装目录
datadir = /usr/local/mysql/data #mysql数据存放目录
#datadir = /data/mysql/data #同上
socket = /usr/local/mysql/data/mysql.sock #sock文件

#字符集与校对规则
character-set-server = utf8 #默认字符集
collation-server = utf8_general_ci #设置校对规则

external-locking = FALSE #避免外部锁定(减少出错几率,增加稳定性)
skip-name-resolv #禁止外部连接进行DNS解析
skip-slave-start # 复制进程就不会随着数据库的启动而启动 http://blog.csdn.net/aeolus_pu/article/details/9419965
#master库binlog参数相关
server-id = 1 #主从复制时,ID不能相同
#binlog_format = mixed #二进制日志格式(mixed、row、statement)
binlog-cache-size = 32M #设置二进制日志缓存大小
sync-binlog = 1 #每隔N秒将缓存中的二进制日志记录写回硬盘
max_binlog_cache_size = 8M #最大的二进制Cache日志缓冲尺寸
max_binlog_size = 1G #单个二进制日志文件的最大值,默认1G,最大1G
log-bin-index = /usr/local/mysql/data/mysql-bin.index #binlog索引文件位置
log-bin = /usr/local/mysql/data/mysql-bin #binlog日志存放目录
expire_logs_days = 90 #二进制日志文件过期时间
#slave数据库binlog参数
server-id = 10 #各数据库id不能相同
log_slave_updates = 1 #级联也使用
relay-log = /usr/lcoal/mysql/data/relay-bin #relady目录
relay-log-info-file = /usr/local/mysql/data/relay-log.info #info目录
slave-skip-errors = 1007,1008,1032,1062 #跳过主从复制时的错误
read-only = 1 #从服务器只读,SQL线程不影响,具有super,root用户不限制
master-connect-retry = 60 #主从复制丢失,重连间隔时间,默认60s
#replicate-ignore-db = mysql #忽略mysql库不同步
replicate-wild-do-table=testdb1.%
replicate-wild-do-table=testdb2.%
replicate-wild-do-table=testdb3.%
#master半同步开启参数
rpl_semi_sync_master_enabled = ON
rpl_semi_sync_master_timeout = 10000
#rpl_semi_sync_master_wait_no_slave = ON
#rpl_semi_sync_master_trace_level = 32
#slave半同步开启参数
rpl_semi_sync_slave_enabled = ON
#rpl_semi_sync_slave_trace_level = 32

back_log = 1000 #指出在MySQL暂时停止响应新请求之前,短时间内的多少个请求
open_files_limit = 1024 #打开文件的最大个数,如果出现too mantopen files之类的就需要调整该值了

#连接相关
max_connections = 2000 #指定MySQL允许的最大连接进程数,show global variables like ‘%connections%’; http://elf8848.iteye.com/blog/1847445
max_user_connections = 2000 #单用户最大的连接数,max_user_connections < 实例 max_user_connections < max_connections
max_connect_errors = 100000 #默认为10,设置每个主机的连接请求异常中断的最大次数,超过后会blocked,连接成功后初始0,出现错误后需要flush hosts

max_allowed_packet = 8M #服务器一次能处理的最大的查询包的值
wait_timeout = 360 #指定一个请求的最大连接时间
interactive_timeout = 360 #连接保持活动的时间
#访问日志
#general_log = on
#general_log_file = /usr/local/mysql/data/mysql_access.log

#错误日志
log_error = /data/mysql/data/mysql_error.log
#慢查询相关参数
slow_query_log = on #开启慢查询
log-queries-not-using-indexes #记录所有没有使用到索引的查询语句
long_query_time = 2 #指定多少秒未返回结果的查询属于慢查询
min_examined_row_limit = 5 #记录那些由于查找了多余5次而引发的慢查询
log-slow-admin-statements #记录那些慢的OPTIMIZE TABLE,ANALYZE TABLE和ALTER TABLE语句
log-slow-slave-statements #记录由slave所产生的慢查询
slow_query_log_file = /usr/local/mysql/data/slow.log #指定慢查询日志文件路径
table_cache = 614 #表分配的内存,物理内存越大,设置就越大
table_open_cache = 512 #设置高速缓存表的数目
thread_cache_size = 64 #服务器线程缓存数,与内存大小有关(建议大于3G设置为64)
thread_concurrency = 32 #CPU核数的两倍
query_cache_size = 32M #指定MySQL查询缓冲区的大小
query_cache_limit = 2M #只有小于此设置值的结果才会被缓存
query_cache_min_res_unit = 2k #设置查询缓存分配内存的最小单位
key_buffer_size = 512M #指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能
sort_buffer_size = 2M #设置查询排序时所能使用的缓冲区大小,系统默认大小为2MB
join_buffer_size = 1M #联合查询操作所能使用的缓冲区大小
read_buffer_size = 4M #读查询操作所能使用的缓冲区大小
read_rnd_buffer_size = 16M #设置进行随机读的时候所使用的缓冲区
thread_stack = 192K #设置Mysql每个线程的堆栈大小,默认值足够大,可满足普通操作
bulk_insert_buffer_size = 8M #可以适当调整参数至16MB~32MB,建议8MB
#myisam参数引擎相关
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover #自动检查和修复没有适当关闭的MyISAM表
key_buffer_size = 16M #myisam索引buffer,只有key没有data

transaction_isolation = READ-COMMITTED #事务隔离级别
tmp_table_size = 64M #设置内存临时表最大值
max_heap_table_size = 64M #独立的内存表所允许的最大容量
#innodb引擎参数相关
default-storage-engine=InnoDB #默认表的类型为InnoDB
innodb_old_blocks_time =1000 #减小单次的大批量数据查询,默认为0,调整后性能提升80% http://www.cnblogs.com/cenalulu/archive/2012/10/10/2718585.html
innodb_flush_method = O_DIRECT #从innode刷新到磁盘,不经过系统write,fdatasync(默认),O_DSYNC,O_DIRECT http://blog.csdn.net/jiao_fuyou/article/details/16113403
innodb_additional_mem_pool_size = 16M #设置InnoDB存储的数据目录信息和其他内部数据结构的内存池大小
innodb_buffer_pool_size = 51G #InnoDB使用一个缓冲池来保存索引和原始数据,官方建议物理内存的80%
innodb_data_file_path = ibdata1:128M:autoextend #表空间
innodb_file_io_threads = 4 #InnoDB中的文件I/O线程,通常设置为4,innodb除master线程外,还有insert buffer, log, read, write这4种线程,默认各有一个
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_thread_concurrency = 8 #服务器有几个CPU就设置为几,建议用默认设置,一般设为8
innodb_flush_log_at_trx_commit = 2 #设置为0就等于innodb_log_buffer_size队列满后再统一存储,默认为1
innodb_log_buffer_size = 16M #默认为1MB,通常设置为6-8MB就足够
innodb_log_file_size = 512M #确定日志文件的大小,更大的设置可以提高性能,但也会增加恢复数据库的时间
innodb_log_files_in_group = 3 #为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3
innodb_max_dirty_pages_pct = 90 #InnoDB主线程刷新缓存池中的数据
innodb_lock_wait_timeout = 120 #InnoDB事务被回滚之前可以等待一个锁定的超时秒数
innodb_file_per_table = 1 #InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间,0关闭,1开启
innodb_autoextend_increment = 256 #这个参数的作用是控制innodb 共享表空间文件自动扩展的大小
[mysqldump]
quick
max_allowed_packet = 64M
[mysqld_safe]
log-error = /usr/local/mysql/data/mysql.err
pid-file = /usr/local/mysql/data/mysqld.pid

查询innodb分配资源
mysql> show engine innodb status;

BUFFER POOL AND MEMORY

Total memory allocated 137363456; in additional pool allocated 0
Dictionary memory allocated 59957
Buffer pool size 8191
Free buffers 8028
Database pages 163
Old database pages 0
Modified db pages 0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 163, created 0, written 1
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 163, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]

我们使用的是专用于MySQL的(5.7 Percona的)上运行CentOS的(不同口味),主要128GB的服务器。我们innodb_buffer_pool_size设置为104GB这些和他们也有/ tmp目录8GB的内存磁盘。他们被大量使用,但从未使用过任何的交换。当然vm.swappiness设置为1,
下面就是我们用较低层的服务器(包括128GB为简洁起见),他们又从来没有使用过任何掉期和运行大型数据库(2-3TB):
128GB RAM:innodb_buffer_pool_size = 104GB
64GB RAM:innodb_buffer_pool_size = 56G
32GB RAM:innodb_buffer_pool_size = 28G

在大多数情况下,我们分配(N - 7G)* 0.9。所以对于一个64G的节点,我们最终分配给缓冲池内存〜51G
64GB RAM:innodb_buffer_pool_size = 51G

https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/
http://osxr.org:8080/mysql/ident?_i=back_log&_remember=1

DBA MySQL优化
log_error = localhost3306.err
sync_binlog=1
innodb_old_blocks_time =1000
innodb_flush_method = O_DIRECT
back_log=1000
max_connections = 2000
max_user_connections=2000
min_examined_row_limit =5
skip-slave-start
skip-name-resolve
max_connect_errors = 100000
character-set-server=utf8
collation-server=utf8_bin
binlog_cache_size=32M
query_cache_limit = 2M
tmp_table_size=256M
max_heap_table_size=256M
interactive_timeout=360
wait_timeout=360
log_slave_updates=1
expire_logs_days=60
binlog_format=mixed
tmpdir=/dev/shm
innodb_autoextend_increment = 256
innodb_buffer_pool_instances=8
innodb_additional_mem_pool_size=128M
innodb_max_dirty_pages_pct=80
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_log_file_size = 1G
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值