Mostrando entradas con la etiqueta MySQL Sandbox. Mostrar todas las entradas
Mostrando entradas con la etiqueta MySQL Sandbox. Mostrar todas las entradas

domingo, 15 de marzo de 2020

MySQL y Dockers ... una configuración simple

MySQL y Dockers ... no son conceptos nuevos, la gente se ha mudado a Dockers desde hace algún tiempo. Para alguien que solo se está moviendo hacia esto para el desarrollo, puede tener algunos obstáculos.

Si bien MySQL funciona bien localmente, si está probando código en diferentes versiones de MySQL, es bueno tener varias versiones fácilmente disponibles.

Una opción durante años ha sido, por supuesto, https://mysqlsandbox.net/ de Giuseppe Maxia. Esta es una solución muy válida para poder obtener varias instancias y probar la replicación, etc.

Los Dockers ahora también son otro escenario de uso frecuente cuando se trata de probar en diferentes versiones de MySQL. A continuación se detallan algunos de los pasos para instalar fácilmente varias versiones. Yo uso OSX, así que estos ejemplos son para OSX.

Necesita Docker para comenzar y, por supuesto, Docker Desktop es una herramienta útil para que pueda acceder fácilmente.

Una vez que configuré Docker, puedo preparar mi entorno para MySQL.

Aquí creé una carpeta Docker que contiene los directorios de datos MySQL, los archivos de configuración y el directorio de archivos mysql si lo necesitaba.

mkdir ~/Docker ;

mkdir ~/Docker/mysql_data;
mkdir ~/Docker/mysql-files;
mkdir ~ / Docker / cnf;

Ahora dentro de mysql_data


cd ~/Docker/mysql_data;
mkdir 8.0;
mkdir 5.7;
mkdir 5.6;
mkdir 5.5;


Ahora configuro archivos cnf simples para este ejemplo. Lo principal a tener en cuenta es la dirección de enlace. Esto está configurado para garantizar que esté abierto para que podamos llegar a MySQL fuera del docker. También puede observar que estos archivos se pueden usar para configurar información de configuración adicional como mejor le parezca por instancia de Docker de MySQL.



cd ~/Docker/cnf;

cat my.8.0.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= /var/lib/mysql-files
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
bind-address = 0.0.0.0
port=3306
server-id=80


# Custom config should go here
!includedir /etc/mysql/conf.d/

cat my.5.7.cnf
[mysqld]
bind-address = 0.0.0.0
server-id=57
max_allowed_packet=32M

$ cat my.5.6.cnf
[mysqld]
bind-address = 0.0.0.0
server-id=56

$ cat my.5.5.cnf
[mysqld]
bind-address = 0.0.0.0
server-id=55


Bien, ahora que tenemos configurados los archivos de configuración, necesitamos construir los acopladores. Algunas cosas a tener en cuenta para los comandos de compilación.

--name Establecimos una referencia con nombre para la ventana acoplable.

Aquí estamos asignando los archivos de configuración, el directorio de datos y los directorios de archivos mysql al docker. Esto nos permite ajustar el archivo my.cnf y etc. fácilmente.
-v ~ / Docker / cnf / my.8.0.cnf: /etc/mysql/my.cnf
-v ~ / Docker / mysql_data / 8.0: / var / lib / mysql
-v ~ / Docker / mysql-files: / var / lib / mysql-files

Queremos poder llegar a estas instancias de MySQL fuera del docker, por lo que debemos publicar y asignar el puerto en consecuencia.
-p 3306: 3306 Esto significa 3306 local a 3306 dentro de la ventana acoplable
-p 3307: 3306 Esto significa 3307 local a 3306 dentro de la ventana acoplable
-p 3308: 3306 Esto significa 3308 local a 3306 dentro de la ventana acoplable
-p 3309: 3306 Esto significa 3309 local a 3306 dentro de la ventana acoplable

Luego también pasamos un par de variables de entorno.
-e MYSQL_ROOT_HOST =% -e MYSQL_ROOT_PASSWORD = <establezca una contraseña aquí>

Poniendo todo junto ...


