数据库读写分离

实现思路

通过设置主从数据库实现读写分离,主数据库负责“写操作”,从数据库负责“读操作”,根据压力情况,从数据库可以部署多个提高“读”的速度,借此来提高系统总体的性能。

主从数据库同步的实现思路如图: 

主服务器master记录数据库操作日志到Binary log,从服务器开启i/o线程将二进制日志记录的操作同步到relay log(存在从服务器的缓存中),另外sql线程将relay log日志记录的操作在从服务器执行。

主从数据库设置的具体步骤

首先要有两个数据库服务器master、slave(也可以用一个服务器安装两套数据库环境运行在不同端口,slave也可以举一反三设置多个),我们穷人就买虚拟云服务器玩玩就行 0.0。以下操作假设你的两台服务器上都已经安装好了mysql服务。

1.打开mysql数据库配置文件

vim /etc/my.cnf

2.在主服务器master上配置开启Binary log,主要是在[mysqld]下面添加:

server-id=1

log-bin=master-bin

log-bin-index=master-bin.index

3.重启mysql服务

service mysql restart

ps:重启方式随意

4.检查配置效果,进入主数据库并执行

mysql> SHOW MASTER STATUS;

5.配置从服务器的 my.cnf

在[mysqld]节点下面添加: 

server-id=2 relay-log-index=slave-relay-bin.index relay-log=slave-relay-bin

注:主从数据库server-id不一样

配置完成后同样重启从数据库一下

service mysql restart

6.接下来配置两个数据库的关联

首先我们先建立一个操作主从同步的数据库用户,切换到主数据库执行:

mysql> create user repl;

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从xxx.xxx.xxx.xx' IDENTIFIED BY 'mysql';

mysql> flush privileges;

这个配置的含义就是创建了一个数据库用户repl,密码是mysql, 在从服务器使用repl这个账号和主服务器连接的时候,就赋予其REPLICATION SLAVE的权限, *.* 表面这个权限是针对主库的所有表的,其中xxx就是从服务器的ip地址。

进入从数据库后执行:

mysql> change master to master_host='主xxx.xxx.xxx.xx',master_port=3306,master_user='repl',master_password='mysql',master_log_file='master-bin.000001',master_log_pos=0;

1

这里面的xxx是主服务器ip,同时配置端口,repl代表访问主数据库的用户,上述步骤执行完毕后执行start slave启动配置:

mysql> start slave;

停止主从同步的命令为:

mysql> stop slave;

查看状态命令,\G表示换行查看

mysql> show slave status \G;

在Spring中配置好主从数据库源,在拦截器中对执行的方法进行拦截判断,如果是写操作,则选择主数据库,读操作选择从数据库。(AOP)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值