环境:
JDK 1.8
MYSQL 5.7.2
服务器两台:主、从各一台
JDK 1.8
MYSQL 5.7.2
服务器两台:主、从各一台
[root@localhost software]# tar -zxvf Mycat-server-1.6.6.1-test-20180729105217-linux.tar.gz
firewall-cmd --zone=public --query-port=8066/tcp
然后重启防火墙
firewall-cmd –reload
#服务器唯一标示,一般取服务器的ip
server-id = 142
#启动MySQL二进制日志
log_bin = master-bin
log_bin_index = master-bin.index
#指定记录二进制日志的数据库
binlog_do_db = db1
#指定不记录二进制日志的数据库
binlog_ignore_db = mysql
重启msql
[root@localhost mysql-5.7.27-linux-glibc2.12-x86_64]# service mysql restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
建立帐户并授权slave
mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456';
#一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
刷新权限
mysql> FLUSH PRIVILEGES;
查看mysql现在有哪些用户
mysql>select user,host from mysql.user;
也可以借助Navicat来查看:
查询master的状态
mysql> show master status;
记住这红框的两个
第一步:修改my.conf文件
[mysqld]
server-id=143
重启mysql服务,改完配置文件一定要重启 service mysqld restart
然后再Navicat执行,
CHANGE MASTER TO master_host = '你主库的ip',
master_port = 3306,
master_user = 'backup',
master_password = '123456',
master_log_file = 'master-bin.000001', -- 上面红框的
master_log_pos = 867; -- 上面红框的
启动从服务器复制功能
start slave;
show slave status;
只需要查看下面圈起来的这个2个字段状态,同时为yes即标识你配置成功!
如果后续发现这两个值出现no,请查考文章:https://www.cnblogs.com/l-hh/p/9922548.html
7.测试:
在主库的表插入一条数据,从库相同的表名就会插入一条数据
PS:附带mycat常用命令
mycat目录/bin 下执行如下命令
启动MyCat: ./mycat start
查看启动状态:./mycat status
停止: ./mycat stop
重启: ./mycat restart
启动并控制台打印日志:./mycat console
8.mycat配置读写分离
schema.xml
show slave status
server.xml
0
1
0
0
2
false
8066
9066
0
0
1
64k
1k
0
384m
false
false
true
123456
TESTDB
user
TESTDB
true
到时候用这个hostmaster账户和密码123456去用navicat连接
9.springboot+mybatis+mycat集成
application.properties配置:
POM.XML我mysql用的版本
代码就是很普通的增删查改,主要是连接数据库的配置,改为连接mycat
10.测试
用navicat连接mycat
连接两个mysql
然后建表
CREATE TABLE `category_info` (
`category_id` varchar(255) NOT NULL COMMENT '主键',
`create_time` datetime NOT NULL,
`update_time` datetime NOT NULL,
`category_name` varchar(255) NOT NULL COMMENT '品类名称',
`status` int(2) NOT NULL COMMENT '0:启动 1:未启动',
`category_picture` varchar(255) NOT NULL COMMENT '分类图片',
`plate_id` varchar(255) NOT NULL COMMENT '板块ID',
PRIMARY KEY (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
用postman调用接口插入数据
主从两个库都会有数据
然后手动插入主库两条数据
主库数据为
从库数据为
调用接口查询
查出了从库的数据,实现了读写分离!
在从库:stop slave;
change master to master_host='主数据库ip',master_port=3306,master_user='主数据库账户',master_password='主数据库密码',master_log_file='master-bin.000002',master_log_pos=1571;
master_log_file和master_log_pos可以在主库用show master status;看
然后重新start slave
再重新查看show slave status
OK了