docker run --restart always --name mysql8.0 -v ~/Docker/cnf/my.8.0.cnf:/etc/mysql/my.cnf -v ~/Docker/mysql_data/8.0:/var/lib/mysql -v ~/Docker/mysql-files:/var/lib/mysql-files -p 3306:3306 -d -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=<set a password here> mysql:8.0

docker run --restart always --name mysql5.7 -v ~/Docker/cnf/my.5.7.cnf:/etc/mysql/my.cnf -v ~/Docker/mysql_data/5.7:/var/lib/mysql -v ~/Docker/mysql-files:/var/lib/mysql-files -p 3307:3306 -d -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=<set a password here> mysql:5.7

docker run --restart always --name mysql5.6 -v ~/Docker/cnf/my.5.6.cnf:/etc/mysql/my.cnf -v ~/Docker/mysql_data/5.6:/var/lib/mysql -v ~/Docker/mysql-files:/var/lib/mysql-files -p 3308:3306 -d -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=<set a password here> mysql:5.6

docker run --restart always --name mysql5.5 -v ~/Docker/cnf/my.5.5.cnf:/etc/mysql/my.cnf -v ~/Docker/mysql_data/5.5:/var/lib/mysql -v ~/Docker/mysql-files:/var/lib/mysql-files -p 3309:3306 -d -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=<set a password here> mysql:5.5

Después de cada ejecución de los comandos anteriores, debe obtener una identificación devuelta.
ejemplo: 3cb07d7c21476fbf298648986208f3429ec664167d8eef7fed17bf9ee3ce6316

Puede iniciar / reiniciar y acceder a cada terminal acoplable fácilmente a través del escritorio de Docker o simplemente tomar nota de las ID relacionadas y ejecutar a través del terminal.

Docker Desktop también le muestra todas las variables que pasó para que pueda validar.
Por supuesto, también puede acceder a la CLI aquí, detenerla, iniciarla o destruirla fácilmente.


$ docker exec -it 3cb07d7c21476fbf298648986208f3429ec664167d8eef7fed17bf9ee3ce6316 /bin/sh; exit
# mysql -p

Si el contenedor Docker ya se está ejecutando, ahora puede acceder a MySQL a través de su terminal localhost.

$ mysql --host=localhost --protocol=tcp --port=3306 -p -u root

Ahora, si tiene problemas de acceso, recuerde asegurarse de que las cuentas de MySQL sean correctas y de que sus puertos y mapas estén correctos.
  • Se perdió la conexión con el servidor MySQL al "leer el paquete de comunicación inicial"
  • ERROR 1045 (28000): acceso denegado para el usuario 'root'@'192.168.0.5' (usando la contraseña: SÍ)

Ahora puede ver que todos están activos y disponibles, y que los Id. De servidor coinciden con lo que configuramos por archivo de cnf.

$ mysql --host=localhost --protocol=tcp --port=3306 -e "Select @@hostname, @@version, @@server_id "
+--------------+-----------+-------------+
| @@hostname | @@version | @@server_id |
+--------------+-----------+-------------+
| 58e9663afe8d | 8.0.19 | 80 |
+--------------+-----------+-------------+
$ mysql --host=localhost --protocol=tcp --port=3307 -e "Select @@hostname, @@version, @@server_id "
+--------------+-----------+-------------+
| @@hostname | @@version | @@server_id |
+--------------+-----------+-------------+
| b240917f051a | 5.7.29 | 57 |
+--------------+-----------+-------------+
$ mysql --host=localhost --protocol=tcp --port=3308 -e "Select @@hostname, @@version, @@server_id "
+--------------+-----------+-------------+
| @@hostname | @@version | @@server_id |
+--------------+-----------+-------------+
| b4653850cfe9 | 5.6.47 | 56 |
+--------------+-----------+-------------+
$ mysql --host=localhost --protocol=tcp --port=3309 -e "Select @@hostname, @@version, @@server_id "
+--------------+-----------+-------------+
| @@hostname | @@version | @@server_id |
+--------------+-----------+-------------+
| 22e169004583 | 5.5.62 | 55 |
+--------------+-----------+-------------+


jueves, 9 de mayo de 2013

Al comparar las bases de datos de MySQL :: :: :: Percona MariaDB con el recinto de seguridad de MySQL

Original post: http://anothermysqldba.blogspot.com/2013/05/comparing-databases-mysql-percona.html

¿Te encuentras a menudo curioso aún ocupado de explorar? 

A menudo, la gente se queda con lo que se sienta cómodo y comenzaron con. MySQL tiene un público muy fiel de usuarios. Esta bien ser curioso y explorar las horquillas también. ElSandbox MySQL hace que sea muy fácil para usted para hacer precisamente eso. 

MySQL Sandbox es una gran herramienta y la documentación está disponible si necesita ayuda. 
http://mysqlsandbox.net/docs.html. The Sandbox MySQL también le permite comprobar contra las horquillas y las diferentes versiones del servidor MySQL fácilmente. 

Ya tengo una versión de MySQL 5.6 corriendo en mi servidor. 


$ Mysql-p 
Introduce el password: 
Versión del servidor: 5.6.10-log MySQL Community Server (GPL) 
Copyright (c) 2000, 2013, Oracle y / o sus filiales.Todos los derechos reservados. 




He utilizado el Sandbox MySQL para comparar tres versiones similares de MySQL: 

  • MariaDB-05/05/30
  • Percona-Server-05/05/30
  • mysql-5.5.31
Decidí hacer mis cajas de arena de esta manera: 
$ Make_multiple_custom_sandbox MariaDB-5.5.30-linux-i686.tar.gz Percona-Server-5.5.30-rel30.2-500.Linux.i686.tar.gz mysql-5.5.31-Linux2.6-i686.tar. gz 


node1] $. / usa 
Bienvenido al monitor MariaDB. Comandos terminan con, o \ g. 
Tu ID de conexión MariaDB es 3 
Versión del servidor: 5.5.30-log-MariaDB MariaDB servidor 

Copyright (c) 2000, 2013, Oracle, Monty Program Ab y otros. 
> SELECT VERSION (); 
+ -------------------- + 
| VERSION () | 
+ -------------------- + 
| 05.05.30-MariaDB-log | 
+ -------------------- + 

  • Muy bien, este es el esperado.




nodo2] $. / usa 
Bienvenido al monitor MariaDB. Comandos terminan con, o \ g. 
Tu ID de conexión MariaDB es 4 

Versión del servidor: 5.5.30-log-MariaDB MariaDB servidor 

Copyright (c) 2000, 2013, Oracle, Monty Program Ab y otros 
> SELECT VERSION (); 
+ -------------------- + 
| VERSION () | 
+ -------------------- + 
| 05.05.30-MariaDB-log | 
+ -------------------- + 
  • Ah? bien, pero no como se esperaba.


node3] $. / usa 
Bienvenido al monitor de MySQL. Comandos terminan con, o \ g. 
Su conexión MySQL id es 3 
Versión del servidor: 5.5.31-log MySQL Community Server (GPL) 

Copyright (c) 2000, 2013, Oracle y / o sus filiales.Todos los derechos reservados. 
> SELECT VERSION (); 
+ ------------ + 
| VERSION () | 
+ ------------ + 
| 5.5.31-log | 
+ ------------ + 


Yo esperaba o por lo menos estaba en la esperanza de que iba con este resultado. 


Sigo pensando que MySQL Sandbox es una gran herramienta y hace algunas comparaciones y pruebas muy fácil de hacer. Lo que pasa es encontrarse con un conflicto al intentar ejecutar los 3 versiones a la vez. Podría ser completamente mi error, así y sólo he pasado algo por alto. Creo que sería una prueba válida para algunas personas quieren hacer bien.Independientemente me mudé y construido a partir de su lugar de origen. Más sobre esto está disponible aquí: 

lunes, 6 de mayo de 2013

La construcción de fuente MySQL :: MariaDB :: Percona

Original Post: http://anothermysqldba.blogspot.com/2013/05/building-from-source-mysql-mariadb.html



