由于官方的docker镜像需要和InnoDb Cluster一起使用,这里自己创建镜像
group replication 组复制 搭建: https://www.jianshu.com/p/8187f72bcaa6
使用的ubuntu作为基础镜像, 需要添加国内源
Dockfile文件:
创建router镜像:
启动容器:
这里映射了3300和3301两个端口,连接到了 mysql group replication 使用的docker网络中,自定义的mysqlrouter配置挂载到容器中
然后再连接mysql服务器时, 只需使用router的端口即可, 使用 mysql workbench 连接3301端口, 每创建一个连接都会连接到下一个可用的mysql服务器上, 使用 select @@hostname查看当前连接到的mysql服务器的hostname就可以验证了
MySQL的主从切换(数据库层面) 目录 不管如种数据库,在进行解决现场问题时,第一原则就是想到是否需要数据备份或停止数据库业务防止数据库丢失MySQL的主从切换(数据库层面) 目录 不管如种数据库,在进行解决现场问题时,第一原则就是想到是否需要数据备份或停止数据库业务防止数据库丢失MySQL的主从切换(数据库层面) 目录 不管如种数据库,在进行解决现场问题时,第一原则就是想到是否需要数据备份或停止数据库业务防止数据库丢失当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,MySQL执行一个sql的过程如下:
1,接收到sql2,把sql放到排队队列中 3,执行sql4,返回执行结果。在这个执行过程中最花时间在什么地方呢?第一,是排队等待的时间,第二,sql的执行时间。其实这二个是一回事,等待的同时,肯定有sql在执行。所以我们要缩短sql的执行时间。
mysql中有一种机制是表锁定和行锁定,为什么要出现这种机制,是为了保证数据的完整 性,我举个例子来说吧,如果有二个sql都要修改同一张表的同一条数据,这个时候怎么办呢,是不是二个sql都可以同时修改这条数据呢?很显然mysql 对这种情况的处理是,一种是表锁定(myisam存储引擎),一个是行锁定(innodb存储引擎)。表锁定表示你们都不能对这张表进行 *** 作,必须等我对 表 *** 作完才行。行锁定也一样,别的sql必须等我对这条数据 *** 作完了,才能对这条数据进行 *** 作。如果数据太多,一次执行的时间太长,等待的时间就越长,这 也是我们为什么要分表的原因。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)