分享最近对数据库常用架构的一些心得,没有特别具体的搭服务步骤,是一些原理和个人理解
数据库:
1.实现主从同步(备用用服务器,防止一台服务器挂掉,数据丢失)
原理:Slave(IO线程)复制master的binlog日志到relaylog
(slave线程)将执行relaylog中的语句
master:开启binlog日志,指定授权用户(权限:replication slave)
slave:要修改server_id,要保证数据与主库同步(mysqldump),指定主库位置,开启slave进程.
1.1复制模式
#################################################################
2.读写分离(负载均衡)
防止单个服务器并发压力过大,使数据库的读写是在不同的服务器上进行的.
主库(写)
代理服务器
从库(读)
配置代理服务器:
装包:maxscale
改配置:
配置文件:/etc/maxscale.cnf
修改配置文件: 1)先指定两个数据库服务器(节点)
2)指定监控的节点,并声明监控用户
3)指定做读写分离的节点,并指明路由用户(实现读写分离的用户)
4)定义代理服务 读写分离服务的端口(4006)--->一般客户端访问此端口,此端口可实现读写分离
5)定义代理服务 管理服务服务的端口(4016)--->一般本机访问此端口,用户管理 代理服务器
主数据库服务器授权用户:
1)监控用户:replication salve ; replication client
2)路由用户:select
测试
maxscale -f /etc/maxscale.cnf
代理服务器(192.168.4.57):
mysql -P4016 -uadmin -pmariadb
>list servers
客户端:
mysql -h192.168.4.57 -P4006 -uyaya55 -p123qqq...A
2.1多实例应用
就是在一台服务器上提供多个管理数据库应用
节约成本,提高硬件利用率
###############################################################
3.数据分片(MyCAT)--->依赖于java模块
依据不同的分片规则,将数据分别存到不同的数据库服务器,以达到减轻单台服务器的负载
方式:
横向分片:按照表中指定字段的分片规则,将表记录按行切分,分散存储到多个数据库中.
纵向分片:将单个数据库的多个表按业务类型分类,分散存储到不同的数据库.
结构:
数据库1
client MyCAT 数据库2
数据库3
分片规则(10):mod-long;sharding-by-intfile
配置MyCAT:
server.xml--->schema.xml--->rule.xml--->*.txt
客户端连接MyCAT账户 定义逻辑表 具体分片规则 分片规则会调用的文件
逻辑库 包括 表名
数据分片规则
数据节点
节点对应的服务器
起服务:
/usr/local/mycat/bin/mycat start
新建库,表
################################################################
4.高可用集群(MHA)
可以实现数据库服务器的高可用
当主库挂了,MHA会自动将有最新数据的从库升为master,实现故障切换
结构:
主库
client--->虚拟ip---> 从库1<---MHA
从库2
MHA:
1)MHA Manager(管理节点)
配置文件:源码安装,可以自定义
2)MHA Node(数据节点)