1. 安装(yum)
2. 修改密码
-- MySQL5.7中,默认密码不能太简单,如不符合要求,需要先设置密码等级为LOW
set global validate_password_policy=LOW;
alter user ‘root‘@‘localhost‘ identified by ‘yourpassword‘
3. 开启远程连接
-- 设置密码等级
set global validate_password_policy=LOW;
-- 开启root用户的所有客户端的远程连接
grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘yourpassword‘ with grant option;
-- user或privileges表中的权限等发生了变化,为避免重启,则需 flush privileges
flush privileges;
4. 主从复制架构
4.1 主从准备
即多台服务器安装相同的环境:mysql 5.7
4.2 配置节点
4.2.1 主节点
打开配置文件 /etc/my.cnf
#指定服务的id(唯一)
server-id = 1
#指定日志文件的前缀
log-bin=mysql-bin
#指定规则,当日志文件更新时,从节点也更新
log-slave-updates
#设置从节点跳过所有的错误日志
slave-skip-errors=all
4.2.2 从节点
此处的配置和主节点一样;
目的是为了,让从节点也可以拥有从节点,套娃模式;
专业名词:菊花链
4.4 校验配置
重启后进行校验
4.4.1 server-id:
show variables like ‘server_id‘;
4.4.2 mysql-log:
show master status;
4.5 从主
在从节点中设置自己的主节点
change master to
master_host=‘xxx.xxx.xxx.xxx‘,
master_user=‘root‘,
master_password=‘xxxxxxxxx‘,
master_log_file=‘mysql-bin.000001‘,
master_log_pos=154;
4.6 开启主从复制
子节点中
start slave;
查看子节点的状态
show slave status;
5. 读写分离架构(MyCat)
5.1 下载安装
官网下载mycat.tar.gz 解压缩
5.2 配置
5.2.1 schema
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 配置mycat的逻辑库(映射关系)lanmoCat=======>lanmoNode -->
<schema name="lanmoCat" checkSQLschema="false" sqlMaxLimit="100" dataNode="lanmoNode"/>
<!-- 配置上面所映射的数据节点lanmoNode=======>lanmoHost————>blog -->
<dataNode name="lanmoNode" dataHost="lanmoHost" database="blog"/>
<!-- 配置真实的数据主机 -->
<dataHost name="lanmoHost" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
<!-- 心跳检测,检查是否宕机 -->
<heartbeat>select user()</heartbeat>
<!-- 配置写节点 -->
<writeHost host="hostM01" url="47.101.136.4:3306" user="root" password="xxxxx">
<!-- 配置读节点 -->
<readHost host="hostS01" url="47.112.136.40:3306" user="root" password="xxxxx"/>
</writeHost>
</dataHost>
</mycat:schema>
重要属性
- balance(dataHost):负载均衡
- 0——所有的读操作都交给writeHost
- 1——所有的读操作都交给readHost
- 2——所有的读操作随机分发
- switchType(dataHost):主从切换
- -1——不自动切换
- 1——根据配置的主从关系自动切换
- 2——通过心跳检测(Slave_IO_Running和Slave_SQL_Running参数的值)自动切换
- 3——集群模式心跳检测切换
5.2.2 server
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License. - You
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<!--配置系统-->
<system>
<!--指定sql解析方式,一般都用druidparser-->
<property name="defaultSqlParser">druidparser</property>
<!--指定字符集:5.x版本用utf8,最新版8之后用utf8mdb-->
<property name="charset">utf8</property>
</system>
<!--配置用户信息-->
<user name="root"> <!--用户名-->
<!--用户密码-->
<property name="password">xxx</property>
<!--前面配置的schema名称-->
<property name="schemas">lanmoCat</property>
</user>
</mycat:server>
5.3 启动mycat
bin目录下 mycat
- console:前台启动,方便查看日志
- start:后台启动,日志要去log目录下查看,mycat.log
- dump:快照方式启动
注意:mycat的默认端口为8066
5.4 使用
在项目中的datasource配置中:
spring:
datasource:
url: jdbc:mysql://47.101.136.4:8066/lanmoCat?characterEncoding=UTF-8
如果url报错,大概率是mysql-java版本的问题
测试使用linux-mysql5.7,mycat1.6,mysql-java版本5.1.38(5.1.9报错);