常见数据库集群策略
数据库集群的三大用处:大型互联网程序用户群体庞大,所以架构必须要特殊设计。单节点的数据库无法满足性能上的要求。单节点的数据库没有冗余设计,无法满足高可用。
这三个需求我们单独来理解,随着上网用户的增加,为了承载更多用户访问,互联网程序的体量自然也就越来越大。大的体量要朝着优化的方向发展,于是需要提出更多特殊设计。
数据访问量越来越大,一个节点上处理100万次的读和写和两个节点做读和写效率完全不一样,例如master主节点,只做写节点,slave节点只做读功能,这样单个节点只操作一项功能,增加了访问次数,同时避免了不同操作的冲突。
数据库的单节点保存,没有备份在程序,在运行中具有很高的风险。如果一个这个存储重要信息的节点崩溃,那么整个系统将停止运行,无法满足高可用。多个节点进行备份存储,一个节点挂掉另一个节点可以继续使用。集群的意义就体现在这里,提高访问量,提升性能,满足高可用。
1、Replication
replication策略-拷贝,也就是我之前配置过的主从同步,master主节点负责写,从slave负责读。这里就有一个问题,从节点slave写数据,master就会不存在这个插入的数据。
replication有个毛病,就是当master成功写入数据,但是如果同步到slave时失败了,那去slave读数据的时候,这条数据没有,而master又是出现了插入成功,那这就是最要命的。
2、Pxc
pxc策略,保存高价值数据很重要,在一个节点提交了数据,那么其他节点跟着同步。数据所有都是一致的。
3、对比
安装Pxc集群
1、去这个网站找到下载集群的命令:https://hub.docker.com/r/percona/percona-xtradb-cluster/,还是最好去网站里面去找吧,万一他哪天更新了,命令变了,原命令就用不了了。
docker pull percona/percona-xtradb-cluster
2、给这个镜像改个名字,名字太长了
查看镜像名:docker images 改名:docker tag docker.io/percona-xtradb-cluster pxc
把原来的删掉:docker rmi docker.io/percona-xtradb-cluster
3、出于安全考虑还是要设置网段,相关网段的操作如下
创建网段:docker network create --subnet=172.18.0.0/24 net1
查看网段:docker network inspect net1
删除网段,这个不用做,只是让你知道有这个命令:docker network rm net1
4、pxc节点映射数据目录的方法,
创建数据卷:docker volume create v1
查看数据卷:docker inspect v1
删除:docker volume rm v1