linux系统
- mysql-5.7.14-linux.zip部署包支持在CentOS 6.x/7.x
- 服务器硬盘大小要求
a) /data/mysql_data 如果存在该独立分区,要求该分区 >10G
b) 如果仅存在 /data 分区, 要求该分区 >10G
c) 否则,要求根分区/ > 10G
- MySQL_INSTALL_2016-08-17_08-25-29 文件的
sha256为 ecc8dbe15c120017b4f56fcffd09239e9da84128e0378979997799b3d62e8f3a
验证方法:输入sha256sum MySQL_INSTALL_2016-08-17_08-25-29 计算值是否一致
- 默认账号 root 初始密码
- Mysql程序目录为/opt/mysql_data
- Mysql配置文件为/etc/my.cnf
- 建议将配置文件中########innodb settings########章节中的innodb_buffer_pool_size = 512M 修改为服务器内存大小的50%-80%
- Mysql服务器启动命令:service mysqld start
- 停止命令:service mysqld stop
- 重启命令:service mysqld restart
操作步骤
1、将mysql-5.7.14-linux.zip部署包中MySQL_INSTALL_2016-08-14_15-37-36.bin文件上传至/opt目录中
2、使用root账号执行sh /opt/MySQL_INSTALL_2016-08-14_15-37-36.bin
3、请耐心等待自动安装,不要做其他操作,直至出现下图提示安装完成后服务器自动重启,重启后mysql服务自动启动
Windows安装说明
步骤1
解压mysql-5.7.11-winx64.zip,讲其中mysql文件夹拷贝至所需的安装目录;以下操作步骤演示以拷贝至C盘根目录为例;项目上存放路径放在容量较大磁盘
步骤2
修改mysql目录下的my.int配置文件,将其中路径修改为mysql所在路径
其中innodb_buffer_pool_size = 6G 建议修改为服务器内存大小的50%-80%
步骤3
以管理员方式打开命令行,进入mysql文件夹bin目录,输入以下命令进行安装
mysqld.exe --defaults-file=C:mysqlmy.ini --user=mysql --initialize --console
在初始化完MySQL后会给出安装mysql后root的随机密码
步骤4
注册服务,继续在改命令行窗口中输入以下命令
mysqld --install
最后服务中启动mysql服务即可
FAQ
修改登录密码
在使用默认密码登录后使用以下命令重置密码,其中newpassword表示重置的新密码
alter user 'root'@'localhost' identified by 'newpassword';
使用navicat还原mysql数据库的注意事项
使用navicat备份还原,其本质还是逻辑备份还原,只是在外面做了一层包装,在还原的过程中,会出现如下的问题:
出现这个问题的原因有如下几种可能性:
- 还原过程中使用了不符合GTID要求的语法,比如create table XXX select …;
- 设置autocommit=0后,事务内有临时表;
GTID的主要作用是让每个事务都有一个全局唯一的编号,这样在做高可用以及数据恢复的时候可以比较简单,而不用像以前去查找当前事务在哪个file的哪个pos。
目前在使用navicat还原时产生上述问题,数据库层面解决的办法如下:
- 在/etc/my.cnf中对应的三个配置项修改成如下
autocommit = 1
enforce-gtid-consistency = 0
gtid-mode = 0
- 重启数据库 service mysqld restart
- 在navicat上把之前新建的数据库删除,重新建立数据库,然后再次导入数据,这样仅仅是在数据库层面解决这些报错信息,但是带来的问题需要注意:
- autocommit,默认配置里面autocommit是为0的,即用户写完SQL后,需要显示输入commit;才会提交数据,这样可以在一定程度上避免运维人员人工出错,至少在commit之前会看一眼上面的语句。现在autocommit=1以后,默认就输入后立即提交。
- GTID,GTID主要解决binlog中事务ID对应的问题,设置GTID以后,高可用设置以及数据从备份恢复时会比较容易。
现在关闭该选项后,高可用设置和还原需要和以前一样,去找filename以及pos。
UTF8的问题
MySQL中的UTF8和我们所说的C#、Java中的UTF8是两个概念,由于MySQL在支持UTF8的时候,UTF8标准还没有出来,所以MySQL的UTF8实现的并不完整,MySQL中的UTF8最多仅仅占用3个字节,而目前标准的UTF8最多可占用4个字节。
MySQL中完全实现UTF8标准的字符集是UTF8MB4,即MySQL中的UTF8是UTFMB4的子集。
建议使用UTF8MB4;
数据库层面临时解决问题的办法:
- 在 /etc/my.cnf 中将character_set_server=utf8mb4 改成 character_set_server=utf8 。
- 重启数据库 service mysqld restart
- 删除数据库,重新建立数据,重新导入表即可。
注意:该方法仅仅是有备份的时候,导入数据时的解决办法,如果没有备份,需要线上修改的话,请进行ALTER TABLE操作。