MySQL主从配置 热备份 及MyCat读写分离设置
约 1131 字大约 4 分钟
MySQL主从挂载
开启二进制日志文件
修改主库配置
vim /etc/my.cnf ## 修改配置文件内容 server-id=1 log-bin=mysql-bin重启mysql
service mysqld restart检查二进制日志文件(主)
cd /var/lib/mysql/ ls修改从库配置
server-id=2 log-bin=mysql-bin重启mysql
检查二进制文件(从)
配置主从挂载
查看主库状态
show master status;修改从库配置
CHANGE MASTER TO MASTER_HOST="172.16.211.101", MASTER_PORT=3306, MASTER_USER="root", MASTER_PASSWORD="root", MASTER_LOG_FILE="mysql-bin.000001", MASTER_LOG_POS=120从库开启主从服务
-- 开启主从服务 START SLAVE检查主从库状态
-- 检查主从状态 SHOW SLAVE STATUS;主要看两个字段:
Slave_IO_Running、Slava_SQL_Running修改主库中的数据、查看从库数据变化情况
如果中间报错,先关闭从库,再检查日志信息修改错误
--如果配置出错 先关闭从服务 将多余数据处理 STOP SLAVE
MySQL双机热备份
双机热备:数据库A为主库,B为从库,主库只进行修改操作,从库只进行查询操作;当主库A宕机时,从库B临时作为主库,A重启后作为从库,同步B中的数据,保证主从数据一致
- 检查A的主库状态
SHOW MASTER STATUS;- 检查B的主库状态
SHOW MASTER STATUS;- 以A为从库,设置主库(B)
CHANGE MASTER TO MASTER_HOST="192.168.161.146",MASTER_PORT=3306,
MASTER_USER="root",MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000003",MASTER_LOG_POS=120- 开启从库设置
START SLAVE- 检查从库状态
SHOW SLAVE STATUSMyCat读写分离
前提:实线mysql双机热备
上传myCat安装包并解压
tar -xvf Mycat-server-1.7.0-DEV-20170416134921-linux.tar.gz修改myCat配置文件,包括
/conf/server.xml、/conf/schema.xml配置文件server.xml内容
<user name="root"> <property name="password">root</property> <!-- 与schema中的配置对应 --> <property name="schemas">database_test</property> </user> <user name="user"> <property name="password">user</property> <property name="schemas">database_test</property> <property name="readOnly">true</property> </user>配置文件schema.xml内容
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!--name属性是自定义的 dataNode表示数据库的节点信息--> <schema name="database_test" checkSQLschema="false" sqlMaxLimit="100" dataNode="database_test"/> <!--定义节点名称/节点主机/数据名称--> <dataNode name="database_test" dataHost="localhost1" database="database_test" /> <!--参数介绍--> <!--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="172.16.211.101:3306" user="root" password="root"> <!--读数据库--> <readHost host="hostS1" url="172.16.211.102:3306" user="root" password="root" /> </writeHost> <!--定义第二台主机 由于数据库内部已经实现了双机热备.--> <!--Mycat实现高可用.当第一个主机137宕机后.mycat会自动发出心跳检测.检测3次.--> <!--如果主机137没有给Mycat响应则判断主机死亡.则回启东第二台主机继续为用户提供服务.--> <!--如果137主机恢复之后则处于等待状态.如果141宕机则137再次持续为用户提供服务.--> <!--前提:实现双机热备.--> <writeHost host="hostM2" url="172.16.211.103:3306" user="root" password="root"> <readHost host="hostS1" url="172.16.211.102:3306" user="root" password="root" /> </writeHost> </dataHost> </mycat:schema>启动MyCat
# mycat启动命令 ./mycat start # mycat主要命令 ./mycat { console | start | stop | restart | status | dump }测试数据
查看mycat日志