proxysql-基础

特色

  1. 数据库层代理,同时关于数据库实时统计和流量查询
  2. 配置无需重启服务,可随时更新,同时落地到数据库中(sqlite)
  3. 充当防火墙角色
  4. 查询路由规则丰富,同时支持缓存数据
  5. 数据分片—数据库、表、用户这三个维度
  6. 关于后端数据库节点可随时增删

它适用于:mysql和mariadb、Percona Server
同时还能够支持:AWS Aurora 和RDS、ClickHouse、Galera Cluster、Oracle NDB Cluster、SQLitemysql

安装步骤

Centos系统
添加源sql

cat <<EOF | tee /etc/yum.repos.d/proxysql.repo
[proxysql_repo]
name= ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/\$releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/repo_pub_key
EOF

安装proxysql
yum install proxysql -y数据库

启动前,先将配置文件修改,修改以下后端

[root@MWF-DB-T01 ~]# egrep -v "^#|^$" /etc/proxysql.cnf 
datadir="/gwmfc/app/proxysql "
errorlog="/var/log/proxysql/proxysql.log"
admin_variables=
{
        admin_credentials="admin-sql:admin-sql;sys-sql:sys-sql "
        mysql_ifaces="127.0.0.1:6032"
}
mysql_variables=
{
        threads=4
        max_connections=2048
        default_query_delay=0
        default_query_timeout=36000000
        have_compress=true
        poll_timeout=2000
        interfaces="0.0.0.0:6033"
        default_schema="information_schema"
        stacksize=1048576
        server_version="8.0.19"
        connect_timeout_server=3000
        monitor_username="monitor-sql"
        monitor_password="monitor-sql"
        monitor_history=600000
        monitor_connect_interval=60000
        monitor_ping_interval=10000
        monitor_read_only_interval=1500
        monitor_read_only_timeout=500
        ping_interval_server_msec=120000
        ping_timeout_server=500
        commands_stats=true
        sessions_sort=true
        connect_retries_on_failure=10
}
mysql_servers =
(
)
mysql_users:
(
)
mysql_query_rules:
(
)
scheduler=
(
)
mysql_replication_hostgroups=
(
)

注意:黄色部分是修改后的
修改pid文件的路径,文件/etc/systemd/system/proxysql.service
PIDFile=/data/proxysql/proxysql.pid
注意:配置文件和服务文件的修改是将/var/lib/proxysql的目录不使用了,数据目录放到了/data目录下(pid也放到了这里),日志放到了/var/log下
须要提早建立好目录centos

mkdir /var/log/proxysql / /gwmfc/app/proxysql -p
chown -R proxysql.proxysql /var/log/proxysql /data/proxysql

启动服务缓存

systemctl enable proxysql
systemctl start proxysql

配置架构

在讲解配置时,先说一下配置层的架构(管理端口主要是更改配置的三层内容)
它一共由三层组成(runtime、memory、disk),以下图
proxysql-基础session

  • Runtime
    顾名思义:运行层,它是真正跟客户端交互层
    特色:不能直接改变,它由工做线程控制的内存数据结构。
    它共包含三种配置:global variables、组和后端服务列表、用户列表数据结构

  • MEMORY
    这一层:是放到内存的,它是可查看并编辑的,落地到数据表中
    经过更新表内容就能够实现MEMORY更新,重要表以下:
    mysql_servers---proxysql链接的后端服务
    mysql_users----链接proxysql使用的帐号和密码(这个就是链接后端的帐号密码)
    mysql_query_rules----查询规则列表(路由到不一样的后端服务),这些规则也能重写查询甚至缓存查询的结果。
    global_variables-----全局变量,随时能够调整(只有加载到runtime才会对工做线程生效)架构

  • Disk and config file
    磁盘:实际落地到sqlite3数据库中。目录是$(DATADIR)/proxysql.db
    config file:通常第一次启动时使用,后续不使用。第一次启动前须要更改点:数据目录/gwmfc/app/proxysql/。日志目录/var/log/proxysql/proxysql.log。管理员帐号密码更改成admin-sql:admin-sql;sys-sql:sys-sql ----弄俩帐号后面说具体缘由。版本号:根据后端进行更改,尽可能保持一致。监控帐号密码:monitor-sql:monitor-sql。其余统一去登陆管理端进行修改。

注意:变动内存中的数据后,须要加载到runtime和disk中,详见下面的文章管理端口里有详细方法。app

端口

proxysql-基础
6032:管理端端口
6033:应用链接端口

管理端口做用:用于以上6类大功能的配置
应用链接端口:用于应用程序的链接
这里重点述说一下管理端口配置

管理端口6032

登陆命令
$ mysql -u admin-sql –padmin-sql -h 127.0.0.1 -P6032 --prompt='Admin&gt; '
注意:mysql8.0.4及以上的客户端在登陆时,请添加--default-auth=mysql_native_password

更改帐号密码方式:它是以全局变量方式存储
set admin-admin_credentials = 'admin:admin;admin-psql:admin-psql';
#最好将admin帐号去掉,以防因proxysql有漏洞致使被黑
更改以后,执行以下命令:

load admin variables to runtime;
save admin variables to disk;

NOTE:变动后的配置须要加载到不一样的层,命令以下

  • [1] LOAD <item> FROM MEMORY / LOAD <item> TO RUNTIME
    将内存中的配置加载到runtime层
  • [2] SAVE <item> TO MEMORY / SAVE <item> FROM RUNTIME
    将runtime层的配置保存到内存中
  • [3] LOAD <item> TO MEMORY / LOAD <item> FROM DISK
    将磁盘中的配置加载到内存中
  • [4] SAVE <item> FROM MEMORY / SAVE <item> TO DISK
    将内存中的配置保存到磁盘中
  • [5] LOAD <item> FROM CONFIG
    将配置文件中的配置加载到内存中

注意:配置命令使用的是sqlite3的sql语法,跟mysql有些不同。例如:USE在sqlite3中没有

数据库

有main/disk/stats/monitor/myhgm共计5个库
各个库说明
main:内存配置库,执行的sql命令都是变动的它(除了save、load)。
disk:它是main的镜像。
stats:包含runtime层的metrics(proxysql内部功能收集的),好比每一个规则匹配的次数统计,当前运行的查询等等。
monitor:包含监控metrics(和所链接的后端服务有关),例如链接某一个后端服务的最大、最小时间(ping方式)
myhgm:这里不说,只有开启debug才有。
关于库中表的命令使用说明
注意:没法用desc和show columns查看表结构,只能经过show create(比较操蛋),例如查看mysql_servers表结构

管理端帐号

登陆帐号:默认是两个admin:admin(read&write) 和stats:stats(only read)
stats帐号用于监控(由admin-stats_credentials变量控制)
admin帐号用于配置(由admin-admin_credentials变量控制)
注意:
默认show tables;得到的结果是main库的全部表
如何查看库下有哪些表,例如查看stats库下有哪些表
admin&gt;show tables from stats;

配置后端服务

后端服务一共两个库(1主1从)
主库:10.50.133.58
从库:10.50.133.107
适用范围:mysql、mariadb数据库
两张表:mysql_servers和mysql_replication_hostgroups(可选)
命令:

load mysql servers to runtime;
save mysql servers to disk;

添加服务:
#添加主库
Admin&gt;insert into mysql_servers(hostname,comment) values('10.50.133.58','master');`<br/>#添加从库<br/>Admin>insert into mysql_servers(hostgroup_id,hostname,comment) values(1,'10.50.133.107','slave');`

相关文章
相关标签/搜索