1.1、centos 7虚拟机安装(准备三台虚拟机)
分别为master、slave01、slave02
1.2、jdk安装配置(mycat需要最低安装jdk1.7版本)
在master上安装,master作为主节点安装mycat
注意:rpm与软件相关命令 相当于window下的软件助手 管理软件
步骤:
输入 rpm -qa | grep java
输入rpm -e --nodeps 要卸载的软件
#set java environment
JAVA_HOME=/usr/local/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
5.重新加载/etc/profile配置文件 source /etc/profile
1、先检查系统是否装有mysql
rpm -qa | grep mysql
这里返回空值,说明没有安装
这里执行安装命令是无效的,因为centos-7默认是Mariadb,所以执行以下命令只是更新Mariadb数据库
yum install mysql
删除可用
yum remove mysql
2、下载mysql的repo源
# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
安装mysql-community-release-el7-5.noarch.rpm包
# sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。
3、安装mysql
# sudo yum install mysql-server
根据步骤安装就可以了,不过安装完成后,没有密码,需要重置密码。
安装后再次查看mysql
如果报错,内容含有
Error: Package: mysql-community-libs-5.6.35-2.el7.x86_64 (mysql56-community)
Requires: libc.so.6(GLIBC_2.17)(64bit)
Error: Package: mysql-community-server-5.6.35-2.el7.x86_64 (mysql56-community)
Requires: libc.so.6(GLIBC_2.17)(64bit)
Error: Package: mysql-community-server-5.6.35-2.el7.x86_64 (mysql56-community)
Requires: systemd
Error: Package: mysql-community-server-5.6.35-2.el7.x86_64 (mysql56-community)
Requires: libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
Error: Package: mysql-community-client-5.6.35-2.el7.x86_64 (mysql56-community)
Requires: libc.so.6(GLIBC_2.17)(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
解决:
#yum install glibc.i686
# yum list libstdc++*
4、重置密码
重置密码前,首先要登录
# mysql -u root
登录时有可能报这样的错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:
# sudo chown -R openscanner:openscanner /var/lib/mysql
如果报chown: 无效的用户: "openscanner:openscanner"错误,更换命令,并用 ll 查看目录权限列表
chown root /var/lib/mysql/
ll
附:
① 更改文件拥有者 (chown )
[root@linux ~]# chown 账号名称 文件或目录
② 改变文件的用户组用命令 chgrp
[root@linux ~]# chgrp 组名 文件或目录
③ 对于目录权限修改之后,默认只是修改当前级别的权限。如果子目录也要递归需要加R参数
Chown -R : 进行递归,连同子目录下的所有文件、目录
然后,重启服务:
service mysqld restart
接下来登录重置密码:
接下来登录重置密码:
mysql -u root -p
mysql > use mysql;
mysql > update user set password=password('123456') where user='root';
mysql > exit;
重启mysql服务后才生效 # service mysqld restart
必要时加入以下命令行,为root添加远程连接的能力。链接密码为 “root”(不包括双引号)
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
6、查询数据库编码格式,确保是 UTF-8
show variables like "%char%";
需要修改编码格式为UTF-8,导入数据库sql的时候,请确保sql文件为utf8编码
进入mysql命令行后 输入
set names utf8;
(测试数据库数据)
再进入数据库 use test;
在导入sql脚本 source test.sql;
7、开放3306端口号
firewalld 防火墙(centos-7)运行命令,并重启:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
iptables 防火墙(centos6.5及其以前)运行命令
vim /etc/sysconfig/iptables
在文件内添加下面命令行,然后重启
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
# service iptables restart
外部链接访问效果(一般建立sql数据库和数据表,建议通过远程链接控制,直观易操作)
如果丢失mysql密码,可尝试如下方法修改充值密码
方法一:运行grep ‘temporary password’ /var/log/mysqld.log命令
运行后会得到一个密码,这里我用这个没出现密码,故采用第二种。
方法二:安全初始化MySQL:
执行 mysql_secure_installation命令配置。
方法三:该方法先修改MySQL配置文件使其可以无密码登陆,然后进入MySQL修改密码,修改完后复原配置文件。
步骤:
1、vim /etc/my.cnf
2、给配置文件添加skip-grant-tables ,保存退出。
3、重启MySQL:systemctl restart mysql
4、免密登陆MySQL:mysql -u root
5、执行USE mysql;
6、执行UPDATE user SET password = ‘此处填写新密码’ WHERE user =‘root’ 重置MySQL密码
普通用户更改密码同上。
1.下载解压Mycat-server-1.6-RELEASE-20161010173036-linux.tar.gz 到/usr/local/mycat
2.
vim /etc/profile |
添加绿色部分:
#set java environment
JAVA_HOME=/usr/local/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$MYCAT_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
export MYCAT_HOME=/usr/local/mycat
使得变量生效
source /etc/profile |
2.1.1、server.xml
几乎保存了所有 mycat 需要的系统配置信息。其在代码内直接的映射类为 SystemConfig 类。
我的server.xml用户配置文件
123456
TESTDB
这是配置的mycat登录的用户名和密码,其它默认配置无改动
schmas为配置的逻辑表,在schema.xml中会详细配置
2.1.2、schema.xml
Schema.xml 作为 MyCat 中重要的配置文件之一,管理着 MyCat 的逻辑库、表、分片规则、DataNode 以
及 DataSource。弄懂这些配置,是正确使用 MyCat 的前提。这里就一层层对该文件进行解析。
schema 标签用于定义 MyCat 实例中的逻辑库,MyCat 可以有多个逻辑库,每个逻辑库都有自己的相关配
置。可以使用 schema 标签来划分这些不同的逻辑库。
如果不配置 schema 标签,所有的表配置,会属于同一个默认的逻辑库。
如上所示的配置就配置的默认逻辑库,逻辑库的概念和 MYSQL 数据库中 Database 的概念相同,我
们在查询这两个不同的逻辑库中表的时候需要切换到该逻辑库下才可以查询到所需要的表。
如果你发现显示该错误信息,需要到 server.xml 添加该用户可以访问到的 schema 就可以了。
checkSQLschema
False 过滤schema定义。
select * from testdb.company => select * from company;
True 不过滤schema定义。有可能报错。
sqlMaxLimit
Limit 自动加入limit,会影响最后返回条数。例如:select * from company。
制定Mycat中的逻辑表。最后要做数据分片的表。
mycat中的表,可以和实体有具体映射关系,也可以没有具体映射关系(如果没有映射关系会报错)。
dataNode
把相应的表存到对应的DB中。
rule
分片规则。对应rule.xml中的规则。
ruleRequired
指定该属性的表是否需要分片规则。
True 必须制定。如果没有制定,就会报错。
primaryKey
如果使用非主键进行分片,那么Mycat会缓存主键和具体dataNode的信息,如果下次再使用非主键进行查询的时候,就不用广播所有dn。
autoIncrement
Mycat根据last_insert_id()返回结果。这个需要mysql主键设置配合。
type
逻辑表的类型。普通表和全局表。
needAddLimit
是否自动在每一条SQL语句后面加上limit限制。
select user()
select user()
select user()
主要定义和Mysql集群有关的信息,数据实例、读写分离配置和心跳检测语句。
balance
负载均衡配置
0 代表不开启读写分离,所有的读操作都发送到writeHost上。
1 writeHost和readHost都要参与select语句的负载均衡。
双主双从模式 M1->S1, M2->S2, M1和M2互为主备。M2/S1/S2都要参与select语句的负载均衡。
2 所有读操作都随机分配给writeHost/readHost
3 所有的读操作随机分发到writeHost下面的readHost上执行。
writeType
0 所有的写操作都分发到第一个writeHost。如果第二个挂了,分发到第二个。
1 所有的写操作都要随机分发到所有配置的writeHost上。1.5以后不推荐。
dbType
支持多种db类型。
switchType
-1 代表不自动切换
1 默认值,自动切换。
定义分片规则策略文件。
tableRule标签
定义table分片策略
rule标签
策略定义标签
columns
对应的分片字段
algorithm标签
tableRule分片策略对应的function名称
function标签
定义分片函数
基本配置好后,就可以启动mycat了
进入mycat安装的bin目录下
./mycat console 控制台启动模式启动
如果报错以下错误
wrapper | Launching a JVM...
wrapper | JVM exited while loading the application.
jvm 1 | Invalid maximum heap size: -Xmx4G
jvm 1 | The specified size exceeds the maximum representable size.
jvm 1 | Error: Could not create the Java Virtual Machine.
jvm 1 | Error: A fatal exception has occurred. Program will exit.
wrapper | Launching a JVM...
wrapper | JVM exited while loading the application.
错误原因:mycat默认需要的内存要求大于机器的实际内存,需要修改mycat的配置文件。
解决方法:找到.../mycat/conf/wrapper.conf,修改
wrapper.java.additional.10=-Xmx4G (大约在36行)
wrapper.java.additional.11=-Xms1G
改成:
wrapper.java.additional.10=-Xmx1G
wrapper.java.additional.11=-Xms256M
修改完成后,重新执行./mycat console
如果报【错误】mycat报错:close connection,reason:stream close ...
解决方法:是因为schema.xml和server.xml中配置的用户名密码不一致,修改为一致就好啦
如果报错ERROR 1130 (HY000): Host 'localhost' is not allowed to connect to this MySQL server
解决办法:参考https://www.cnblogs.com/chancy/p/9204042.html
不报错就是启动成功了。
参考人员可自行定义建表语句和分片规则