Bootstrap Mode
Bootstrap模式允许用户十分容易得去对组复制集群配置proxy SQL,自动执行很多常规的配置步骤,否则需要配置手动配置。并且提供了命令行选项,允许自定义这个过程。
自动配置概览
当使用--bootstrap模式的时候,会自动配置如下内容:
- 自动从用于bootstrap的MySQL server中进行匹配的如下:
bash
mysql-servre_version
mysql-default_charset
mysql-default_collation_connection
mysql_servers
mysql_users
- mysql-have_ssl:使用bootstrap模式启动的时候允许设置为yes
- mysql-interfaces:给MySQL router配置相同的端口(RW读写端口6446,RO只读端口6447)
- mysql-monior_username:这取决于命令行的参数,但是默认情况下会随即创建
- mysql-monitor_password:这取决于命令行的参数,但是默认情况下会随即创建
- mysql_group_replication_hostgroups:这个配置会类似于MySQL router
- mysql_hostgroups_attributes:会分别为RW和RO各创建一个数据记录,共计两个记录。
- mysql_query_rules:基于端口的读写分离,生成RW端口和RO端口,类似于MySQL router的实现方式。
注意
mysql_users:
在bootstrap期间,proxy SQL会从目标(后端数据库)server匹配已配置的server信息(个人理解就是bootstrap时会给一个用户,使用这个用户连接上后端数据库之后,在数据库中可以查到其他的用户,从库的IP等信息),但是出于安全原因,排除了以下模式的用户:
- mysql.%
- root
- bt_proxysql_%
符合bt_proxysql_%模式的用户被认为是在bootstrap处理期间创建的proxy SQL用户。
mysql_query_rules:
请注意默认的读写分离配置是非常简单的,在很多的场景下不建议使用,并且proxy SQL支持更多的更详细的路由控制。默认的读写分离是出于兼容性的一些原因而提供的,并且他是配置的起点(用户以此为基础,可以进行更复杂的自定义配置)。关于如何使用--bootstrap配置自己的查询规则,请参考https://www.proxysql.com/documentation/proxysql-bootstrap-mode#configuration-precedence
命令行选项
如下信息也可以通过--help来获取:
| 参数名 | 参数完整名称 | 参数含义 |
|---|---|---|
| -B, | --bootstrap ARG | Group Replication 以bootstrap模式启动proxy SQL。需要给bootstrap的server提供一个指定的URI去创建一个连接 |
| -d, | --directory ARG | Datadir 数据路径 |
| --account | ARG | 在bootstrap之后用来进行监控的账号,这个账号可以是重用(reuses)指定的某个账号(已存在的某个账号)或者是创建一个新的。是否创建账号通过'--acount-create'参数来控制,当新创建一个用户的时候,必须提供密码 |
| --account-create | ARG | bootstrap时的用户创建策略,可能会有如下值: 1.if-not-exists(默认):如果这个用户不存在,则进行创建,如果存在就直接用 2.always:仅当账户不存在且能成功创建时才引导;如果账户已存在,则失败 3.never:仅当账户已存在时才引导;如果账户不存在,则失败 |
| --account-host | ARG | 在bootstrap引导期间,host被用来创建用户比如(username@host),该选项还未实现 |
| --conf-base-port | ARG | 对基于端口配置的读写分离,配置默认的基准端口(mysql-interfaces),比如--conf-base-port=6433,那么写端口就是6433,bane读端口就是这个基准端口+1,也就是6434 |
| --conf-bind-address | ARG | 与'--conf-bind-port''一起使用,设置默认绑定的(IP)地址('mysql-interfaces'). |
| --conf-skip-tcp | ARG | 官方文档的此处应该是写错了,这意味着你无法通过网络(IP地址)连接 ProxySQL。加上这个参数后,ProxySQL 不会打开 6446、6447 或任何其他 TCP 端口。纯 Socket 模式:当你只打算使用 --conf-use-sockets(Unix Domain Socket)在本地进行通信时,为了安全(减少攻击面)或避免端口冲突,你会加上这个参数来关闭 TCP.该解释来自于千问(有点类似于MySQL Router) |
| --conf-use-sockets | ARG | bootstrap引导选项,配置两个unix sockets,一个是mysql.sock,写socket。另一个是mysqlro.sock,这个是读socket。 |
| --password-retries | ARG | 在bootstrap引导创建用户期间,尝试生成密码的次数 |
| --ssl-ca | ARG | CA证书文件的路径名,必须和server服务端指定的服务名是一致的 |
| --ssl-capath | arg | 包含可可信的sslca证书文件的路径名 |
| --ssl-cert | arg | 客户端公钥证书文件的路径名 |
| --ssl-cipher | arg | 允许使用的加密套件(加密算法)列表(Cipher List)。 |
| --ssl-crl | arg | 证书吊销列表(Certificate Revocation List)的文件路径。防止失效证书被用:即使一个证书是由合法 CA 签发的,如果它被泄露或过期了,CA 会将其加入 CRL。ProxySQL 检查这个列表,确保不会连接到使用了"黑名单证书"的 MySQL 服务器。 |
| --ssl-crlpath | arg | 包含吊销列表文件的目录路径 |
| --ssl-key | arg | 客户端(ProxySQL)的私钥文件路径,解密与签名:配合 --ssl-cert 使用。私钥必须保密,它用于证明 ProxySQL 确实拥有 --ssl-cert 这个证书。 |
| --ssl-mode | arg | 定义 ProxySQL 在连接后端 MySQL 时的 SSL 行为策略。 支持的值(在 bootstrap 模式下) * REFERRED(默认):"尽力而为"。ProxySQL 会优先尝试用 SSL 连接。如果后端 MySQL 支持 SSL,就用 SSL;如果不支持,就自动降级为明文连接。 * DISABLED:"不用 SSL"。强制不使用 SSL,即使后端支持也只用明文连接。 |
额外配置说明:
-B, --bootstrap ARG:
提供给这个配置选项的URI,需要使用如下格式的表达式:
bash
[scheme://][user[:[password]]@]host[:port]
MySQL文档中关于所支持的URI格式所述,原始表达式为
bash
[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...