LeztherRokk
Posts: 3
Joined: Wed Jul 26, 2017 4:17 pm

Raspberry Pi Servidor de Base de Datos

Wed Jul 26, 2017 5:05 pm

Hola, buenas.
Necesito algo de ayuda, o alguien que pueda orientarme, estoy realizando un proyecto, un sistema con el lenguaje C#, en mi PC con Windows hago funcionar la base de datos con SQL 2016 para hacer consultas, modificar campos, insertar, etc, pero lo que necesito es tener la base de datos almacenada remotamente en una Raspberry Pi 3, porque más de una computadora tendrá instalado el dicho sistema, ahora bien, ¿hay alguna forma de instalar SQL en una raspberry pi? de lo contrario, ¿Cómo podría configurar la raspberry pi para usar MySQL, exportar la base de datos o bien crearla desde ahí y hacer las consultas anteriormente mencionadas remotamente? Lo que me preocupa un poco es la cadena de conexión que tengo que usar en mi sistema para conectar a la base de datos, nunca he hecho esto antes y espero y puedan orientarme un poco. Gracias de antemano

raspdroid
Posts: 1626
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: Raspberry Pi Servidor de Base de Datos

Wed Jul 26, 2017 10:47 pm

Caminos hay varios pero podrías probar con el conector JDBC o ODBC en C#

https://dev.mysql.com/downloads/connector/

User avatar
elmapache
Posts: 16
Joined: Fri Jul 21, 2017 2:51 pm

Re: Raspberry Pi Servidor de Base de Datos

Thu Jul 27, 2017 1:39 pm

Hola, no sé si he entendido bien lo que quieres, ¿sería instalar un servidor de bases de datos SQL en la Raspberry Pi al que acceder remotamente? si es así, puedes usar MariaDB, que está en los repositorios oficiales de Raspbian, y luego abrir el puerto 3306 (TCP) para la IP o IPs que vayan a acceder. Si quieres acceder remotamente desde la Raspberry a un servidor SQL instala MariaDB y usa el cliente 'mysql' que viene incluído.

Ten en cuenta que MariaDB no es 100% compatible con MySQL, por lo que a lo mejor te interesa más instalar MySQL (no sé si está disponible en Raspbian).

Como ejemplo aquí te pongo el setup que realicé para configurar una base de datos para Owncloud en la Raspberry Pi 3, después de instalar el paquete mariadb con apt-get. He cambiado 'localhost' por '%' para indicar que puedan conectar desde cualquier host; esto puedes adaptarlo para una IP específica, y no sustituye configurar también el firewall, siendo recomendable una configuración de denegación por defecto.

Code: Select all

# mysql_secure_installation
Enter current password for root (enter for none): Enter
Set root password? [Y/n] Enter 
Remove anonymous users? [Y/n] Enter
Disallow root login remotely? [Y/n] Enter
Remove test database and access to it? [Y/n] Enter
Reload privilege tables now? [Y/n] Enter

# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.1.19-MariaDB FreeBSD Ports

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database owncloud;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create user 'owncloud'@'%' identified by 'Cpn4aB~]ODeW^';
Query OK, 0 rows affected (0.00 sec)

ariaDB [(none)]> grant all privileges on owncloud.* to 'owncloud'@'%';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye
Placa: Raspberry Pi 3 Model B.
Sistema operativo: OpenBSD 6.2.

LeztherRokk
Posts: 3
Joined: Wed Jul 26, 2017 4:17 pm

Re: Raspberry Pi Servidor de Base de Datos

Thu Jul 27, 2017 2:56 pm

raspdroid wrote:
Wed Jul 26, 2017 10:47 pm
Caminos hay varios pero podrías probar con el conector JDBC o ODBC en C#

https://dev.mysql.com/downloads/connector/
Gracias! Lo checaré para ver si me puede servir :)

LeztherRokk
Posts: 3
Joined: Wed Jul 26, 2017 4:17 pm

Re: Raspberry Pi Servidor de Base de Datos

Thu Jul 27, 2017 2:58 pm

elmapache wrote:
Thu Jul 27, 2017 1:39 pm
Hola, no sé si he entendido bien lo que quieres, ¿sería instalar un servidor de bases de datos SQL en la Raspberry Pi al que acceder remotamente? si es así, puedes usar MariaDB, que está en los repositorios oficiales de Raspbian, y luego abrir el puerto 3306 (TCP) para la IP o IPs que vayan a acceder. Si quieres acceder remotamente desde la Raspberry a un servidor SQL instala MariaDB y usa el cliente 'mysql' que viene incluído.

Ten en cuenta que MariaDB no es 100% compatible con MySQL, por lo que a lo mejor te interesa más instalar MySQL (no sé si está disponible en Raspbian).

Como ejemplo aquí te pongo el setup que realicé para configurar una base de datos para Owncloud en la Raspberry Pi 3, después de instalar el paquete mariadb con apt-get. He cambiado 'localhost' por '%' para indicar que puedan conectar desde cualquier host; esto puedes adaptarlo para una IP específica, y no sustituye configurar también el firewall, siendo recomendable una configuración de denegación por defecto.

Code: Select all

# mysql_secure_installation
Enter current password for root (enter for none): Enter
Set root password? [Y/n] Enter 
Remove anonymous users? [Y/n] Enter
Disallow root login remotely? [Y/n] Enter
Remove test database and access to it? [Y/n] Enter
Reload privilege tables now? [Y/n] Enter

# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.1.19-MariaDB FreeBSD Ports

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database owncloud;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create user 'owncloud'@'%' identified by 'Cpn4aB~]ODeW^';
Query OK, 0 rows affected (0.00 sec)

ariaDB [(none)]> grant all privileges on owncloud.* to 'owncloud'@'%';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye
Si, es lo que quiero, usar la rasberry pi para que otros equipos se conecten y consulten la base de datos instalada en la raspberry, desconocía MariaDB, haré pruebas para ver si me funciona con el sistema que tengo en desarrollo en C#. Muchísimas gracias!

User avatar
elmapache
Posts: 16
Joined: Fri Jul 21, 2017 2:51 pm

Re: Raspberry Pi Servidor de Base de Datos

Thu Jul 27, 2017 3:47 pm

MariaDB es un proyecto de los desarrolladores originales de MySQL y es más eficiente, En el 99.9% de las aplicaciones será compatible con MySQL, de hecho se anuncia como un reemplazo.

Una vez tengas la base de datos funcionando en la Raspberry prueba a conectar desde el cliente de esta forma (1.2.3.4 sería la IP de la Raspberry):

Code: Select all

mysql -u usuario -p contraseña -h 1.2.3.4
Recuerda cambiar el valor de bind-address de 127.0.0.1 a la IP de red de la Raspberry y reiniciar MariaDB.

Si tienes alguna duda pregunta. Saludos!
Last edited by elmapache on Thu Jul 27, 2017 10:04 pm, edited 1 time in total.
Placa: Raspberry Pi 3 Model B.
Sistema operativo: OpenBSD 6.2.

raspdroid
Posts: 1626
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: Raspberry Pi Servidor de Base de Datos

Thu Jul 27, 2017 5:56 pm

MariaDB es un poco más rápido pero yo le usado en servidores web y apenas noto la diferencia y recuerdo que tuve algunos problemillas con MaribaDB por lo que terminé instalando MySQL. Sin embargo parece que es el futuro pero no creo que sea por rendimiento, lo más problable que por algo de licencias.

Sobre lo del conector en MariaDB también está.

https://mariadb.com/resources/blog/mari ... erformance
CONCLUSION

MariaDB driver rocks !

The binary protocol has different advantages but relies on having the PREPARE results already in cache. If applications have a lot of different kind of queries and database is distant, that may not be the better solution.

Rewrite has amazing results to write data in batch

Driver holds well versus other drivers. And there is much to come, but that's another story.
Saludos

User avatar
elmapache
Posts: 16
Joined: Fri Jul 21, 2017 2:51 pm

Re: Raspberry Pi Servidor de Base de Datos

Thu Jul 27, 2017 7:39 pm

Yo también lo he usado para web (concretamente foros) y noté un mejor rendimiento, MariaDB nunca me dió ningún problema.

Otro aspecto a tener en cuenta para mejorar el rendimiento es usar junto a la base de datos un motor de bases de datos en memoria como Redis o Memcached. He probado ambos y, aunque son muy buenos los dos, me quedo con Redis que tiene opción de persistencia.
Placa: Raspberry Pi 3 Model B.
Sistema operativo: OpenBSD 6.2.

raspdroid
Posts: 1626
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: Raspberry Pi Servidor de Base de Datos

Fri Jul 28, 2017 6:45 pm

Sin un benchmark yo no noté diferencia. Lo cierto es que es algo lento (tanto cuando solicitas una página como si haces algún test de velocidad como el de Google, etc) yo al final cambié todas las raspberries por un Intel. Y lo peor de todo fue separar el servidor web de mysql, es más rápido si mysql está en local.

A mí si me dio problemas con un tutorial de howtogorge, pero bueno creo que es cuestión de madurez, lo mismo pasa o pasaba con apache y nginx o con gnu/linux, hace años las distros no eran tan estables como ahora ni tenían tantos programas,drivers etc...

Además de memcached también hay tener en cuenta que mientras el visitante esté en tu país, servirá la página más o menos bien pero como el visitante sea de USA o China sí o sí hay que usar un CDN.

Saludos

User avatar
elmapache
Posts: 16
Joined: Fri Jul 21, 2017 2:51 pm

Re: Raspberry Pi Servidor de Base de Datos

Sat Jul 29, 2017 6:46 am

Yo noté la mejora de rendimiento al pasar de MySQL a MariaDB en un servidor VPS, no en una Raspberry. Yo creo que el cuello de botella tiene que ver sobre todo con la velocidad de la tarjeta MicroSD.

Puede ser una buena idea para mejorar el rendimiento instalar Raspbian en un disco duro externo. Aquí comentan que rinde mejor de esta forma para escribir muchos archivos pequeños: viewtopic.php?f=62&t=83346

Aquí explican el proceso:

https://learn.adafruit.com/external-dri ... t/overview
viewtopic.php?f=29&t=44177

Ya que se trata de un servidor, otra opción a considerar es usar el sistema operativo OpenBSD que soporta la RPi 3 (salvo Wifi y salida HDMI) y se instala en un pendrive o disco USB, aunque para arm64 aún no hay paquetes precompilados oficiales por lo que tendrás que compilar.

Sobre motores de objetos en memoria: hice una prueba con Wordpress (ya que es una aplicación lenta) y el número de consultas para cargar la página principal era de 32. Usando redis, y tras la primera consulta, el número de consultas se redujo a 5.
Placa: Raspberry Pi 3 Model B.
Sistema operativo: OpenBSD 6.2.

Return to “Español”