sql >> Base de Datos >  >> RDS >> Mysql

Cómo implementar MySQL en Ubuntu y totalmente administrado

En esta publicación de blog, le mostraremos una guía paso a paso sobre cómo instalar y configurar un servidor MySQL tanto manualmente en el sistema operativo Ubuntu 20.04 como mediante el uso del servicio de base de datos administrada de ScaleGrid. En las siguientes secciones de este tutorial, lo ayudaremos a través de cada paso para configurar con éxito su propio servidor MySQL y configurarlo correctamente.

Un poco sobre MySQL y Ubuntu

MySQL es un sistema de gestión de bases de datos relacionales (DBMS) de código abierto. Se ejecuta en servidores Windows y Linux, y normalmente se instala como parte de la pila LAMP (Linux, Apache, MySQL, PHP/Python/Perl) o la pila LEMP (Linux, Nginx, MySQL, PHP). Es una opción adecuada si sabe que simplemente necesita una base de datos, ya que es un sistema basado en SQL rápido, simple y escalable y se considera el sistema de administración de bases de datos relacionales más popular.

Si bien Ubuntu es uno de los sistemas operativos de escritorio de código abierto más populares del mundo, Ubuntu 20.04 viene con estabilidad de clase empresarial, resiliencia e incluso mejor seguridad en un modelo rentable.

Cómo instalar MySQL en Ubuntu 20.04

Antes de profundizar en el proceso de instalación de un servidor MySQL en Ubuntu, tenga en cuenta estos requisitos previos:

  • Un servidor Ubuntu 20.04 con un administrador no raíz o un usuario sudo para realizar los pasos autorizados y un firewall configurado con UFW
  • El sistema debe actualizarse usando:
    • sudo apt update
    • sudo apt upgrade -y
  • Una conexión de red estable

Instalación nueva de MySQL en Ubuntu 20.04

Instalar MySQL

Para instalar MySQL en Ubuntu 20.04, se puede ejecutar un comando simple (apt install mysql server) ya que el paquete de instalación es parte del repositorio oficial de Ubuntu 20.04.

apt install mysql-server -y

Proteger la instalación del servidor MySQL

El servidor MySQL tiene un script preconstruido para su instalación segura. Como práctica común para hacer de esta una instalación segura, ejecute este script después del comando de instalación. Lo que hace es que le permite al usuario establecer la contraseña raíz para MySQL, deshabilitar la accesibilidad de la cuenta raíz desde fuera del host local, eliminar las cuentas de usuario anónimo y también eliminar la base de datos de prueba a la que pueden acceder los usuarios anónimos. Este script se puede invocar con este sudo comando:

sudo mysql_secure_installation

Aparece una serie de indicaciones después de ejecutar el script de instalación segura. El primer mensaje es configurar VALIDATE PASSWORD COMPONENT . Este aviso (si se selecciona) realizará la validación en la creación de la contraseña del usuario. Solo le permitirá crear la contraseña si coincide con los estándares de contraseña en MySQL.

Configuración de la contraseña de root

El siguiente mensaje es para configurar la contraseña para root. El usuario debe establecer esta contraseña. Responda a todas las solicitudes posteriores como "Sí", ya que esta es una práctica recomendada desde una perspectiva de seguridad.

Configuración de SSL para la instalación del servidor MySQL

Hay momentos después de instalar MySQL, cuando el servidor de la base de datos se configura en una máquina física separada, ya sea en la misma red o en una diferente. Para comunicarse con una base de datos de este tipo, la comunicación debe estar protegida y cifrada. Por lo tanto, los certificados SSL deben estar instalados y habilitados en el servidor de la base de datos. El protocolo SSL utiliza un par de claves para autenticar, asegurar y administrar conexiones seguras. Utilice el siguiente comando para generar claves SSL:

sudo mysql_ssl_rsa_setup --uid=mysql

Su directorio predeterminado contiene estas claves y puede encontrarlas invocando el siguiente comando:

sudo sudo find /var/lib/mysql -name '*.pem' -ls

mysql> \s

Al invocar el comando anterior desde el símbolo del sistema SQL, puede confirmar que SSL está activo buscando la fila que dice SSL: Cipher in use is […] , como se ve en la imagen de abajo.

