Pooling connection to mysql database server from django application server - mysql

I am designing the backend of my ios application. The backend has separate database and application server running mysql and django separately in different machines. Till now, I have connected my application server with my database server in simple way: I changed the database host in application server settings to point to remore database server and created a new remote host in database server configuration files allowing remote application server to access the database. All works fine and I have decided to go with this setup for production. Then when I was reading Instagram engineering blog, I saw them mentioning 'Pgbouncer' to pool connection to their postgresql database server. What is the need for something like this? Has this got something to do with only performance, or is this a production friendly approach to use something like this for communication between database and application server. Is my general approach mentioned too amateur?

Your approach is not amateur at all. The purpose of bouncer in your case would be to eliminate connection time that happens on each request django handles. For example, on Heroku, which is hosted on AWS servers, this could eat up 40-50ms of each request.
Now, if you had a master/slave setup or something like that, a connection pool would also provide you a failover functionality (just an example)

Related

Connect a Flutter app to a MySQL database that's on a VM

For a school project, we want to create an app using flutter (dart + android studio), and for it we would need a database to which we connect the app.
We have two options :
A MySQL database that's hosted on our school's servers (on a Ubuntu VM, accessible from SSH with a host address, username an password)
Another MySQL database on our school's server, but hosted directly on a server for databases (no VM). For that one, we would have more 'common' logs as the host and port.
Here are the specs of the second one :
Linux Fedora Core 18 //
Apache/2.4.4 PHP/5.4.14 //
MySQL Community Server (GPL) 5.5.31 //
phpMyAdmin 3.5.8.1 (2013-04-24)
My question is, how can I access these sql databases (ideally using the second method) from my flutter app ? I know there's a way to access local MySQL databases from flutter, but as the base will be hosted on an external server, I don't know how to correctly connect and dialogue with it.
Thanks
I faced the same problem. The mysql1 package is not well maintained. Google Dart developers do not provide built-in support of RDBMS.
There is another package to work with mysql, maybe you can take a look. mysql_client
I think that the best solution is to create a restApi on your server to manage your crud operation with the mysql database. There are a lot of tutorials on how to create a node application that lives in your server and interact with your database.
This is also a good solution because you add a layer that manage all the back-end stuff of your application.

Redirect all the mysql requests to other DB server

I have a staging server on AWS where my web application is running.the application uses Dedicated Database server(mysql/linux) from other provider. i would like to spin a new server on a AWS that should act like a proxy server to connect with my Dedicated Database server.
please advise me how can i achieve.
You can proxy the traffic with HAproxy, you can have one DB in active mode and one in passive mode, when ready to cut over you take the active one offline and ha will start sending requests to the other DB server.
Additionally, HAproxy will allow you to send traffic to certain DB servers depending on a variety of criteria, like the source IP. So some web apps send to one DB and others send to another.
HA proxy is very lightweight, we use it and run hundreds of thousands of requests a day without any performance issues.
Take a look at MaxScale from MariaDB. it a DB proxy. the can do all this and more..
https://mariadb.com/products/mariadb-maxscale

Web server and MySQL server on different machines, causing latency on websites

I am currently running a virtualized environment for my web and db server. When I access the web server or the MySQL server individually, they are both fast. I also have websites running on the web server that do not require the db server and those all load quickly. However, when I access my hosted website that requires the web server to call from the db server, there is about a 5-7 second latency for every page load. This has been confirmed with both a very simple site and with a Word Press setup as well. Here is the config:
Web server - CentOS 6.5, Apache 2.2.15
DB server - CentOS 6.5, MySQL 5.1.73
My question is, are the servers continuously authenticating with one another (and thus causing latency) on every single db call? If that is the case, does anyone know how to permanently authenticate between the two?
I might be way off on this assumption and authentication could have nothing to do with it. I am completely open to any and all ideas at this point. Thank you very much.
V/R,
Tony
To me it seems to be a network issue.
and obviously the db-server will need authentication every time there is a hit.

Database application and remote MySql

I would like to create a desktop application that should work with data on a mySql server running on a remote machine.
So each user has a copy of the desktop app and edits data on the remote mySql server.
Now my problem is that the mySql server will not allow connections from other hosts.
Question, is this just the wrong way of creating the app. If not how do I give any host access to the MYsql server.
(I know I can open up for a specific IP but that won't work as the app could be running anywhere)
You should front your database on the server with a thin service layer, where you could do some validation / processing on the data, perform authentication, etc. Your client apps would then expose those methods in your service layer as web services, to which your client apps would communicate using either SOAP/XML, REST/JSON, etc. In general, it is a bad idea to expose your database directly if your application is within a LAN, and a terrible one to expose it on the internet.

How do I sync 2 MySQL databases?

I written a program to work with a MySQL database that powers my website and I have recently bought some reseller hosting however the hosting company has restricted external access on the shared server, so I was going to setup an external mySQL database on another server that can be accessed remotely, however to do this I need a PHP file on my reseller server that can connect to the local database and the remote database and sync them on request from the application via a url.
Does anyone know the best method achieve this?
Try using SQLyog's Database synchronization tool