The MySQL proxy got some final touches to make it ready for the first release:

  • a command-line interface
  • some more mode descriptions for the different modes of operation

You can choose between three modes for now:

  • pseudo server
  • injection proxy

injection proxy

  • replication client

replication client

For the future we plan:

  • connection pooling

connection pooling

  • replication filtering and off-loading

replication off-loading

The options so far:

$ mysql-proxy --help
  --listen-port=<port>                  port the pseudo mysql-server should listen on in server-mode (default: 4040)
  --server-port=<port>                  port of the remote mysql-server in proxy- and reverse-mode (default: 3306)
  --server-ip=<ip>                      ip-address of the remote mysql-server in proxy- and reverse-mode (default: 127.0.0.1)
  --replication-user=<user>             user-account for remote mysql-server in reverse-mode (default: 'repl')
  --replication-password=<password>     user-password remote mysql-server in reverse-mode (default: not set)
  --mode=<server|proxy|reverse>         operation mode
  --inject-show-status                  inject SHOW SESSION STATUS in proxy-mode
  --inject-explain                      inject EXPLAIN in proxy-mode
  --dump-show-status                    dump the SHOW SESSION STATUS diff to a file instead of stdout
  --fix-bug-25371                       fix bug #25371 (mysqld > 5.1.12) for older libmysql versions

Source and documentation are available on http://jan.kneschke.de/projects/mysql/mysql-proxy

8 Responses to “MySQL Proxy, reverse mode + source”

  1. Mazdak Rezvani Says:
    The link to the .c file is dead! Thanks
  2. Juan J. Natera Says:
    I would like to try this out, but the link to the source file seems to be broken.
  3. Benjamin Bender Says:
    Hi, this project sounds very cool :) I would also love to try it, but... see the other comments :) Wouldn't it be a good idea to get a "replication-assistance"-mode, where the proxy decides which queries are read-only to send them to a pool of slave-servers and the write-ones to the master. This would reduce the need of rewriting parts of an application in case you have to head over from a single-server-solution onto a replication-based one. Would love to hear your thoughts on that topic. Cheers, Ben
  4. Rince Says:
    Hi, I just wanted to say I'd love to test this for my systems - maybe I can find some bottlenecks here ;) But since the links are broken(yet?) I'll wait for them and hope they'll appear someday. Thanks in advance for this interesting project!
  5. Matthew Says:
    I am itching to get my hands on this, it looks like it could have huge potential... I already have a million and one uses for such a beast and can't wait to give it a spin... but, as others have pointed out... err, link...
  6. Sekou Abodunrin Says:
    This promises to be revolutionary for mysql, but where is download link?
  7. Yaznar Says:
    When i read the documentation, i think it's a very good project, but i can't found the link for download it ...
  8. mike503 Says:
    this is something almost exactly what i had envisioned. i tried to reverse engineer the mysql code and create a middle layer in PHP (since i don't know C) but could not get the weird packed strings and stuff to work for the initial authentication (weak...) but a native C-based (or CPP if it had to be) solution to compete with continuent's uni/cluster (java nowadays with a horribly complex setup) solution, or mysql replication (inherently flawed imho, requires downtime to resync slaves, too fragile, no auto-recovery), or mysql cluster (promising, i suppose) i suppose XA would need to be involved before it could be used with N number of independent servers all using the same data, but storing it separately (complete scale-out option, just plug in a server and go) - if you could get something going like that, you would be a god amongst mortals... (eventually perhaps it could integrate some sort of cache in it too (i.e. memcache), since theoretically the proxy will know when any data changes (?) - could intelligently cache some things i suppose? :)) keep up the good work. lighty seems cool, i've used it here and there, i want to use it more but i'm stuck supporting some sub-standard websites that won't function properly under it (don't ask...) - this could help solve my mysql scaling desire (my only other option right now is piloting mysql cluster...)

Sorry, comments are closed for this article.