MySQL 默认是启用 innodb_use_native_aio,使用异步 IO 操作,MySQL 启动时所需 aio slot 若超过系统当前 fs.aio-max-nr 设置,则无法启动报错 InnoDB: io_setup() failed with EAGAIN after 5 attempts.
通常在单机单实例环境下很少会遇到超出 aio-max-nr 的问题,若部署单机多实例,会大概率遇到此问题。我们来分析下该如何配置 fs.aio-max-nr 参数。关于 aio-nr 与 aio-max-nr
使用 strace 观测 io_setup 调用情况,
总共:4709 个 = 18 * 256 + 101
其分配 256 event 的也就是 InnoDB IO 线程。
1.下载、解压程序包;
2.设置好存放目录(不要有中文);
3.在系统变量中添加path(mysql程序的bin目录);
4.以管理员身份运行cmd,初始化①无密码:mysqld --initialize-insecure 登陆时用mysql -u root即可
②有密码(初始密码在自动生成的data目录下.err文件中):mysqld --initialize 登陆时用mysql -u root -p
5.安装:mysqld --install
6.启动服务:net start mysql
7.登陆:mysql -u root(无密码),mysql -u root -p 回车输入密码
8.退出:exit;
9.停止服务:net stop mysql
10.移除服务:mysqld --remove
说明:如重新安装需要停止服务,移除服务,删除data目录
11.配置文件my.ini(用记事本创建,修改文件名即可):
```mysql
[mysqld]
#设置时区为东八区,此项设置后,在连接MySQL的时候可以不用每次都手动设置时区
default-time-zone = '+8:00'
#解决导入脚本是function报错
log_bin_trust_function_creators=1
# 设置3308端口
port=3308
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证,此认证为1代加密认证。如果使用2代加密的话,使用可视化工具sqlyog会无法登陆!
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口 mysql8bin>mysql 直接登录
# mysql -hlocalhost -uroot -P3308
port=3308
user=root
password= root
default-character-set=utf8
```
12.退出mysql,停止服务,将my.ini文件放到程序根目录(bin,data同级目录)
13.以管理员身份运行cmd,直接输入mysql,回车即可进入mysql
14.启动和停止mysql服务必须以管理员身份运行命令
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)