2 Star 1 Fork 0

叶落无声 / 读写分离

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Unlicense

读写分离

介绍

数据库一主二从,sharding-jdbc实现读写分离

软件架构

软件架构说明 springBoot+sharding-jdbc+jdk1.8+mysql(1主2从)

使用说明

  1. 本地安装虚拟机,docker
  2. 在一台虚拟机模拟MySQL主从复制功能
  3. 修改数据库相关配置

mysql主从复制配置

自行安装虚拟机,安装docker,本次使用Ubuntu系统

  1. 拉取mysql镜像 docker pull mysql:5.7.27
  2. 查看镜像:docker images
  3. 启动镜像 先启动mysql01容器:(即之后的主机master) docker run -d -p 3310:3306 -v /home/mysql/node-1/config:/etc/mysql/ -v/home/mysql/node-1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7.27 再启动mysql02容器:(即之后的从机) docker run -d -p 3311:3306 -v /home/mysql/node-2/config:/etc/mysql/ -v/home/mysql/node-2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 mysql:5.7.27 命令解释: -d: 后台运行容器,并返回容器ID -p 3311:3306 :将容器的3306端口映射到宿主机3310端口 -e MYSQL_ROOT_PASSWORD=123456 :配置数据库连接密码 -v /home/mysql/node-2/config:/etc/mysql/ :将配置文件夹挂载到宿主机 –name mysql01(02):将容器命名为 mysql01(02)
  4. 查看全部容器 docker ps -a
  5. 使用Navicat来进行测试 这里不做演示
  6. 编写主从复制配置文件 之前我们启动的时候写了这句-v /home/mysql/node-1/config:/etc/mysql/,将mysql 的配置文件夹和宿主机的文件夹挂载起来的。 那么我们就可以直接在宿主机下的/home/mysql/node-1/config/编写配置文件了。 cd /home/mysql/node-1/config/ vim my.cnf insert 以下内容 [mysqld] #修改配置文件:vim /etc/my.cnf #主服务器唯一ID server-id=1 #启用二进制日志 log-bin=mysql-bin #设置不要复制的数据库(可设置多个) binlog-ignore-db=mysql binlog-ignore-db=information_schema #设置需要复制的数据库 需要复制的主数据库名字 binlog-do-db=testdb #设置logbin格式 binlog_format=STATEMENT 退出 先按Esc键–>再按Shift+:键–>输入wq–保存退出。
  7. 编写从机配置文件 从机上的my.cnf也是同样的方式 插入以下内容 [mysqld] #从服务器唯一ID server-id=2 #启用中继日志 relay-log=mysql-relay
  8. 重启服务 docker restart mysql01 mysql02
  9. 搭建主从复制 主机设置 docker exec -it mysql01 /bin/bash #进入容器 mysql -uroot -p123456 #连接mysql 主机上建立帐户并授权 slave,给从机授权,为了让从机能够和主机连接起来。 GRANT REPLICATION SLAVE ON . TO 'slave'@'%' IDENTIFIED BY '123456';
  10. 查看master状态 show master status; #查询master的状态 把这里的File和Position记下来哈,等下在从机上要用到。 File: mysql-bin.000003 Position: 438
  11. 从机设置 进入mysql02容器 docker exec -it mysql02 /bin/bash mysql -uroot -p123456
  12. 复制主机的命令 CHANGE MASTER TO MASTER_HOST='主机的ip地址,这里不要写localhost', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_PORT=3310, MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=438; #解释: #CHANGE MASTER TO MASTER_HOST='主机的IP地址', #MASTER_USER='slave'(刚刚配置的用户名), #MASTER_PASSWORD='123456'(刚刚授权的密码), #master_port=主机开放的端口 我这里是3310端口, #MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值(之前的Position); 注意事项:如果在这里出现错误,先重置。执行完下面两条命令。 stop slave; reset master; 启动从服务器复制功能 start slave; 查看从服务器状态 show slave status\G #下面两个参数都是Yes,则说明主从配置成功! Slave_IO_Running: Yes Slave_SQL_Running: Yes
This is free and unencumbered software released into the public domain. Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to <http://unlicense.org>

简介

数据库一主二从,sharding-jdbc实现读写分离 展开 收起
Java
Unlicense
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/absongyu/spring-boot-sharding-jdbc.git
git@gitee.com:absongyu/spring-boot-sharding-jdbc.git
absongyu
spring-boot-sharding-jdbc
读写分离
master

搜索帮助