Proteger su base de datos

La seguridad de la base de datos es uno de los elementos más críticos a considerar cuando se planea instalar MySQL. Los atacantes siempre buscan formas de acceder por la puerta trasera a los sistemas de bases de datos y obtener información privilegiada sobre el objetivo. Cambiar su puerto predeterminado es una manera fácil de aumentar la seguridad de su base de datos. Esto se puede cambiar en el archivo de configuración en /etc/mysql/mysql.conf.d/mysqld.cnf .

Crear un usuario y una base de datos MySQL

Al usar este comando simple, puede crear una cuenta de usuario de base de datos MySQL junto con su contraseña:

CREATE USER 'Username' @ 'localhost'  IDENTIFIED BY 'StrongPassword';

El campo localhost en el CREATE USER El comando indica que el usuario se conectará desde el mismo servidor. Se puede reemplazar por una dirección IP si desea conectarse desde una máquina con una dirección IP específica, o se puede reemplazar por un signo de porcentaje % si el usuario quiere acceder a la base de datos desde cualquier lugar.

Si solo desea crear una base de datos, puede crearla utilizando el siguiente comando:

CREATE DATABASE databasename;

Después de crear el usuario y la base de datos, se otorgarán al usuario los permisos necesarios para la base de datos.

Los permisos pueden ser de cualquier tipo; por ejemplo, CREATE , ALTER , INSERT , UPDATE , DELETE , SELECT , RELOAD , etc. Por lo general, el propietario de la base de datos necesita todos los permisos y estos permisos se pueden asignar de forma independiente a un usuario. Todos estos permisos se pueden otorgar a la vez usando el comando.

GRANT ALL PRIVILEGES ON databasename.tablename TO 'username' @ 'localhost';

Nuevamente, la palabra clave localhost se puede reemplazar con una dirección IP o con el % firmar, si el usuario tiene la intención de conectarse desde una dirección IP específica o cualquier otra fuente.

Los privilegios de un usuario se pueden ver a través del comando SHOW GRANTS

SHOW GRANTS for 'databaseuser'@'localhost';

Todos los privilegios se pueden revocar para un usuario usando el comando:

REVOKE ALL PRIVILEGES ON database.name.* FROM 'database.user'@'localhost';

Aquí puedes ver que después de ejecutar REVOKE comando, no hay privilegios para el usuario jason .

Creación y eliminación de tablas

Es fácil agregar o eliminar tablas de su base de datos. Todo lo que necesita hacer es usar uno de los siguientes comandos:

DROP TABLE databasename.tablename

CREATE TABLE databasename.tablename ( column1 datatype,column2 datatype ,column3 datatype);

El parámetro de columna especifica el nombre, mientras que el parámetro de tipo de datos especifica qué tipo de datos contiene la columna.

Hay momentos en que se debe agregar una clave principal a una columna. Una clave principal le permite identificar de forma única cada entrada en su tabla. Esto se puede hacer mencionándolo en CREATE TABLE dominio. El siguiente ejemplo crea una columna user_id con una clave principal que se incrementa automáticamente. Tenga en cuenta que la clave principal debe contener valores únicos y no puede contener valores nulos

Agregar o quitar columnas en una tabla

También se pueden agregar o eliminar columnas de una tabla específica de una base de datos después de su creación.

Para hacer eso, cambie la base de datos que desea modificar usando use database_name comando.

Posteriormente, los siguientes comandos agregarán y soltarán una columna:

ALTER TABLE tablename ADD columnname datatype;
ALTER TABLE tablename DROP columnname;

Insertar datos en una tabla

Inserte datos en una tabla usando el siguiente comando:

INSERT INTO tablename (column1,column2,column3) VALUES ('value1','value2','value3' );

Deberá especificar los nombres de las columnas y el valor que se insertará en cada columna en orden. Si desea insertar valores en cada columna de una tabla, simplemente puede omitir las columnas y comenzar a especificar los valores directamente después del nombre de la tabla:

INSERT INTO tablename VALUES ('value1','value2','value3' );

Update Data in a Table

Use el siguiente comando para actualizar los datos en una tabla:

