MySQL常用架构原理总结(一)

分享最近对数据库常用架构的一些心得,没有特别具体的搭服务步骤,是一些原理和个人理解

数据库:

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(数据节点)

你可能感兴趣的:(MySQL,mysql常用架构原理总结)