乐趣区

关于mysql:数据库实现高可用双机热备

数据库实现高可用

高可用:保障服务器尽可能的不宕机,保障用户能失常应用。

数据库的双机热备

阐明:个别在公司中配置双机热备的模式,配置为互为主从。

配置阐明:
1. 主库:192.168.126.130

2. 从库:192.168.126.129

/* 实现主从的挂载 */
CHANGE MASTER TO MASTER_HOST="192.168.126.130",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=482

/* 启动主从服务 */
START SLAVE    

/* 查看主从状态 */
SHOW SLAVE STATUS;

实现数据库高可用配置

阐明:批改实现数据库之后,将配置文件上传即可

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    
    <!--name 属性是自定义的  dataNode 示意数据库的节点信息  jtdb 示意逻辑库 -->
    <schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/>

    <!-- 定义节点名称 / 节点主机 / 数据名称 -->
    <dataNode name="jtdb" dataHost="localhost1" database="jtdb" />
        <!-- 参数介绍 UTF-8 中文报错 -->
        <!--balance 0 示意所有的读操作都会发往 writeHost 主机 -->  
        <!-- 1 示意所有的读操作发往 readHost 和闲置的主节点中 -->
        <!--writeType=0 所有的写操作都发往第一个 writeHost 主机 -->    
        <!--writeType=1 所有的写操作随机发往 writeHost 中 -->
        <!--dbType 示意数据库类型 mysql/oracle-->
        <!--dbDriver="native"  固定参数 不变 -->
        <!--switchType=-1 示意不主动切换, 主机宕机后不会主动切换从节点 -->
        <!--switchType=1  示意会主动切换 (默认值) 如果第一个主节点宕机后,Mycat 会进行 3 次心跳检测, 如果 3 次都没有响应, 则会主动切换到第二个主节点 -->
        <!-- 并且会更新 /conf/dnindex.properties 文件的主节点信息 localhost1=0 示意第一个节点. 该文件不要随便批改否则会呈现大问题 -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select 1</heartbeat>

        <!-- 配置第一台主机次要进行写库操作, 在默认的条件下 Mycat 次要操作第一台主机在第一台主机中曾经实现了读写拆散. 因为默认写操作会发往 137 的数据库. 读的操作默认发往 141. 如果从节点比较忙, 则主节点分担局部压力.
        -->
        <writeHost host="hostM1" url="192.168.126.129:3306" user="root" password="root">
            <!-- 读数据库 1 -->
            <readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
            <!-- 读数据库 2 -->
            <readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
            
        </writeHost>

            <!-- 定义第二台主机 因为数据库外部曾经实现了双机热备.-->
            <!--Mycat 实现高可用. 当第一个主机 137 宕机后.mycat 会主动收回心跳检测. 检测 3 次.-->
            <!-- 如果主机 137 没有给 Mycat 响应则判断主机死亡. 则回启东第二台主机持续为用户提供服务.-->
            <!-- 如果 137 主机复原之后则处于期待状态. 如果 141 宕机则 137 再次继续为用户提供服务.-->
            <!-- 前提: 实现双机热备.-->
        
        <writeHost host="hostM2" url="192.168.126.130:3306" user="root" password="root">
            
            <readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
            
            <readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
        </writeHost>
        
    </dataHost>
</mycat:schema>

实现数据库高可用测试

测试步骤:
1. 敞开主数据库, 之后检索数据, 检查用户的拜访是否受限.
2. 批改数据库记录, 检查用户的操作是否失常. (操作的是从库).
3. 重启主数据库 之后查看从库的数据是否同步.

退出移动版