UPDATE tablename SET columnname= 'newvalue'  WHERE columnname='value'

El WHERE condition indica en qué fila se deben actualizar los datos. Si no se especifica la condición, los datos se actualizan en todas las filas de la columna especificada.

Seleccionar datos de una tabla

Para seleccionar y ver datos de columnas particulares en una tabla, use el siguiente comando:

SELECT column1,column2 FROM tablename;

Sin embargo, para seleccionar todas las columnas de una tabla, el comando utilizado es:

SELECT * FROM tablename;

Habilitar registro binario

Habilitar el registro binario en el servidor de la base de datos MySQL le permite registrar las consultas que han realizado cambios en la base de datos. El registro binario es una característica útil que debe tener habilitada si, por ejemplo, necesita solucionar un problema causado por una consulta en la base de datos.

Para habilitar el registro binario, agregue la siguiente línea dentro del archivo de configuración en /etc/mysql/mysql.conf.d/mysqld.cnf .

log-bin=mysql-bin.log

Para confirmar si el registro binario está activo, invoque el siguiente comando desde el shell de MySQL:

show variables like  '% log_bin%'

De forma predeterminada, los archivos de registro binarios se almacenan dentro de /var/lib/mysql directorio en la mayoría de las distribuciones de Linux, incluido Ubuntu.

Configurar la replicación asincrónica simple

MySQL tiene soporte para la replicación, lo que resulta útil cuando se planifica la recuperación ante desastres y se asegura de minimizar el potencial de cualquier tiempo de inactividad. MySQL admite dos tipos de replicaciones:

  • Replicación semisincrónica
  • Replicación asíncrona

Con la replicación semisíncrona, cuando una fuente confirma una transacción, todas las réplicas también habrán confirmado la transacción antes de que la fuente regrese a la sesión que realizó la transacción. La desventaja es que provoca un gran retraso en la finalización de la transacción debido al sistema de transacciones antes mencionado.

Mientras que, con la replicación asíncrona, la fuente escribe eventos en su registro binario y las réplicas los solicitan cuando están listos. Sin embargo, no hay garantía de que algún evento llegue a alguna réplica.

De forma predeterminada, MySQL tiene habilitada la replicación asíncrona debido a su rápido tiempo de procesamiento. Aún así, el principal inconveniente es que si la base de datos de origen falla, no hay forma de recuperar los datos que no han completado las transacciones en las bases de datos de réplica. Por otro lado, el modo de replicación semisincrónica se enfoca más en la disponibilidad y durabilidad de los datos, pero es muy lento. La elección de un modo de replicación depende únicamente de las necesidades específicas del usuario en torno a la configuración de su base de datos.

Dentro del archivo my.cnf para el servidor de origen y el servidor de réplica, puede escribir las ID del servidor respectivamente como:

server_id=1
server_id=2

Se puede crear un usuario de MySQL dedicado en el servidor de origen, que será utilizado por la réplica para conectarse al servidor de origen.

GRANT REPLICATION SLAVE ON *.* TO ‘masterusername’ @ 'ipaddress of slave server'
→ IDENTIFIED BY ‘masterpassword’;

El proceso de replicación en el servidor de réplica puede iniciarse mediante:

mysql> CHANGE MASTER TO
-> MASTER_HOST='ip address',
-> MASTER_PORT=port number,
-> MASTER_USER='username',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='',
-> MASTER_LOG_POS=4;
mysql> start slave;

Estas instrucciones comenzarán a crear el servidor de réplica como una copia del servidor de origen.

Copia de seguridad/restauración de una base de datos MySQL

Mantener una copia de seguridad de su base de datos siempre es una buena idea, nunca se sabe cuándo podría necesitarla para asegurarse de que no se pierdan los datos críticos. Para hacer una copia de seguridad de una base de datos para MySQL en Ubuntu OS, simplemente ejecute el siguiente mysqldump comando:

sudo mysqldump -u root -p <database.name> > <filename.sql>

Para restaurar una base de datos eliminada, primero se crea la base de datos con el mismo nombre en MySQL. A continuación, la base de datos se restaura con el comando:

sudo mysql -u root -p <database.name> < <filename.sql>

