个人博客:https://suveng.github.io/blog/
MySQL读写分离
分布式集群带来高并发,高容量的特性,但是数据一致性就成了问题
主要解决两个问题
1. 应用层控制数据源
2. 数据源之间的数据同步
多数据源
先停止mysql服务
把MySQL server整个目录拷过来,放到其他目录,修改my.ini
去到复制的那个目录的bin下,执行mysql初始化,
mysqld -initialize -insecure -user=mysql
安装服务,mysqld -install mysql3307
注意:服务的路径应该是复制的那个目录的mysqld,如果不是,可能my.ini配置问题
主从复制实践windows:
假设你什么都没装,那么先从mysql官网下载maysql server 7.7.22
我现在的时间是2018.5.30.请记住版本
安装好mysql,作为主库
如下图所示.但是数据库data文件不是在这里,
数据库的存储文件在如下图所示的路径,是隐藏文件夹下的.
这些可以从my.ini看到的配置
修改主库配置文件my.ini
主要修改log-bin这里是主库的log文件的位置.当产生主从复制,其文件就会存储在这个位置,记得如果是多文件夹的话,对应的位置必须要有这个文件夹.否则报错
binlog-do-db=project-manager这里配置的是需要主从复制的数据库,这个也是我的其中一个数据库.如下图所示.
当然也可以配置多个,也可以配置不需要主从的数据库,但是我懒,一般也是这样子配置的,所以不做多余的说明,如果想深入了解.请看这篇https://segmentfault.com/a/1190000009922696
到这里主库配置完毕!
复制主库,作为从库
把上面的文件夹复制到从库的位置,我这里选择d盘
如上图我复制了两个,可以看到我用端口命名.
接下来就是修改从库的配置.可以看到3307下面并没有my.ini配置文件,那么就需要自己创建或者去主库那里复制过来.我选择复制过来.需要修改从库的port,basedir,datadir
从英文可以知道他们代表意思,端口,基本路径,数据路径.
修改完毕后,就需要配置从库,记住server_id不能和主库的server_id重复
这里最重要的是replicate-do-db=project-manager.
那么到这里从库配置完毕
接下来开始初始化从库
用管理员打开cmd,进入从库目录的bin目录下,敲这个指令
mysqld -initialize -insecure -user=mysql
这里会生成一些文件到datadir下面的路径,如下图所示
圈出来的是生成的,其余那些是后面生成的,还没完成.
还需要吧主库的一些文件给拷过来.把下图的那些文件夹和文件都考过去把,这些文件夹都是一些数据库,每个人的数据库都不一样,只要把文件夹都复制过去就好了,肯定会提示要覆盖ibdata1文件的,直接覆盖就好.不然下面会报错
接下来敲这个安装mysql3307服务项
mysqld -install mysql3307
安装成功后,启动两个数据库服务.
可以用cmd(管理员),打如下指令
net start mysql57
这里的mysql57是我主库的服务项
net start mysql3307
启动成功后
到这里从库配置王弼
配置主从库通信
这里就是最后的部分了
用Navicat打开主库,新建查询,执行 show master status
得到如下的信息,记住file 和position字段
打开从库,配置主库的信息,打开从库后,新建查询,执行下面命令
change master to master_host='127.0.0.1',master_port=3306,master_user='root',master_password='root',master_log_file='master-bin.000003',master_log_pos=154;
执行成功后,是执行成功后
再执行 start SLAVE
再执行 show slave status
查看从库状态
如上图所示,哪两个字段的状态必须是yes,否则不成功,看到第一个字段,Waiting for master to send event,则表示成功
最后验证主从复制
打开其中一个表插入一条数据
提交后从库下面的表也会有插入,保持数据一致性.到这里主从复制完成了.