美文网首页
MySQL主从复制、读写分离实现

MySQL主从复制、读写分离实现

作者: 向南路人 | 来源:发表于2020-11-30 14:03 被阅读0次

一.主从复制

主从复制原理:

Mysql开启binlog日志后,会把对数据库的增、删、改等数据库变动情况记录在二进制文件中,主从复制的过程就是主库(Master)开启binlog日志,从库(Slave)拉取日志,并执行这些操作,从而达到主从复制的目的。

主从复制参考文章:mysql 主从复制 基于binlog 简单实践

二.读写分离

读写分离原理:
读写分离原理图

读写分离原理如图所示,应用服务器连接的数据库并不是真实的数据库,它可能是数据库中间件创建的虚拟数据库,它的主要作用是代理(类似于Nginx),根据应用服务器不同的请求以及设定的规则,将数据库请求分发到相应数据库服务器。

基于Mycat实现读写分离:

1.搭建java环境。因为Mycat是用java写的,必须运行在java环境。
2.下载地址:

https://github.com/MyCATApache/Mycat-download

选择版本下载后解压即可。

3.目录结构:

--bin 启动目录

--conf 配置文件存放配置文件:

  --server.xml:是Mycat服务器参数调整和用户授权的配置文件。

  --schema.xml:是逻辑库定义和表以及分片定义的配置文件。

  --rule.xml:  是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改需要重启MyCAT。

  --log4j.xml: 日志存放在logs/log中,每天一个文件,日志的配置是在conf/log4j.xml中,根据自己的需要可以调整输出级别为debug                           debug级别下,会输出更多的信息,方便排查问题。

  --autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties, sequence_db_conf.properties 分片相关的id分片规则配置文件

  --lib     MyCAT自身的jar包或依赖的jar包的存放目录。

--logs        MyCAT日志的存放目录。日志存放在logs/log中,每天一个文件

4.配置文件:
server.xml(mycat服务器参数配置,用户配置等)

<user name="mycat"><!--用户名-->
     <property name="password">123456</property><!--密码-->
     <property name="schemas">my_db</property><!--数据库名,对应schema.xml中的schema的name属性-->
     <property name="readOnly">false</property><!--是否只读-->
</user>

schema.xml(配置真实数据库服务器信息等)

<!--逻辑库-->
<schema name="my_db" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
<!--节点-->
<dataNode name="dn1" dataHost="localhost1" database="tuoxingwang" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!--写库,主库-->
                <writeHost host="hostM1" url="192.168.1.100:3306" user="mycat"
                                   password="123456789">
                <!--读库,从库-->
                <readHost host="hostS2" url="192.168.1.101:3306" user="mycat" password="123456789" />
                </writeHost>
</dataHost>
Balance参数配置:
1. balance=“0”, 所有读操作都发送到当前可用的writeHost上。
2. balance=“1”,所有读操作都随机的发送到readHost。
3. balance=“2”,所有读操作都随机的在writeHost、readhost上分发。
WriteType参数设置:
1. writeType=“0”, 所有写操作都发送到可用的writeHost上。
2. writeType=“1”,所有写操作都随机的发送到readHost。
3. writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。

5.启动:
启动脚本在bin目录下:

//启动
./mycat start
//停止
./mycat stop
//重启
./mycat restart

6.连接mycat:
客户端:

mysql -umycat -p123456 -p8066 --default_auth=mysql_native_pasowrd

管理端:

mysql -umycat -p123456 -p9066 --default_auth=mysql_native_pasowrd

相关文章

网友评论

      本文标题:MySQL主从复制、读写分离实现

      本文链接:https://www.haomeiwen.com/subject/iuwniktx.html