以下操作是在main库下的表操作的!
1、设置读写的分组编号(即 hostgroup_id)
- insert into mysql_replication_hostgroups values(1,2,db-128);
- load mysql servers to runtime;save mysql servers to disk;
注:设置1为写分组;2为读分组;备注:db-128;将其加载到运行中,保存稻磁逄。
2、将MySQL实例分派到各个组中:主库分到写组;大年夜库分到读组。
- insert into mysql_servers(hostgroup_id,hostname,port,transaction_persistent,max_connections) values (1,'192.168.152.128',3306,1,100),(2,'192.168.152.128','3307',1,100);
- load mysql servers to runtime;save mysql servers to disk;
注:
- 若这里有多个大年夜库,可以将其他大年夜库的信息添加到读分组(即:hostgroup_id=2)中。
- 每个server须要属于一个组;一个组里可以有多个server;一个server可以属于多个组。
① 在proxysql中创建账号,在外部应用它连接进来时,会在表main.mysql_users中检查该账号的相干信息。
- insert into mysql_users(username,password,active,default_hostgroup,default_schema) values ('proxysql','proxysql',1,1,'guolmdb');
- load mysql users to runtime;save mysql users to disk;
注:proxysql/proxysql账号用于外部连接进来应用,默认进入写分组的guolmdb库,active=1代表活泼的┞匪号。
② 修改供给外部连接的IP和端标语
- update global_variables set variable_value='http://database.51cto.com/art/201801/192.168.152.128:6033' where variable_name='mysql-interfaces';
- 或 set mysql-interfaces='192.168.152.128:6033';
- save mysql variables to disk;
- > proxysql restart;
由此得亲信在线修改时,必定要保存稻磁逄,不然再次启动时损掉设备的数据。
注:
- 该变量的值可以有多个,即可以设置经由过程多个IP连接进来,格局:'IP1:port1;IP2:port2'。
- 修改该变量须要重启才能生效!
- 有两种设置变量的方法:set 设置 或 update 设置。
③ 将以上创建的┞匪号,在MySQL主库中创建一遍,要不然,proxysql没有权限连接到MySQL。
- GRANT ALL PRIVILEGES>
- # tail -100f proxysql.log
- 2017-11-13 17:02:35 MySQL_Monitor.cpp:412:monitor_connect_thread(): [ERROR] Server 192.168.152.128:3306 is returning "Access denied" for monitoring user
- 2017-11-13 17:02:35 MySQL_Monitor.cpp:412:monitor_connect_thread(): [ERROR] Server 192.168.152.128:3307 is returning "Access denied" for monitoring user
- insert into mysql_query_rules (active,username,match_pattern,schemaname,destination_hostgroup,apply) values(1,'proxysql','^select','guolmdb',2,1);
- load mysql query rules to runtime;save mysql query rules to disk;
- 经由过程账户proxysql连接进来的,一个以select开首的SQL并操作guolmdb库的语句将会被分派到读分组履行。
- 这种设置若一个事务为:begin;select;update;commit;可能会将该事务分派到大年夜库操作,如许是缺点的!
- 为避免这种缺点,可以针对并发高的SQL设置读的负载均衡。如下操作:
- 查看表 stats_mysql_query_digest,找参预发高的SQL对应的字段digest。
- 在main.mysql_query_rules中设置路由规矩时,将萌芽到的digest,添加到路由表的字段digest中。
- 官网相干博客:http://proxysql.com/blog/configure-read-write-split
4、设置读写的路由规矩
解释:
留意:
注:经由过程对外供给办事的端标语和账号连接进proxysql,进而转接到主库上(因为该账户默认进入的是主库)
5、测试 设备的读写分别是否生效
履行一些操作: