Middleware
Front-end Back-end
DB
Front-end Back-end
DB
Front-end Back-end
Front-end Back-end
Front-end Back-end
Front-end Back-end
Multiplexing
admin>	INSERT	INTO	proxysql_servers (hostname)	values	('192.168.0.5');
admin>	INSERT	INTO	proxysql_servers (hostname)	values	('192.168.0.6');
admin>	INSERT	INTO	proxysql_servers (hostname)	values	('192.168.0.7');
admin>	INSERT	INTO	proxysql_servers (hostname)	values	('192.168.0.8');
admin>	LOAD	PROXYSQL	SERVERS	TO	RUNTIME;	SAVE	PROXYSQL	SERVERS	TO	DISK;
admin>	INSERT	INTO	mysql_query_rules
(rule_id,	active,	username,	schemaname,	destination_hostgroup,	multiplex,	apply)	
VALUES	
(101,	1,	'mcmaster',	‘RouteDB’,	51,	2,	1),
(102,	1,	‘mcslave’,		‘RouteDB',	151,	2,	1),
(103,	1,	'mcmaster',	‘UserDB1',	52,	2,	1),
(104,	1,	'mcslave',	 ‘UserDB1',	152,	2,	1),
(105,	1,	'mcmaster',	‘UserDB2',	52,	2,	1),
(106,	1,	'mcslave',	 ‘UserDB2',	152,	2,	1),
(107,	1,	'mcmaster',	‘UserDB3',	53,	2,	1),
(108,	1,	'mcslave',	 ‘UserDB3',	153,	2,	1),
(109,	1,	'mcmaster',	‘UserDB4',	53,	2,	1),
(110,	1,	'mcslave',	 ‘UserDB4',	153,	2,	1);
admin>	LOAD	MYSQL	QUERY	RULES	TO	RUNTIME;SAVE	MYSQL	QUERY	RULES	TO	DISK;
DB유저명 + 스키마명 = 목표 논리 DB
admin>	INSERT	INTO	mysql_servers(hostgroup_id,hostname,port)	VALUES	(51,'10.79.x.z',13306);	//DB1의 master
admin>	INSERT	INTO	mysql_servers(hostgroup_id,hostname,port)	VALUES	(151,'10.79.x.b',13306);	//DB1의 slave
admin>	INSERT	INTO	mysql_servers(hostgroup_id,hostname,port)	VALUES	(52,'10.79.x.c',13306);	//DB2의 master
admin>	INSERT	INTO	mysql_servers(hostgroup_id,hostname,port)	VALUES	(152,'10.79.x.d',13306);	//DB2의 slave
admin>	INSERT	INTO	mysql_servers(hostgroup_id,hostname,port)	VALUES	(53,'10.79.x.e',13306);	//DB3의 master
admin>	INSERT	INTO	mysql_servers(hostgroup_id,hostname,port)	VALUES	(153,'10.79.x.f',13306);	//DB3의 slave
admin>	LOAD	MYSQL	SERVERS	TO	RUNTIME;	SAVE	MYSQL	SERVERS	TO	DISK;
admin>	INSERT	INTO	mysql_query_rules
(rule_id,	active,	username,	schemaname,	destination_hostgroup,	multiplex,	apply)	
VALUES	
(101,	1,	'mcmaster',	‘RouteDB’,	51,	2,	1),
(102,	1,	‘mcslave’,		‘RouteDB',	151,	2,	1),
(103,	1,	'mcmaster',	‘UserDB1',	52,	2,	1),
(104,	1,	'mcslave',	 'UserDB1',	152,	2,	1),
(105,	1,	'mcmaster',	‘UserDB2',	52,	2,	1),
(106,	1,	'mcslave',	 ‘UserDB2',	152,	2,	1),
(107,	1,	'mcmaster',	‘UserDB3',	53,	2,	1),
(108,	1,	'mcslave',	 ‘UserDB3',	153,	2,	1),
(109,	1,	'mcmaster',	‘UserDB4',	53,	2,	1),
(110,	1,	'mcslave',	 ‘UserDB4',	153,	2,	1);
admin>	LOAD	MYSQL	QUERY	RULES	TO	RUNTIME;SAVE	MYSQL	QUERY	RULES	TO	DISK;
admin>	INSERT	INTO	mysql_query_rules
(rule_id,	active,	username,	schemaname,	destination_hostgroup,	multiplex,	apply)	
VALUES	
(101,	1,	'mcmaster',	‘RouteDB’,	51,	2,	1),
(102,	1,	‘mcslave’,		‘RouteDB',	151,	2,	1),
(103,	1,	'mcmaster',	‘UserDB1',	52,	2,	1),
(104,	1,	'mcslave',	 'UserDB1',	152,	2,	1),
(105,	1,	'mcmaster',	‘UserDB2',	52,	2,	1),
(106,	1,	'mcslave',	 ‘UserDB2',	152,	2,	1),
(107,	1,	'mcmaster',	‘UserDB3',	53,	2,	1),
(108,	1,	'mcslave',	 ‘UserDB3',	153,	2,	1),
(109,	1,	'mcmaster',	‘UserDB4',	53,	2,	1),
(110,	1,	'mcslave',	 ‘UserDB4',	153,	2,	1);
admin>	LOAD	MYSQL	QUERY	RULES	TO	RUNTIME;SAVE	MYSQL	QUERY	RULES	TO	DISK;
UserDB1
UserDB2
MySQL Server 1 MySQL Server 3
RouterDB
UserDB3
UserDB4
MySQL Server 2
UserDB1
MySQL Server
UserDB1
UserDB2
UserDB3
MySQL Server
UserDB1
UserDB2
UserDB3
MySQL Server
MySQL Server 1
UserDB1
MySQL Server 2
UserDB2
MySQL Server 3
UserDB3
유저 증가
유저 감소
à
사용, 300
가용, 2700
[2019] 200만 동접 게임을 위한 MySQL 샤딩
[2019] 200만 동접 게임을 위한 MySQL 샤딩

[2019] 200만 동접 게임을 위한 MySQL 샤딩