mysql主从复制(一主两从),完成读写分离配置

文章详细介绍了Mysql的主从复制机制,包括master的binlogdumpthread、slave的I/Othread和SQLthread的作用,以及如何进行主从数据同步。同时,展示了如何配置Mycat实现数据库的读写分离,通过修改schema.xml和server.xml文件来分配数据节点和读写主机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql的主从复制中主要有三个线程:master(binlog dump thread)、slave(I/O thread 、SQL thread),Master一条线程和Slave中的两条线程。

master(binlog dump thread)主要负责Master库中有数据更新的时候,会按照binlog格式,将更新的事件类型写入到主库的binlog文件中。

并且,Master会创建log dump线程通知Slave主库中存在数据更新,这就是为什么主库的binlog日志一定要开启的原因。

I/O thread线程在Slave中创建,该线程用于请求Master,Master会返回binlog的名称以及当前数据更新的位置、binlog文件位置的副本。

然后,将binlog保存在 「relay log(中继日志)」 中,中继日志也是记录数据更新的信息。

SQL线程也是在Slave中创建的,当Slave检测到中继日志有更新,就会将更新的内容同步到Slave数据库中,这样就保证了主从的数据的同步。
附上原文出处链接及本声明。

完成一主两从

主
[root@localhost ~]# systemctl stop mysql
 
[root@localhost ~]# cd /usr/local/mysql/data/
 
[root@localhost data]# tar czf /tmp/data.tar.gz *
 
[root@localhost data]# scp /tmp/data.tar.gz 192.168.88.139:/tmp
The authenticity of host '192.168.88.139 (192.168.88.139)' can't be established.
ECDSA key fingerprint is SHA256:epUDTs55lr03jrstXvd0iwK6X2dT/feLfUGXCEKq9Ek.
ECDSA key fingerprint is MD5:a9:55:d5:71:f3:f5:8f:ab:ca:88:ed:1b:5d:0e:22:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.88.139' (ECDSA) to the list of known hosts.
root@192.168.88.139's password: 
data.tar.gz                                                                                         100% 1425KB  84.2MB/s   00:00
从
[root@localhost tmp]# systemctl stop mysql
 
[root@localhost tmp]# rm -rf /usr/local/mysql/data/*
 
[root@localhost tmp]# tar xf /tmp/data.tar.gz -C /usr/local/mysql/data/
 
[root@localhost data]# systemctl start mysql

完成读写分离

进入mycat安装目录./mycat/conf,会有schema.xml和server.xml
    <user name="root">
        <property name="password"></property>
        <property name="schemas">mycat</property> 
    </user>

修改schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    <schema name="mycat" checkSQLschema="false" sqlMaxLimit="100">
        <table name="test1" dataNode="dn1" />
    </schema>
    <dataNode name="dn1" dataHost="master" database="test" />
    <dataHost name="master" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>启动mycat服务

 <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="192.168.126.151:3306" user="root" password="dj123456">    
            <readHost host="hostM2" url="192.168.126.152:3306" user="root" password="dj123456"/>
        </writeHost>
        
        <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
    </dataHost>
</mycat:schema>
        启动mycat服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值