• 售前

  • 售后

热门帖子
入门百科

如何利用nginx充当mysql的负载平衡器

[复制链接]
启东1 显示全部楼层 发表于 2021-10-26 13:54:28 |阅读模式 打印 上一主题 下一主题
说明:nginx版本要求是1.9以上 ,编译nginx的时候必要加上 --with-stream

如:
  1. ./configure --prefix=/Data/apps/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-stream
复制代码
留意

1.因为mysql默认使用了3306端口以是设置nginx tcp反向署理mysql的时候留意端口不要与mysql监听的端口一样比如我使用的是3307

2.确保能root用户能长途连接mysql

如数据库mysql 表user

nginx.conf

此段代码追加在nginx.conf文件末了,留意不能加在http{}内
  1. stream{
  2. include /Data/apps/nginx/conf/stream/*.conf;
  3. }
复制代码
stream/db.conf
  1. server {
  2. listen 3307; #注意端口不能跟mysql监听的一样
  3. proxy_pass db;
  4. }
  5. upstream db {
  6. server 127.0.0.1:3306;
  7. server 192.168.233.1:3306;
  8. }
复制代码
重启nginx, 检察nginx是否监听了3307端口

然后php代码是如许子
  1. #其实就是new mysqli的时候只需改端口号与nginx反向代理设置的端口号一样就可以了
  2. $mysqli = new mysqli('127.0.0.1','root','root','test',3307);
复制代码
完整的php代码
  1. <?php
  2. class MysqlClass
  3. {
  4. private static $obj = NULL; //mysqlclass对象
  5. public $host;
  6. public $database;
  7. public $user;
  8. public $pwd;
  9. public $port;
  10. public $mysqli = NULL;
  11. //禁止对象被克隆
  12. private function __clone(){}
  13. //禁止外部实例化
  14. private function __construct($host="127.0.0.1",$database="test",$user="root",$pwd="root",$port="3307")
  15. {
  16. $this->host = $host;
  17. $this->database = $database;
  18. $this->user = $user;
  19. $this->pwd = $pwd;
  20. $this->port = $port;
  21. $this->mysqli = $this->db_connect();
  22. }
  23. //获取mysqli连接
  24. private function db_connect()
  25. {
  26. $mysqli = new mysqli($this->host,$this->user,$this->pwd,$this->database,$this->port);
  27. if($mysqli->connect_errno)
  28. {
  29. printf("Connect failed: %s\n", $mysqli->connect_errno);
  30. exit();
  31. }
  32. $mysqli->query("set names utf8 ");
  33. return $mysqli;
  34. }
  35. //获取db实例
  36. public static function get_db()
  37. {
  38. if(self::$obj === NULL)
  39. {
  40. self::$obj = new self();
  41. }
  42. return self::$obj;
  43. }
  44. public function db_query($sql)
  45. {
  46. $result = $this->mysqli->query($sql);
  47. $arr = [];
  48. while ($row = $result->fetch_assoc()) {
  49. $arr[] = $row;
  50. }
  51. $result->close();
  52. $this->mysqli->close();
  53. return $arr;
  54. }
  55. public function db_insert()
  56. {
  57. }
  58. public function db_update()
  59. {
  60. }
  61. public function __destruct() {
  62. $this->mysqli->close();
  63. }
  64. }
  65. $db = MysqlClass::get_db();
  66. $r = $db->db_query("show tables");
  67. var_dump($r);
复制代码
效果


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作