Es posible ejecutar más de un servidor MySQL en el mismo servidor. A veces las personas les gustaría instalar otra versión de una base de datos en el mismo hardware con fines de prueba, así como las evaluaciones.
Instalación de las bases de datos de origen y de instalaciones personalizadas para cada uno es más fácil de lo que pueda parecer a algunos. Yo sugeriría revisar MySQL Sandbox primero, sin embargo, ya que permite a las evaluaciones y pruebas para hacer muy rápidamente y fácilmente. Sin embargo, la instalación de la fuente funcionó mejor para mí cuando hice algunas comparaciones. A continuación se muestra el proceso que he usado. Voy a estar buscando para construir futuras entradas del blog con estas bases de datos una vez que sintonizo entonces configuraciones.



Esta es la información predeterminada de mysql.com . Yo ya había instalado MySQL, así que no ejecuto el siguiente, pero yo quería esto aquí como referencia. Usted puede comparar estos pasos para el MySQL, MariaDB y las instalaciones de origen Percona abajo también veo cómo he actualizado los pasos predeterminados con el fin de obtener las tres versiones de la base de datos que se ejecuta en la misma caja. (No hay valor de la producción aquí fue hecho solo para probar el proceso.)

# Preconfiguration setup
shell> groupadd mysql
shell> useradd -r -g mysql mysql

# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake .
shell> make
shell> make install
# End of source-build specific instructions

# Postinstallation setup
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data

# Next command is optional
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &

# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server


If you prefer to use the script mysql.server para el arranque y parada, asegúrese de revisar y modificar en consecuencia.
# Preconfiguration setup
shell> groupadd oracle_mysql
shell> useradd -r -g
 # Preconfiguration setup
shell> groupadd oracle_mysql
shell> useradd -r -g
 oracle_mysql oracle_mysql 
oracle_mysql 
# Beginning of source-build specific instructions
shell> tar zxvf MariaDB -VERSION .tar.gz
shell> cd MySQL-VERSION
shell> cmake .
shell> make
shell> make install DESTDIR=" /usr/local/
 # Beginning of source-build specific instructions
shell> tar zxvf MariaDB -VERSION .tar.gz
shell> cd MySQL-VERSION
shell> cmake .
shell> make
shell> make install DESTDIR=" /usr/local/
 tmp-oracle_mysql "
# End of source-build specific instructions

I do not like the results
-- Installing: /usr/local/ tmp-oracle_mysql / usr / local / mysql /
If DESTDIR is should install into that location not start with user under that location. This is a MySQL original issue as it does this with all versions of MySQL.

# Fix the odd/bug setup
shell> cd /usr/local/
 If DESTDIR is should install into that location not start with user under that location. This is a MySQL original issue as it does this with all versions of MySQL.

# Fix the odd/bug setup
shell> cd /usr/local/
 tmp-oracle_mysql
shell> mv usr/local/mysql/ ../ oracle_mysql ;
shell> cd ../; # rm -Rf oracle_mysql-tmp

# Postinstallation setup
shell> cd /usr/local/ oracle_mysql 
shell> chown -R
 
shell> chown -R
 oracle_mysql .
shell> chgrp -R oracle_mysql .

# Next command is optional
shell> cp support-files/my-small.cnf /etc/
 # Next command is optional
shell> cp support-files/my-small.cnf /etc/
 oracle_mysql .cnf
shell> vi /etc/ oracle_mysql .cnf

port = 3309

socket = /tmp/ oracle_mysql .sock