La siguiente captura de pantalla primero elimina nuestra base de datos de prueba, luego la vuelve a crear e intenta restaurar todos sus datos desde la copia de seguridad creada anteriormente. La importación de datos también se puede realizar siguiendo el mismo proceso.

Conclusión sobre la instalación de MySQL en Ubuntu

Ahora ha completado con éxito los pasos básicos para instalar MySQL en Ubuntu 20.04. Después de completar la instalación, tendrá una base de datos relacional operativa que puede usar para crear su próxima aplicación o sitio web.

Si prefiere que todo este proceso sea automatizado y administrado por expertos, consulte la siguiente parte de esta guía.

Uso de ScaleGrid para configurar su implementación de MySQL de DigitalOcean

En esta parte de la guía, estamos utilizando nuestra solución de hosting MySQL totalmente administrada, ya que ofrece el mayor rendimiento y la menor latencia en DigitalOcean. Obtenga más información en el artículo Mejor rendimiento de MySQL DigitalOcean para comparar ScaleGrid con los precios, la latencia y el rendimiento del rendimiento de las bases de datos administradas de DigitalOcean.

Todo el proceso debería tomar menos de 20 minutos, con solo un par de minutos al principio para personalizar la configuración de implementación de MySQL y un par de minutos al final para conectarse a su aplicación .

Después de registrarse para obtener una cuenta de prueba gratuita, lo primero que debe hacer es seleccionar MySQL como su base de datos, DigitalOcean como su nube y Hosting dedicado como su plan para iniciar el proceso de creación del clúster:

Paso 1. Ingrese los detalles de implementación de MySQL

El asistente de creación de clústeres se abrirá en el primer paso donde puede personalizar los detalles básicos de su implementación. Ingrese un nombre para su clúster usando caracteres alfanuméricos y use un nombre único y descriptivo para que pueda reconocer fácilmente su clúster más adelante.

A continuación, seleccione el centro de datos de DigitalOcean que le gustaría usar para su servidor principal en el menú desplegable de la región de la nube. Recomendamos usar la misma región que sus aplicaciones DigitalOcean Droplets para obtener lo mejor actuación. Luego puede seleccionar el tamaño de su VM de las instancias de DigitalOcean Droplet y la versión de MySQL que desea usar (se admiten todas las versiones principales). InnoDB Storage Engine es el valor predeterminado para todas las implementaciones de MySQL. Haga clic en siguiente.

Paso 2. Habilitar la replicación maestro-esclavo

En el paso 2, puede habilitar la replicación maestro-esclavo de MySQL de DigitalOcean para agregar alta disponibilidad a su implementación. La replicación es importante para mantener su aplicación disponible y en línea para sus usuarios en caso de que la región de su centro de datos de DigitalOcean se caiga. Si bien DigitalOcean es un proveedor de nube altamente confiable con un tiempo de actividad del 99,99 %, los centros de datos inevitablemente se caen, por lo que replicar sus datos en ubicaciones de centros de datos adicionales le permite minimizar el riesgo de pérdida de datos y tiempo de inactividad para sus usuarios.

Si desea continuar con una implementación independiente, haga clic en Siguiente para continuar con el paso 3 sin habilitar la configuración maestro-esclavo.

Nota:la configuración maestro-esclavo solo está disponible para cuentas pagas, no puede configurar una implementación de conjunto de réplicas mientras está en modo de prueba.

Configurar la configuración maestro-esclavo de MySQL

Aquí hay un par de opciones para personalizar la configuración maestro-esclavo de MySQL. Primero, puede elegir entre 2 + 1 Quórum o 3 nodos para su implementación. Ambos ofrecen alta disponibilidad, pero en la configuración de Quórum 2 + 1, solo tiene 2 nodos que contienen datos, ya que el nodo de Quórum sirve como tomador de decisiones en un evento de conmutación por error. También puede ponerse en contacto con el soporte para personalizar su configuración maestro-esclavo para agregar más nodos a su implementación.

