8、MySQL主从数据库配置

数据库高可用实现

1.1 主从复制搭建

1.1.1 编辑主数据库

搭建步骤:

1.为数据库创建服务ID号标识数据库

2.需要开启二进制日志文件

3.查询数据的二进制日志状态(文件名称+文件的位置)

4.从库引入主库的文件进行配置

4.1为从库指定主库的位置

    1.IP

    2.端口3306

    3.用户名和密码

4.二进制文件名称和位置

     4.2 启动主从模式

1.2 具体实现过程

1.2.1 开启二进制文件

1.编辑mysql的配置文件

 

2.配置id和文件名称

 

3.重启Mysql服务

 

4.检测二进制日志文件是否生效

cd /var/lib/mysql

 

1.2.2 查询主库的状态

说明:通过查询主库的状态获取二进制日志文件的名称和数据位置

 

1.3 配置从数据库

1.3.1 配置从库的标号

说明:编辑从库Id.

 

2.编辑日志文件

 

3.重启数据库

service mysql restart

 

4.检测日志文件

cd /var/lib/mysql/

  

1.4 实现主从

1.4.1 实现主从挂载

1.实现挂载

CHANGE MASTER TO MASTER_HOST="192.168.126.137",
MASTER_PORT=3306,MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=120
 

 

2.开启主从服务

#开启主从服务

START SLAVE

3.检测主从的状态

说明:如果出现2yes表示主从配置成功

#检测主从状态

SHOW SLAVE STATUS

 

4.主从测试

说明:修改主库的数据,查询从库的数据是否修改

 

1.4.2 挂载错误

CHANGE MASTER TO MASTER_HOST="192.168.126.137",
MASTER_PORT=3306,MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=120

#开启主从服务
START SLAVE

#检测主从状态
SHOW SLAVE STATUS

#如果出现yes/no  no/yes
STOP SLAVE

#将主库重启 从库重启 依次执行上述语句

1.5 挂载错误集

1.5.1 关于二进制日志文件多个问题

说明:当重启主数据库时,Mysql会自动的生成一个新的二进制日志文件,并且名称是累加的.这时如果实现主从挂载时,应该以show master status 为准

1.5.2 切记不要复制mysql虚拟机

/var/lib/mysql/auto.cnf

 

1.5.3 关闭防火墙

如果不关闭防火墙,会出现一直在等待的状态.

1.5.4 查看IO异常信息

1.5.5 回滚mysql

说明:linux回滚,回滚之后重新配置

 

实现数据库的高可用

3.1 高可用的原则

3.1.1 分析

 

说明:上图中已经实现了数据库的主从复制,但是如果主数据宕机后,这时整个服务将会停止!!!

升级:通过某些技术手段可以实现高可用.但是会遇到数据如何同步的问题???

说明:当主库宕机后,由从库代替主库完成更新操作,如果主数据库成功启动,这时会出现从数据库和主数据库中的内容不匹配的现象??如何处理???

3.2 双机热备模式

3.2.1 双机热备模式说明

说明:为了满足数据库高可用后出现数据不同步的问题,采用双机热备的形式解决该问题.

图例:

 

说明:双机热别的形式,是实现数据库高可用的前提条件.A宕机后,通过mycat实现高可用自动切换到B.这时B持续为用户提供服务,并且将”更新”的信息写入二进制日志文件中,A数据库启动后会自动的同步数据,最终实现高可用!

3.2.2 双机热备的配置

之前:A----B从机

现在:B主机---A从机

  1. 查询主库的状态

 

  1. 从库挂载主库
#挂载从机
CHANGE MASTER TO MASTER_HOST="192.168.126.141",
MASTER_PORT=3306,MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=120

#启动主从服务
START SLAVE

#检测主从状态
SHOW SLAVE STATUS

 

  1. 测试结果

 B数据库添加信息,查看A数据库中是否实现数据同步.如果实现数据同步,则搭建完成

 

3.3 Mycat介绍

3.3.1 Mycat介绍

 

3.4 MyCat部署

3.4.1 配置JDK

 

3.4.2 上传文件

1.上传文件


2.解压Mycat文件

3.修改配置文件

 

3.4.3 Server.xml的配置

 

3.4.4 配置schema.xml

<!--定义节点名称/节点主机/数据名称-->
    <dataNode name="jtdb" dataHost="localhost1" database="jtdb" />
        <!--参数介绍-->
        <!--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.137:3306" user="root" password="root">
            <!--读数据库-->
            <readHost host="hostS1" url="192.168.126.141:3306" user="root" password="root" />
        </writeHost>

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

 

3.4.6 Mycat测试

说明:启动Mycat

命令

./mycat stop

./mycat start

2.检测Mycat启动是否成功

logs日志下检测Mycat启动是否成功

 

  1. Mycat对外报错的端口是8066

3.4.7 Mycat测试

说明:将主数据库关闭后,测试应用是否正常.再次开启主数据库后检测数据是否实现数据同步.

原文地址:https://www.cnblogs.com/xiangyuqi/p/8651788.html