MySQL双主热备
解决的问题
master挂掉不会影响业务
实现心跳感应
配置从机
vim /etc/my.cnf
log-bin=mysql-bin
binlog_format=mixed
server-id = 130
relay_log = mysql-relay-bin
log_slave_updates = 1
#进入数据库授权
grant replication slave on *.* to [email protected] identified by 'password';
数据库中间件Mycat
解决读写分离
安装mycat需要java环境
jdk下载完成并解压后,vim /etc/profile
添加以下内容
JAVA_HOME=/root/java/jdk1.8.0_152 #文件路径
JRE_HOME=/root/java/jdk1.8.0_152/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
[root@localhost java]# source /etc/profile
[root@localhost java]# java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
#下载Mycat中间件
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
tar -zxvf Mycat
mv mycat /usr/local
配置server.xml文件里的user
user里的配置是项目里配置数据库连接的配置项
接着配置schema.xml文件
四个库每个都要给mycat服务器配置相应的权限
主库配置mycat服务器CURD权限grant select,update,insert,delete on *.* to [email protected].134 identified by 'password';
从库配置mycat服务器读权限grant select on *.* to [email protected].134 identified by 'password';
mycat端口为8066
netstat -tunpl | grep 8066
tcp6 0 0 :::8066 :::* LISTEN 20668/java
在项目所在服务器中连接mycat服务器
mysql -uroot -ppassword -h192.168.153.134 -P8066
此时在数据库中增删改查另外四个数据库数据也会发生改变
mysql二进制日志
二进制日志的格式
mysql> show variables like ‘binlog_format’;
+———————-+———-+
| Variable_name | Value |
+———————-+———-+
| binlog_format | MIXED |
+———————-+———-+
基于段的格式 binlog_format=STATEMENT
日志记录量相对较小,节约磁盘及网络I/O
只对一条记录修改或者插入
row格式所产生的日志量小于段产生的日志量
UUID()和 user()函数复制时可能造成主从数据不一致
基于行的日志格式binlog_format=ROW
row格式可以避免mysql复制中出现的主从不一致,使MySQL主从复制更加安全
对每一行数据的修改比基于段的复制高效
使用ROW格式时需要设置Binlog_row_image=minimal(在更改数据时只记录修改的数据的字段,默认会记录整行数据)
混合日志格式 binlog_format=MIXED
根据SQL语句由系统在基于段或行的日志格式中进行选择
数据量的大小由所执行的SQL语句决定