近日在读O’REILIY系列的《高可用MySQL》, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容。Master-Slave这东西吧,在许多公司都是标配,开发中基本天天都用,遇到的问题自然也不少(如主从不同步,Master宕机),但操作权限非常有限。有些东西,只有自己看了、做了,才能真正知道原理是什么,也才能更好的去把握。
本文是高可用MySQL的第一篇读书笔记,主要记录Windows环境下压缩版MySQL(基于安装版的傻瓜式安装过程这里不再提及)的安装过程。
下载地址为:http://www.mysql.com/downloads/
现在oracle接管MySQL之后,好像所有的资源都需要有oracle的账号才可以下载,对于习惯了点击即下载的人来说,的确非常不习惯。
我下载的文件是:Mysql-advanced-5.6.21-win32.zip
这个版本的MySQL解压之后非常大,大约有1.6G, 印象中之前机器上安装的MySQL 5.1版本全部文件+几个项目的数据库文件,也不过是700M而已
解压之后的文件夹大约包含以下几个子目录:
其中:
bin目录 - 主要存放MySQL的各种可执行程序
data目录 - 存放数据库的数据文件和索引文件等
MySQL-test - 有很多编写好的测试脚本
sql-bench - 用于MySQL benchmark基准测试的脚本
bin、data, include, lib, scripts目录等对于MySQL的正常运行非常重要,如非必要,不要动这些目录的东西
关于解压目录的选择:
很多人都喜欢将MySQL解压到Program files文件夹中,我这里并不建议这样做,原因是:Program files文件夹本身带有空格,很多情况下都可能出现问题。例如:有些程序可能会把空格当作目录的结束。推荐的解压目录是:D:/Mysql/这种形式,或者在其他目录下,如D:/LAMP/Mysql ,放在什么地方,并不重要。
打开系统环境变量,在Path变量下追加(注意是追加不是覆盖)MySQL bin目录:
蓝色部分应该是你的bin目录的完整路径。配置好之后,保存并关闭系统变量窗口即可。
正常安装版的MySQL会在MySQL的根目录中生成4个不同配置的ini配置文件:分别为
my-small.ini
my-medium.ini
my-large.ini
my-huge.ini
这几个配置文件大致是按照数据库的规模给出的默认配置,可以按照自己的实际情况copy并生成实际的my.ini配置文件。有的版本还会生成只有Innodb的配置文件,这里不再赘述。
本压缩版的MySQL解压缩之后,在根目录只有一个默认的配置文件:my-default.ini。且打开之后,配置选项极其简单:
除此之外,再无其他(汗)。
我们的配置由此开始:
(1). 配置basedir
Basedir是指mysql的根目录,所以应该是:basedir = D:\MYSQL
(2). 配置data
Data目录是存放数据文件和索引文件的目录,可以指定mysql目录之外的目录作为存储目录,但要注意权限问题。我的配置是:datadir = D:\MYSQL\data
(3). 配置端口
一般mysql服务都使用3306端口,如果端口被占了,可以更换其它端口
(4). 更多配置
设置客户端模式字符:default-character-set=utf8,关于这个问题,之后会有一篇博文专门讲述。
表默认存储引:default-storage-engine=INNODB。这里顺便提一下,mysql比较旧的发行版中,默认的存储引擎是MyIsam,较新的版本才是默认INNoDB的存储引擎(具体哪个版本,笔者也不记得了:D, 可以通过查看changelog得知)
更多的配置请查看MySQL的手册。
进入Mysql的bin目录中执行 mysqld –install mysql (请记得用管理员身份运行cmd)
启动mysql服务: net start mysql(或者在计算机右键管理->服务->mysql右键启动)
这时候在cmd下应该可以通过命令行连接MySQL了
MySQL默认安装后,会生成root用户和一个匿名的用户,建议修改root账号密码,并删除匿名用户,操作如下:
Use mysql; Select Host,User,Password from user;
(1)删除匿名用户:
delete from user where User=’’;
(2)更改root账户密码:
update user set Password=PASSWORD(‘123456’) where User=’root’;
(3)添加Mysql远程连接权限
grant all privileges on *.* to root@'%' identified by '123456';
(4)刷新权限
flush privileges;
User表是Mysql的内置表,用于记录用户权限、密码等信息。这个表的主键是Host+User,这可以通过show index命令看出来:
_priv结尾的字段是对应账户的Mysql操作权限,filed-type 是enum
至此,Mysql的配置就算基本完成了,后续将会继续贴上Mysql主从配置的内容。高可用Mysql之旅由此开始。