mysql读写分离实践

一主二从集群

基于SpringBoot + Mybatis + Sharding JDBC完成读写分离案例
在本案例中,开启了主服务器和从1基于Grid的主从同步,主服务器和从2之间没有开启。

云主机配置

三台云主机分别下载Mysql8, 建表

yum list mysql-server
yum install -y mysql-server.x86_64
  1. 主服务器创建database learn,从1创建 database slave1,从2创建database slave2(这里主从配置了不同名的database,后续要开启主从同步时从服务器要加个映射)
  2. 在learn,slave1,slave2中分别执行
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

配置主服务器

配置文件

/etc/my.cnf.d/mysql-server中添加(Mysql7:/etc/my.cnf):

#binlog刷盘策略
sync_binlog=1
#需要备份的数据库
binlog-do-db=learn
#不需要备份的数据库
binlog-ignore-db=mysql
#启动二进制文件
log-bin=mysql-bin
#服务器ID
server-id=132
gtid_mode=on
enforce_gtid_consistency=on
#强烈建议,其他格式可能造成数据不一致
binlog_format=row
登录Mysql,给从服务器授权
systemctl restart mysqld
mysql -uroot -p
  1. 从服务器使用主服务器的root用户登录
mysql> GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';
  1. 或者主服务器新建一个用户,用于从服务器的访问
    Mysql8写法
mysql>CREATE USER 'slave'@'%' IDENTIFIED BY '密码';
mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave' @ '%';

Mysql7写法

mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave' @ '%' identified by ‘密码’;

配置从服务器1

配置文件

/etc/my.cnf.d/mysql-server中添加:

server-id=133
gtid_mode=on
enforce_gtid_consistency=on
replicate-rewrite-db=learn->slave1
(从服务器上的database和主服务器上的database不同名时要配置该映射,一开始没配置,show slave status时有报错,learn是未知的数据库)
登录Mysql,启动slave
systemctl restart mysqld
mysql -uroot -p
mysql>change master to
master_host='主服务器ip‘,
master_port=3306,
master_user='主服务器授权的用户名',
master_password='主服务器授权的密码',
master_auto_position=1;

mysql>start slave;

查看slave状态

show slave status \G

验证主和从1之间的主从同步

主服务器插入两条数据
在这里插入图片描述
从1可以查到
在这里插入图片描述

应用程序

gitlab下载老师提供demo
修改配置文件中的主从地址
在这里插入图片描述

运行程序,查看结果

往主服务器写入一条数据
循环查询了50次,发现有50次可以查到,有50次查不到。推理查询从1服务器50次,从1开启了主从同步,可以查到。从2没有开启,往主服务器写的数据,从2读不到。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值