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服务