男女性做那个微视频网站,推广网上国网app,网站管理系统安装,建设网站空间#x1f680; ShardingSphere #x1f680; #x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 #x1f340; #x1f332; 越难的东西,越要努力坚持#xff0c;因为它具有很高的价值#xff0c;算法就是这样✨ #x1f332; 作者简介#xff1a;硕风和炜 ShardingSphere 算法刷题专栏 | 面试必备算法 | 面试高频算法 越难的东西,越要努力坚持因为它具有很高的价值算法就是这样✨ 作者简介硕风和炜CSDN-Java领域优质创作者保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享 恭喜你发现一枚宝藏博主,赶快收入囊中吧 人生如棋我愿为卒行动虽慢可谁曾见我后退一步 ShardingSphere 目录 一.ShardingSphere分库分表实战之MySQL主从同步原理 1.1 主从复制的用途 1.2 主从部署必要条件 1.3 主从复制的原理 二.ShardingSphere分库分表实战之MySQL主从集群搭建 2.1 创建俩个MySQL服务 2.2 主数据库上创建需要同步的数据库以及表 2.3 修改主数据库的配置文件my.cnf 2.4 修改从数据库的配置文件my.cnf 2.5 登陆主数据上创建主从复制的账号 2.6 数据库中查询表获取文件名MASTER_LOG_FILE和点位MASTER_LOG_POS 2.7 从库登陆从库向主库同步信息 2.8 主库插入数据从库查询信息 三.MySQL集群主从同步启动后常见的错误 3.1 解决方案1 3.2 解决方案2 四.总结 五.共勉 一.ShardingSphere分库分表实战之MySQL主从同步原理
读写分离是建立在MySQL主从复制基础之上实现的所以必须先搭建MySQL的主从复制架构。 1.1 主从复制的用途 实时灾备用于故障切换 读写分离提供查询服务 备份避免影响业务 1.2 主从部署必要条件
主库开启binlog日志设置log-bin参数主从server-id不同从库服务器能连通主库 1.3 主从复制的原理
Mysql 中有一种日志叫做 bin 日志二进制日志。这个日志会记录下所有修改了数据库的SQL 语句insert,update,delete,create/alter/drop table, grant 等等。主从复制的原理其实就是把主服务器上的 bin 日志复制到从服务器上执行一遍这样从服务器上的数据就和主服务器上的数据相同了。 主库db的更新事件(update、insert、delete)被写到binlog主库创建一个binlog dump thread把binlog的内容发送到从库从库启动并发起连接连接到主库从库启动之后创建一个I/O线程读取主库传过来的binlog内容并写入到relay log从库启动之后创建一个SQL线程从relay log里面读取内容执行读取到的更新事件将更新内容写入到slave的db 二.ShardingSphere分库分表实战之MySQL主从集群搭建 2.1 创建俩个MySQL服务
如果你看过了之前的文章并且都进行了实操那么这个步骤你肯定完成了如果你是刚刚学习那么也不要紧可以先去学习之前的文章再来学习就会更加容易。 2.2 主数据库上创建需要同步的数据库以及表
-- 创建数据库
CREATE DATABASE test CHARACTER SET utf8;-- 创建表
CREATE TABLE user (id INT(11) PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) DEFAULT NULL,age INT(11) DEFAULT NULL
); 2.3 修改主数据库的配置文件my.cnf
直接在原来的配置文件内容下方添加即可
# ...
# 省略原来的配置内容
# .....# Master
# 开启日志
log-binmysql-bin
# 日志格式按行同步
binlog-formatROW
# 设置服务id主从不能一致
server-id1
# 设置需要同步的数据库
binlog-do-dbtest
# 设置忽略系统库同步
binlog-ignore-dbmysql
binlog-ignore-dbinformation_schema
binlog-ignore-dbperformance_schema
binlog-ignore-dbsysserver-id1 中的1可以任定义只要是唯一的就行。log-binmysql-bin 表示启用binlog功能并制定二进制日志的存储目录binlog-do-dbtest 是表示只备份test 数据库。binlog_ignore_dbmysql 表示忽略备份mysql。不加binlog-do-db和binlog_ignore_db那就表示备份全部数据库。 2.4 修改从数据库的配置文件my.cnf
同理 配置我们从数据库的配置文件最重要的就是将此时从库的server-id改为2
# ...
# 省略原来的配置内容
# .....# Slave
# 开启日志
log-binmysql-bin
# 日志格式按行同步
binlog-formatROW
# 设置服务id主从不能一致
server-id2
# 设置需要同步的数据库
binlog-do-dbtest
# 设置忽略系统库同步
binlog-ignore-dbmysql
binlog-ignore-dbinformation_schema
binlog-ignore-dbperformance_schema
binlog-ignore-dbsysserver-id2 中的1可以任定义只要是唯一的就行。log-binmysql-bin 表示启用binlog功能并制定二进制日志的存储目录binlog-do-dbtest 是表示只备份test 数据库。binlog_ignore_dbmysql 表示忽略备份mysql。不加binlog-do-db和binlog_ignore_db那就表示备份全部数据库。 2.5 登陆主数据上创建主从复制的账号
在执行下面命令的之前俩个服务器上重启我们的MySQL服务。
docker restart mysql 进入mysql容器内容登陆mysql
docker exec -it mysql /bin/bashmysql -uroot -proot创建一个允许从数据库来访问的用户账号
GRANT REPLICATION SLAVE ON *.* TO slave192.168.10.133 IDENTIFIED BY 123456;查询验证 2.6 数据库中查询表获取文件名MASTER_LOG_FILE和点位MASTER_LOG_POS
执行如下的命令
show master status \G;2.7 从库登陆从库向主库同步信息
进入容器登陆mysql
停止同步
stop slave;修改从库指向到主库使用上一步记录的文件名以及位点
CHANGE MASTER TO
master_host192.168.10.132,
master_port3306,
master_userslave,
master_password123456,
master_log_filemysql-bin.000001,
master_log_pos154,
MASTER_CONNECT_RETRY10;启动同步
start slave;查看运行状态
show slave status \G;2.8 主库插入数据从库查询信息
主库插入数据 从库中查询对应的数据 三.MySQL集群主从同步启动后常见的错误
常见错误是Slave_IO_Running No 或者 Connecting 的情况 3.1 解决方案1
首先停掉Slave服务
stop slave;到主服务器上查看主机状态, 记录File和Position对应的值
SHOW MASTER STATUS;然后到slave服务器上执行手动同步
CHANGE MASTER TO
master_host192.168.10.132,
master_port3306,
master_userslave,
master_password123456,
master_log_filemysql-bin.000001,
master_log_pos1181,
MASTER_CONNECT_RETRY10;3.2 解决方案2
程序可能在slave上进行了写操作也可能是slave机器重起后事务回滚造成的.一般是事务回滚造成的,解决办法
stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER1;
start slave;四.总结
本篇文章主要讲解了ShardingSphere分库分表实战之MySQL主从集群搭建实操过程非常重要大家一定要动手亲自实践一下必须掌握。下节预告ShardingSphere分库分表实战之Sharding-JDBC实现读写分离敬请期待。 五.共勉
最后我想和大家分享一句一直激励我的座右铭希望可以与大家共勉