1、搭建 MySQL 数据库主从复制
这里使用了两台虚拟机搭建一主一从
2.主机一配置
修改/etc/my.cnf文件
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字
#设置logbin格式
binlog_format=STATEMENT
3.主机一配置
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
4.主机、从机重启
5.MySQL 服务主机从机都关闭防火墙
6.在主机上建立帐户并授权slave
#在主机MySQL里执行授权命令
CREATE USER 'slave2'@'%' IDENTIFIED BY '123123';
#此语句必须执行。否则见下面。
ALTER USER 'slave2'@'%' IDENTIFIED WITH mysql_native_password BY '123123';
GRANT REPLICATION SLAVE ON *.* TO 'slave2'@'%';
flush privileges;
#查询master的状态show master status;
#记录下File和Position的值
#执行完此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化
7.在从机上配置需要复制的主机
#在从机执行命令
CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_USER='slave', MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值;
#启动从服务器复制功能start slave;
#查看从服务器状态show slave status\G;
#下面两个参数都是Yes,则说明主从配置成功!
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
8.主机新建库、新建表、insert 记录,从机复制
#建库语句
CREATE DATABASE mydb1;
#建表语句
CREATE TABLE mytbl(id INT,NAME VARCHAR(50));
#插入数据
INSERT INTO mytbl VALUES(1,"zhang3");
9.如何停止从服务复制功能
stop slave;
10.如何重新配置主从
stop slave;
reset master;
11、配置 Macat 读写分离
登录Mycat,创建逻辑库,配置数据源
#在Mycat里创建数据库mydb1 #创建db2逻辑库
create database mydb1;
#修改mydb1.schema.json 指定数据源 "targetName": "prototype",配置主机数据源vim /usr/local/mycat/conf/schemas/mydb1.schema.json
使用注解方式添加数据源
#登录Mycat,注解方式添加数据源,指向从机
/*+ mycat:createDataSource{ "name":"rwSepw", "url":"jdbc:mysql://192.168.140.100:3306/mydb1?useSSL=false&characterEncodi ng=UTF-8&useJDBCCompliantTimezoneShift=true", "user":"root", "password":"123456" } */;
/*+ mycat:createDataSource{ "name":"rwSepr", "url":"jdbc:mysql://192.168.140.99:3306/mydb1?useSSL=false&characterEncodin g=UTF-8&useJDBCCompliantTimezoneShift=true", "user":"root", "password":"123456" } */;
#查询配置数据源结果
/*+ mycat:showDataSources{} */;
更新集群信息,添加dr0从节点.实现读写分离
#更新集群信息,添加dr0从节点.
/*! mycat:createCluster{"name":"prototype","masters":["rwSepw"],"replicas":["rw Sepr"]} */;
#查看配置集群信息
/*+ mycat:showClusters{} */;
#查看集群配置文件
vim /usr/local/mycat/conf/clusters/prototype.cluster.json
readBalanceType 查询负载均衡策略可选值:
BALANCE_ALL(默认值)
获取集群中所有数据源
BALANCE_ALL_READ
获取集群中允许读的数据源
BALANCE_READ_WRITE
获取集群中允许读写的数据源,但允许读的数据源优先
BALANCE_NONE
获取集群中允许写数据源,即主节点中选择
switchType
NOT_SWITCH:不进行主从切换SWITCH:进行主从切换
3.重启mycat即可
但这里就搭建完成了,接下来自己验证