简单配置 MySQL 代理

前言

  • 从运维的角度看,代理服务器在日常的开发、运维、运营中起到了非常重要的作用,它可以起到隔离,保护内网的作用,又或者帮助我们以更优网路实现计算机互联。今天恰好在工作中需要配置一台代理服务器,准确的说是 MySQL 代理服务器。

nginx 配置代理

  • nginx 在 web 领域具有独一无二的地位,它在我们的日常开发中有着非常强大的作用。此次配置 MySQL 代理就是基于 nginx 进行配置。

配置文件

  • 和配置 nginx 的 vhost 不同,代理的配置不是在 vhost 中配置的,当然只要你在 nginx.conf 中写好 include,我们可以很方便的在某个文件夹中增加代理配置文件,就像配置 vhost 一样简单方便。
  • 代理的配置需要和 nginx.conf 配置文件中的 http 节点平级
  • 因此,我们先建立好文件夹 nginxProxy,位于和 vhost目录平级
  • 然后,我们在 nginx.conf 中的最后追加 include /www/server/panel/nginxProxy/*.proxy;,看实际情况,理论上你可以将其放在你想放的任何目录。
  • 然后,建立代理配置文件test_mysql.proxy
stream {
    upstream mysql {
        server 10.10.10.50:3306 max_fails=3 fail_timeout=5s;
    }   
    server {
        listen 3010;
        proxy_connect_timeout 30s;
        proxy_timeout 600s;
        proxy_pass mysql;
    }   
}
  • 然后,在命令行下输入 nginx -t 检测配置语法是否正确。
  • 没问题的话,就表示配置成功。接下来验证代理的可用性。

验证代理

  • 假如配置的服务器 ip 是 10.10.10.49,上面的配置文件中,表示 当访问 10.10.10.493010 端口时,就将请求转发到 10.10.10.50 服务器的 3306 端口。我们通过 MySQL 客户端连接远程的代理,从而达到连接 MySQL 服务的目的。
  • 只需要在你本地使用 MySQL 客户端即可:mysql -h 10.10.10.49 -P 3010 -u repl -p,然后输入数据库用户 repl 对应的密码即可进行连接。
  • 如果出现报错,可以通过谷歌搜索进行排查。

QA

提示 ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server

  • 提示这个错误是因为,数据库服务器没有给予客户端权限,需要给客户端所在 ip 对应的权限。
grant replication slave on *.* to 'repl'@'xxx.xxx.xxx.xxx' identified by '80eb5d934c';
flush privileges;

参考资料

  • https://my.oschina.net/gzheng/blog/844866

你可能感兴趣的:(简单配置 MySQL 代理)