A continuación, puede elegir entre replicación semisincrónica y asincrónica. La replicación semisincrónica garantiza que al menos un esclavo haya recibido todos los datos que el maestro ha confirmado, lo que garantiza que la conmutación por error al esclavo correcto no tenga pérdidas. En la replicación asíncrona, cada esclavo se sincroniza de forma asíncrona con el maestro, por lo que la conmutación por error de maestro a esclavo puede resultar en una conmutación por error a un servidor que no está completamente sincronizado con el maestro actual.

Por último, personalice las ubicaciones de los centros de datos de DigitalOcean que desea usar para sus nodos esclavos. Una vez que haya terminado, haga clic en siguiente.

Cómo configurar MySQL en DigitalOceanClick To Tweet

Paso 3. Habilitar SSL

En el paso 3, puede habilitar SSL para su implementación. De forma predeterminada, el servidor MySQL siempre instala y habilita la configuración de SSL, pero no se exige que los clientes se conecten mediante SSL. Los clientes pueden elegir conectarse con o sin SSL ya que el servidor permite ambos tipos de conexiones. Obtenga más información sobre cómo configurar y administrar SSL en este tutorial de MySQL.

Paso 4. Configurar cortafuegos

En el último paso del proceso de creación del clúster, ingrese al menos un CIDR de IP al que se le permitirá acceder a su implementación de MySQL para configurar su regla de firewall. Puede encontrar su IP CIDR actual en la parte superior de la página. Estos se pueden personalizar más tarde tanto a nivel de clúster como a nivel de cuenta. Una vez que lo haya ingresado, haga clic en Agregar. Ingrese todos los CIDR de IP que desee y luego haga clic en Siguiente.

Paso 5. Revisar y crear

La última página proporciona un breve resumen de su nuevo clúster de MySQL DigitalOcean. Revise todos los detalles y haga clic en el botón Anterior para volver a un paso anterior y modificar sus configuraciones. Una vez que esté listo, haga clic en Crear para activar su clúster.

¡Y eso es todo! ¡Su implementación ahora se está aprovisionando! Esto toma alrededor de 15 minutos, así que mientras espera, puede familiarizarse con las herramientas de administración de MySQL en la consola:copias de seguridad, restauraciones, escalado, alertas, análisis de consultas, etc.

Conectar y migrar

Una vez que el estado del clúster cambie de "Creando" a "En ejecución", puede conectar su implementación. Hay un par de formas diferentes de hacer esto:a través de su cadena de conexión a su aplicación, a través de la línea de comandos, a través de WordPress, a través de MySQL Workbench u otras herramientas GUI populares. Todos los detalles de su conexión están disponibles en la mitad inferior de la pestaña Descripción general de la página de detalles de su clúster.

Visita las pestañas superiores para crear una base de datos MySQL y crear un usuario de base de datos MySQL. Se puede acceder a ellos y administrarlos en cualquier momento desde la consola de ScaleGrid.

Migra tu instalación de MySQL existente en minutos

La migración también es un proceso automatizado que requiere solo algunos detalles de su implementación existente. Haga clic en el botón Importar datos en la pestaña Descripción general e ingrese el Nombre del servidor, el Puerto, el(los) Nombre(s) de la base de datos, el Nombre de usuario y la Contraseña. Consulte nuestro documento de Migraciones de MySQL para obtener más detalles y opciones de migración adicionales.

¿Quiere probar MySQL en DigitalOcean usted mismo?

Pruebe ScaleGrid y configure MySQL en DigitalOcean con unos simples pasos utilizando nuestra versión de prueba completamente gratuita de 30 días. Automatice su alojamiento y gestión de MySQL en la nube con las funciones de gestión de bases de datos más potentes para optimizar su implementación.

Ejecutar su servidor MySQL en DigitalOcean

Una vez que esté listo y funcionando, su implementación de MySQL puede operar virtualmente en piloto automático. Dado que ScaleGrid es un servicio completamente administrado, nos encargamos de la administración y el mantenimiento diarios de sus bases de datos MySQL, para que pueda concentrarse en crear su aplicación. Si surge algo que requiere su atención, como quedarse sin espacio en disco, le enviaremos una notificación para que pueda iniciar sesión y ver si está listo para escalar su clúster.

También puede conectarse con nuestros expertos de MySQL en cualquier momento a través de nuestro soporte 24/7 para ayudarlo a configurar y solucionar problemas de su implementación.