从Docker Hub中拉取ProxySQL数据库中间件镜像的方法如下。
# 拉取最新的镜像[root]# docker pull proxysql/proxysql# 拉取指定版本的镜像[root]# docker pull proxysql/proxysql:2.0.7
可按需拉取最新或指定版本的ProxySQL镜像
例如,创建名为proxysql207_1的卷,用于保存持久化的配置数据,命令类似如下。
ProxySQL的配置虽然可以写成
.cnf
文件,但主要仍以SQLite3库的形式保存。为了避免容器异常后配置数据丢失,因此创建外挂卷以持久化配置。
[root]# docker volume create --name proxysql207_1
为了让ProxySQL能正常启动,且可以被远程配置,所以编辑如下配置文件(proxysql.cnf)。
datadir="/var/lib/proxysql"admin_variables={ admin_credentials="admin:admin;radmin:radmin" mysql_ifaces="0.0.0.0: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="5.5.30" connect_timeout_server=3000 monitor_username="monitor" monitor_password="monitor" 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}
例如,基于proxysql:2.0.7镜像,启动名为proxysql207_1的容器,命令类似如下。
[root]# docker run --name proxysql207_1 -p 60321:6032 -p 60331:6033 -v /home/sid/config/proxysql/proxysql.cnf:/etc/proxysql.cnf -v proxysql207_1:/var/lib/proxysql -d proxysql/proxysql:2.0.7
--name:指定了容器名称;
-p:指定了docker环境内外的端口映射关系。该示例中,将ProxySQL的管理端口(6032)及SQL端口(6033),分别映射至docker环境外的60321及60331端口上;
-v:指定了docker环境内外的存储映射关系。该示例中,将初始配置文件映射为/etc/proxysql.cnf
,作为ProxySQL初次启动的配置文件;同时,将名为proxysql207_1的docker volumn挂载至容器内的/var/lib/proxysql
目录下,从而实现配置持久化。注意:ProxySQL启动时,主要是从
DISK
库中读取配置加载到MEMORY
并最终加载到RUNTIME
生效。
注意:proxysql.cnf
配置文件的挂载应先于/var/lib/proxysql
目录的挂载,因为只有配置文件正确了,才能生成正确的配置数据库。
-d:在后台运行容器。
假设,ProxySQL的配置数据已经存于名为proxysql207_1的docker volumn内,则基于proxysql:2.0.7镜像,启动名为proxysql207_1的容器,命令类似如下。
[root]# docker run --name proxysql207_1 -p 60321:6032 -p 60331:6033 -v proxysql207_1:/var/lib/proxysql -d proxysql/proxysql:2.0.7
--name:指定了容器名称;
-p:指定了docker环境内外的端口映射关系。该示例中,将ProxySQL的管理端口(6032)及SQL端口(6033),分别映射至docker环境外的60321及60331端口上;
-v:指定了docker环境内外的存储映射关系。该示例中,无需再指定启动配置文件,只需将名为proxysql207_1的docker volumn挂载至容器内的/var/lib/proxysql
目录下,即可重用配置。注意:ProxySQL启动时,主要是从
DISK
库中读取配置加载到MEMORY
并最终加载到RUNTIME
生效。
-d:在后台运行容器。
当容器启动后,便可以如下命令,登陆ProxySQL管理端,按需进行配置。
[root]# mysql -h127.0.0.1 -P60321 -uradmin -pradmin --prompt "ProxySQL Admin>"