数据库实现简单的读写分离
Posted wujf-myblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库实现简单的读写分离相关的知识,希望对你有一定的参考价值。
1.打开mysql数据库配置文件
vim /etc/my.cnf
- 1
2.在主服务器master上配置开启Binary log,主要是在[mysqld]下面添加:
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
- 1
- 2
- 3
如图:
3.重启mysql服务
service mysql restart
- 1
ps:重启方式随意
4.检查配置效果,进入主数据库并执行
mysql> SHOW MASTER STATUS;
- 1
可以看到下图表示配置没问题,这里面的File名:master-bin.000001 我们接下来在从数据库的配置会使用:
5.配置从服务器的 my.cnf
在[mysqld]节点下面添加:
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
- 1
- 2
- 3
这里面的server-id 一定要和主库的不同,如图:
配置完成后同样重启从数据库一下
service mysql restart
- 1
6.接下来配置两个数据库的关联
首先我们先建立一个操作主从同步的数据库用户,切换到主数据库执行:
mysql> create user repl;
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘从xxx.xxx.xxx.xx‘ IDENTIFIED BY ‘mysql‘;
mysql> flush privileges;
- 1
- 2
- 3
这个配置的含义就是创建了一个数据库用户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;
- 1
停止主从同步的命令为:
mysql> stop slave;
- 1
查看状态命令,G表示换行查看
mysql> show slave status G;
- 1
可以看到状态如下:
这里看到从数据库已经在等待主库的消息了,接下来在主库的操作,在从库都会执行了。我们可以主库负责写,从库负责读(不要在从库进行写操作),达到读写分离的效果。
我们可以简单测试:
在主数据库中创建一个新的数据库:
mysql> create database testsplit;
- 1
在从数据库查看数据库:
mysql> show databases;
- 1
可以看到从数据库也有testsplit这张表了,这里就不上图了,亲测可用。在主数据库插入数据,从数据库也可以查到。
https://blog.csdn.net/starlh35/article/details/78735510
至此已经实现了数据库主从同步
以上是关于数据库实现简单的读写分离的主要内容,如果未能解决你的问题,请参考以下文章