目录
一、MySQL8.0的下载安装
1.MySQL8.0下载
2.配置初始化my.ini文件
3.初始化MySQL8
4.安装和启动MySQL服务
5.修改MySQL初始密码
6.设置允许IP地址登陆MySQL
7.允许远程IP连接MySQL
8.查看上述步骤创建的用户
二、MyCat的安装和部署
1.JDK的下载安装
(1)创建安装目录文件夹
(2)jdk安装
(3)jre安装
(4)配置环境变量
(5)测试安装成功与否
2.MyCat的下载安装
(1)下载MyCat
(2)配置MyCat环境变量
(3)修改配置文件wrapper.conf
3.MyCat的配置
(1)配置server.xml
(2)配置schema.xml
(3)配置rule.xml
3.MyCat的启动
地址为:MySQL8.0官网下载,点击红框的下载
点击下载之后,会提示你注册登录,不要管,选择No,Thanks直接下载。下载完之后解压,目录是这个样子:
解压后,在硬盘上找一个位置,一般大家喜欢放在C盘,如果数据文件比较大,建议放在空间比较富裕的位置即可,我这里放到了E盘。
默认解压包里面没有这个文件,需要自己手动添加一个,添加内容如下
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=E:\mysql8
# 设置mysql数据库的数据的存放目录
datadir=E:\mysql8\Data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
注意,配置文件中的路径要和实际存放的路径一致。
为了避免安装中错误,我们最好使用管理员身份运行CMD命令行窗口,并且通过cd命令进入MySQL的安装目录的bin目录
然后运行命令mysqld --initialize ,如果遇到“无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题” 这个错误,则需要安装Visual C++ Redistributable for Visual Studio 2015 。再接着如果遇到“无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-|1-1-0.dll 尝试重新安装此程序以解决此问题” 这个错误, 则需要下载并安装Microsoft .NET Framework 4.6.1 ;如果还是出现第二个错误,则需要下载并安装 基于 x64 的系统的 Windows 7 更新程序 (KB2999226) 。重新启动电脑后,使用cmd命令窗口再进入MySQL的bin目录 ,并运行mysqld --initialize 。运行完命令后,会在MySQL的目录下面产生一个“data”文件夹,如下图所示:
进入“data”文件夹,找到一个以“*.err”为后缀的文件,并用记事本格式打开,如下图
上图的第二张图片,找到“localhost”,后面一串字符就是MySQL的初始密码“ds5i6l_?2lmS”。 这个密码暂时要记住后面登
陆的时候还需要这个密码。
还在命令行窗口执行命令:mysqld --install
不出意外的话会提示安装成功,如红框中所示。
安装成功后,继续执行命令:net start mysql
不出意外的话会提示服务成功启动
还记得我们之前初始化的时候默认的密码吗,对,就在以“*.err”为后缀的文件,并用记事本格式打开, 我这里的初始化密码是“ds5i6l_?2lmS”。接着在命令行窗口键入命令:mysql -u root -p ,命令行会提醒你键入密码,这时,把我们的初始化密码“ds5i6l_?2lmS”粘贴进去,回车,不出意外就会登陆成功,如下图所示。
现在,我们修改密码,还在刚才的命令行窗口,我们键入“ALTER USER 'root'@'localhost' IDENTIFIED BY 'ghy122';”,这里“ghy122”是我的新密码,大家根据自己情况换成自己的密码即可。
不出意外,系统提示我修改成功,大家可以退出窗口,使用新密码登陆一下试试看。
MySQL作为数据库,一般放在服务器上,而我们开发端需要使用IP地址来连接,如果仅仅上面的步骤,还不能让我们进行IP连接,需要把MySQL所在的IP地址加入到Host中去。假设我这台安装MySQL的机器的IP是“172.16.20.128”,那么我需要在命令行窗口键入这个命令:create user 'root'@'172.16.20.128' identified by 'ghy122'; 记住,后面的分号不能省略。
接着,我们赋予这个新建的用户管理员权限:grant all privileges on *.* to 'root'@'172.16.20.128';记住,后面的分号不能省略。
最后,我们刷新一下权限:flush privileges;
刚才第6条中说到,MySQL是部署在服务器上,假设我的开发端是另外一台机器,IP地址为“172.16.20.120”,和MySQL所在的服务器在同一个局域网,要允许开发端连接服务器端的MySQL,也需要把开发端的IP创建为一个用户放在MySQL的用户表中。其实跟第六步大同小异,首先键入命令:create user 'root'@'172.16.20.120' identified by 'ghy122'; 注意这里的IP地址就是我开发端机器的IP地址,为了方便记忆,密码我设置为一样的。
第二步,为刚创建的用户赋予管理员权限,grant all privileges on *.* to 'root'@'172.16.20.120';
第三步,刷新权限:flush privileges;
首先,通过命令show databases; 在命令行窗口显示MySQL的所有数据库
第二步,通过命令use mysql; 切换到mysql数据库
第三步,通过命令show tables; 显示mysql数据库的所有表
第四步,查询user表中的数据,select Host, User from user;
通过上述步骤,我们可以在命令行窗口中查看到,之前几个步骤建立的root管理员权限的用户。
首先,我是在开发端也就是IP地址为“172.16.20.120”这台机器上,打开Navicat并建立一个连接
第二步,填写连接信息
连接名可以自己随意起一个名字,这里我写的128对应MySQL所在服务器IP地址的后三位,方便记忆。然后主机里面填写的就是MySQL所在服务器的IP地址,接着密码就是“ghy122”,这就是我为什么用统一的密码,不然如果MySQL数据库多了,每个密码不一样就不方便记忆,这里就偷个懒吧。最后测试连接,不出意外的话会提示连接成功。如果提示“ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)”这个错误,有可能是你的Windows防火墙没有对MySQL开放,需要你在控制面板-系统和安全-运行程序通过Windows防火墙,这里面把MySQL安装目录下的mysql.exe和mysqld.exe添加到允许的程序里。或者就是你的服务没有正常启动。
注意,这里Navicat是我在开发端(IP地址为“172.16.20.120”)安装的,服务器端并没有安装Navicat。以上就是MySQL的安装,希望对大家有用。
JDK是MyCat必须安装的环境,因此要在MyCat安装之前配置好JDK环境变量。值得注意的是,当前的MyCat貌似对最新的JDK13不太支持,我开始用的最新的JDK13,启动MyCat的时候一直出错,找不到原因,折腾了好久,换了JDK10就好了,所以我这里就用JDK10了,官网下载JDK10需要登录注册非常麻烦,我这里提供一个迅雷下载地址,读者可自行下载JDK10迅雷下载链接。我这里的下载链接是64位的,32位系统的读者可自行网上搜索。
首先第一步,要在空间富裕的磁盘下创建Java的安装目录,我这里在C盘根目录下创建了一个“java”文件夹,然后在“java”目录里面创建了“jdk”和“jre”两个文件夹。
双击下载好的jdk-8u221-windows-x64.exe,进入JDK安装界面,这里更改路径到第一步创建好的“jdk”文件夹。
在上面第二步点击“下一步”后,jdk安装完成,会提示进行jre的安装,这里更改路径到第一步创建好的“jre”文件夹。
右键我的电脑->属性->高级系统设置->环境变量,添加一个系统变量“JAVA_HOME”,值为“C:\Java\jdk”
右键我的电脑->属性->高级系统设置->环境变量,在系统变量新建classpath,输入变量值“%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;”
在系统变量path下,编辑,在尾部追加“%JAVA_HOME%\bin”,前面记得带分号,点确定
在java文件夹下新建test.java文件用于测试
public class test
{
public static void main(String[] agrs)
{
System.out.println("hello world");
}
}
然后以管理员身份打开cmd命令行窗口,并且cd进入java目录,并键入命令:javac test.java
如果没有报错,则表示编译成功,并在java目录下产生一个“test.class”文件,接着键入命令:java test
不出意外的话,程序会成功运行。这就表示Java运行环境成功安装,下面可以进行MyCat的安装了。
官网下载地址MyCat1.6.7,打开之后选择Windows版本“Mycat-server-1.6.7.3-release-20190927161129-win.tar”。
下载完成后,解压“Mycat-server-1.6.7.3-release-20190927161129-win.tar”到磁盘空间富裕的硬盘位置。
右键我的电脑->属性->高级系统设置->环境变量,添加一个系统变量“MYCAT_HOME”,值为“D:\mycat”
在系统变量path下,编辑,在尾部追加“%MYCAT_HOME%\bin”,前面记得带分号,点确定
在MyCat的安装目录下面找到“conf”文件夹,找到里面的“wrapper.conf”文件,并打开。
这里仅仅需要修改wrapper.java.command=C:\java\jdk\bin\java.exe,也就是让MyCat识别我们的Java目录
在MyCat的安装目录下面找到“conf”文件夹,找到里面的“server.xml”文件,并打开。创建一个MyCat用户,并指定该用户可访问的虚拟数据库。注意,要把默认的最后一个user注释掉。我这里创建了一个用户“thisCat”,相当于MySQL数据库的“root”;接着我创建了一个名为“CatDb”的“schemas”,相当于MySQL数据库的一个新建数据库。这里配置的用户和数据库,其实都是虚拟的,MyCat会通过“schema.xml”配置文件,帮你映射到实际的MySQL数据库上的。
在MyCat的安装目录下面找到“conf”文件夹,找到里面的“schema.xml”文件,并打开。
在配置“schema.xml”之前,我要着重说一下我的MySQL部署情况。首先我们使用MyCat是为了分布式数据库,假设我有一个数据库表“devices”,这个数据库表的数据量太大了,一天的数据量就有30G左右,一个服务器容量有限,为了不让服务器崩掉,我们使用MyCat和MySQL进行分布式设计,因此,根据这个需求,我使用三台服务器进行分布式配置。我在三台机器上,都安装了MySQL,他们的IP地址分别是“192.168.22.120”、“192.168.16.137”、“192.168.16.138”,在服务器“192.168.22.120”里的Navicat里面分别命名为“120”、“137”、“138”三个连接。其中,“192.168.22.120”这个服务器是我安装MyCat的服务器,其他两个不需要安装MyCat和Navicat。
在上面图片中可以看到,“192.168.22.120”、“192.168.16.137”、“192.168.16.138”这三个服务器上的MySQL中,分别有“smartcover”、“sd”、“smart”这三个数据库(schema),这三个数据库(schema)你可以命名成一样的名字也可以命名为不一样的名字。但是“smartcover”、“sd”、“smart”这三个数据库(schema)里面都含必须含有名字一样的“devices”这个数据库表,这个数据库表就是需要我们用分布式技术把数据分布式存放的数据库表,其他数据库表数据量小,就不需要分布式存放了。
上面详细说明了,我准备用几台服务器来进行分布式存储,当然你可以继续增加服务器,原理还是一样的,下面介绍下怎么配置“schema.xml”。
上图是我根据自己的需求配置的“schema.xml”,用了三台MySQL服务器,配置了读写分离,一台用了只读,两外两台用了写入。
第一:“CatDb”就是在“server.xml”配置的虚拟的MyCat数据库(schema),这里要和“server.xml”对应,名字要一致。
第二:“table”标签里面的“devices”就是我们要分片的数据库表,“dataNode”属性表示我们要把“devices”表分片到几个实际的MySQL数据库中,一个“dataNode”就代表一个MySQL连接点。
第三:“table”标签里面的“rule”属性,是我们对数据表分片的规则,比如按时间、或者按ID值之类的,这里不详细讲了。
第四:“dataNode”标签,“name”属性是连接点的名称,和之前“table”标签里的“dataNode”属性对应;“dataHost”属性是对应下面“dataHost”标签的名称,用来连接实际的MySQL,这里先起名字,后面的“dataHost”标签再定义怎么连接;最后的“dataBase”属性是实际MySQL数据库中“devices”数据表所在的数据库,这个名称跟实际MySQL数据库名称要一致。
第五:“dataHost”标签中“name”属性的值要跟“dataNode”标签中“dataHost”属性的值一致,其实就是名称要对应起来。然后在“writeHost”里面的“url”、“user”、“password”这都是实际MySQL的连接信息,每一个“dataHost”标签如此类推填写完成。
第六:上面图片中红色数字5所指示的位置,是配置读写分离,其中把读的配置放在了服务器“192.168.22.120”的MySQL中。读者可以根据自己的实际情况自行配置。
在MyCat的安装目录下面找到“conf”文件夹,找到里面的“rule.xml”文件,并打开。
这个文件是配置分片的规则,例如我想按月份来进行分片,那么如上图红框中所示,在数据库表“devices”中有“inTime”这个字段,那么在“algorithm”表情里面选择系统的“partBymonth”算法;然后在“schema.xml”文件中“table”标签里面的“rule”属性的值改为“sharding-by-month”即可。其他的分片规则读者可以研究一下,这里就不细讲了,因为每个人的项目需求不一样。
在上面所有配置完成后,我们可以用管理员身份打开cmd命令行窗口,进行mycat的启动。
使用cd命令进入mycat的安装目录的bin文件夹
然后输入命令:startup_nowrap.bat,不出意外的话启动成功
然后,我们使用“192.168.22.120”服务器上的Navicat来连接Mycat。
连接名随便起,主机就是MyCat所在的服务器的IP,端口默认是8066,用户名“thisCat”就是我们在“server.xml”文件中定义的一个用户。
以上是我学习MySQL和MyCat的一些流水账,记录一下,希望对读者有用。