Linux服务器安装MySQL以及主从架构、读写分离

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. 主从复制架构

Linux服务器安装MySQL以及主从架构、读写分离

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;

Linux服务器安装MySQL以及主从架构、读写分离

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)

Linux服务器安装MySQL以及主从架构、读写分离

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报错);

Linux服务器安装MySQL以及主从架构、读写分离

上一篇:3DMAX打造漂亮的完美游戏女性角色教程


下一篇:一组创意的网站标志