shell> scripts/mysql_install_db --defaults-file=/etc/oracle_mysql.cnf --basedir=/usr/local/oracle_mysql --skip-name-resolve --datadir=/var/lib/oracle_mysql --user=oracle_mysql
shell> chown -R oracle_mysql /var/lib/oracle_mysql /*

shell> # bin/mysqld_safe --defaults-file=/etc/ oracle_mysql .cnf --user= oracle_mysql --datadir=/var/lib/ oracle_mysql / --port=3309 &


shell> # bin/ mysql --port=3309 --socket=/tmp/ oracle_mysql .sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.31 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.








# Preconfiguration setup
shell> groupadd mariadb
shell> useradd -r -g mariadb mariadb

# Beginning of source-build specific instructions
shell> tar zxvf MariaDB -VERSION .tar.gz
shell> cd MariaDB-VERSION
shell> cmake .
shell> make
shell> make install DESTDIR=" /usr/local/ mariadb -tmp "
# End of source-build specific instructions

I do not like the results
-- Installing: /usr/local/ mariadb-tmp /usr/local/mysql/
If DESTDIR is should install into that location not start with user under that location. This is a MySQL original issue as it does this with all versions of MySQL.

# Fix the odd/bug setup
shell> cd /usr/local/ mariadb -tmp
shell> mv usr/local/mysql/ ../ mariadb ;
shell> cd ../; # rm -Rf mariadb -tmp

# Postinstallation setup
shell> cd /usr/local/mariadb
shell> chown -R mariadb .
shell> chgrp -R mariadb .


# Siguiente comando es opcional 
shell> support-files/my-small.cnf cp / etc / MariaDB. cnf

shell> vi / etc / MariaDB. cnf

port = 3308

socket = / tmp / MariaDB. sock

shell> scripts/mysql_install_db --defaults-file=/etc/mariadb.cnf --basedir=/usr/local/ mariadb --skip-name-resolve --datadir=/var/lib/mariadb --user= mariadb
shell> chown -R mariadb /var/lib/ mariadb /*

shell> # bin/mysqld_safe --defaults-file=/etc/ mariadb .cnf --user= mariadb --datadir=/var/lib/mariadb / --port=3308 &


shell> # bin/ mysql --port=3308 --socket=/tmp/ mariadb .sock
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 1
Server version: 5.5.30-MariaDB Source distribution

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.






# Preconfiguration setup
shell> groupadd percona
shell> useradd -r -g percona percona

# Beginning of source-build specific instructions
shell> tar zxvf Percona-Server -VERSION .tar.gz
shell> cd Percona-Server-VERSION
shell> cmake .
shell> make
shell> make install DESTDIR=" /usr/local/percona-tmp "
# End of source-build specific instructions

I do not like the results

-- Installing: /usr/local/percona-tmp/usr/local/mysql/

If DESTDIR is should install into that location not start with user under that location. This is a MySQL original issue as it does this with all versions of MySQL.

# Fix the odd/bug setup
shell> cd /usr/local/percona-tmp

shell> mv usr/local/mysql/ ../percona ;

shell> cd ../; # rm -Rf percona-tmp



# Next command is optional
shell> cp support-files/my-small.cnf /etc/ percona .cnf

shell> vi /etc/ percona .cnf

port = 3307

socket = /tmp/percona.sock




Configuración posterior a la instalación #
shell> cd / usr / local / Percona 
shell> chown-R Percona.
shell> chgrp-R Percona.

shell> scripts / mysql_install_db - defaults-file = / etc / percona.cnf - basedir = / usr / local / Percona - skip-name-resolve - datadir = / var / lib / Percona - user = Percona
shell> chown-R Percona / var / lib / Percona / *
shell> # bin / mysqld_safe - defaults-file = / etc / percona.cnf - user = Percona - datadir = / var / lib / Percona / - port = 3307  



shell> # bin / mysql - port = 3307 - socket = / tmp / percona.sock
Bienvenido al monitor de MySQL. Comandos terminan con, o \ g.
Su conexión MySQL id es 1
Versión del servidor: 5.5.30 distribución Fuente

Copyright (c) 2000, 2013, Oracle y / o sus filiales. Todos los derechos reservados.




Ahora tengo acceso a los 3 sabores o MySQL.
Para el acceso de clientes fáciles añadí a mi bashrc.:

  • alias Percona = '/ usr / local / Percona / bin / mysql - port = 3307 - socket = / tmp / percona.sock'
  • alias oracle_mysql = '/ usr / local / oracle_mysql / bin / mysql - port = 3309 - socket = / tmp / oracle_mysql.sock'
  • alias maria = '/ usr / local / MariaDB / bin / mysql - port = 3308 - socket = / tmp / mariadb.sock'