Gestión avanzada de la base de datos mysql (3)

Uno: gestión de usuarios de mysql

Por seguridad, el usuario root de msyql no puede iniciar sesión de forma remota de forma predeterminada.

1.1: Ver todos los usuarios

mysql> select user,host,password from mysql.user;
+------+-----------------------+-------------------------------------------+
| user | host                  | password                                  |
+------+-----------------------+-------------------------------------------+
| root | localhost             | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | localhost.localdomain |                                           |
| root | 127.0.0.1             |                                           |
| root | ::1                   |                                           |
|      | localhost             |                                           |
|      | localhost.localdomain |                                           |
+------+-----------------------+-------------------------------------------+
6 rows in set (0.00 sec)

1.2: Nuevos usuarios

create user 用户名@'地址' identified by'密码';

Por ejemplo:

mysql> create user huazai@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)

1.3: Modificación de contraseña

1.3.1: Método uno

update user set password=password('新密码') where host='主地址' and user='用户名';
flush privileges;//刷新权限 

Por ejemplo:

mysql> update user set password=password('123456') where user='huazai';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

刷新授权表
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

1.3.2: Método dos

set password for 用户名@'主机地址' =password('新密码');             //注这种方法无需刷新权限

Por ejemplo:

mysql> set password for huazai@'localhost'=password('123');
Query OK, 0 rows affected (0.00 sec)

1.4: Recuperación después de olvidar la contraseña de root

  1. Detenga primero el servicio mysql

    systemctl stop mariadb
    
  2. Omita la tabla de concesión e inicie el servicio MySQL.
    Este paso utiliza principalmente la opción --skip-grant-tables de mysqld para
    modificar la configuración de my.cnf y agregar skip_grant_tables = 1 para iniciar la configuración:

    Abra el archivo de configuración /etc/my.cnf y
    agregue una línea de skip_grant_tables, luego guarde y salga

    [root@localhost mysql]# cat my.cnf |grep skip
    skip_grant_tables=1
    
  3. Restablecer la contraseña de root

    mysql> update mysql.user set password=password('123') where user='root';
    Query OK, 3 rows affected (0.01 sec)
    Rows matched: 4  Changed: 3  Warnings: 0
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    
    

1.5: Configuración de permisos para usuarios de bases de datos

1.5.1: Nivel de autoridad

Los permisos se pueden dividir en cuatro niveles:

  1. Nivel global (*.*)
  2. Nivel de la base de datos (nombre de la base de datos. *)
  3. Nivel de tabla (nombre de la base de datos. Nombre de la tabla)
  4. Nivel de columna (autoridad (columna) nombre de la base de datos. Nombre de la tabla).
    Los permisos de nivel global se almacenan en la tabla mysql.user.
    Los permisos de nivel de base de datos se almacenan en mysql.db o mysql.host. Los
    permisos de nivel de tabla se almacenan en mysql.tables_priv.
    Los permisos de nivel de columna se almacenan en mysql.columns_priv.
1.5.2: Autorizar usuarios
grant  权限列表 on 数据库名.表名 to 用户@'地址';
1.5.3: Crear usuarios autorizando
grant  权限列表 on 数据库名.表名 to 用户@'地址' identified by'密码';
mysql> grant select on mysql.* to 'huazai007'@'192.168.1.%' identified by '123';
Query OK, 0 rows affected (0.03 sec)

1.5.4: Retirar permisos

Ver permisos de usuario:
muestra concesiones para el nombre de usuario;

mysql> show grants for 'huazai007'@'192.168.1.%';
+--------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected].%                                                                                   |
+--------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'huazai007'@'192.168.1.%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
| GRANT SELECT ON `mysql`.* TO 'huazai007'@'192.168.1.%'                                                             |
+--------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Para revocar los permisos del usuario:

revoke 权限列表 on 数据库名.表名 from 用户@'地址';
mysql> revoke select on mysql.* from 'huazai007'@'192.168.1.%';
Query OK, 0 rows affected (0.01 sec)

Dos: copia de seguridad y recuperación de la base de datos mysql

2.1: Concepto y clasificación de respaldo

2.1.1: Concepto de copia de seguridad

Para hacer frente a posibles situaciones inesperadas, como pérdida o daño de archivos o datos, los datos en el dispositivo de almacenamiento de la computadora electrónica se copian en un dispositivo de almacenamiento de gran capacidad, como una cinta magnética, para separar el programa o la copia del archivo almacenada por separado en el texto original;

Si el hardware o los medios de almacenamiento del sistema fallan, la "copia de seguridad" puede ayudarnos a proteger los datos de pérdidas accidentales.

2.1.2: Clasificación de respaldo

  1. Copia de seguridad completa: una
    copia de seguridad completa se refiere a una copia completa de todos los datos o aplicaciones en un momento determinado.
  2. Copia de seguridad incremental: la copia de seguridad
    incremental significa que después de una copia de seguridad completa o la última copia de seguridad incremental, cada copia de seguridad posterior solo necesita realizar una copia de seguridad de los archivos que se han aumentado y modificado en comparación con la anterior.
  3. Copia de seguridad diferencial: la copia de seguridad
    diferencial se refiere a la copia de seguridad de aquellos archivos que se agregan o modifican durante el período de una copia de seguridad completa a una copia de seguridad diferencial

2.2: herramienta de respaldo

2.2.1: mysqldump

mysqldump es una herramienta de respaldo que viene con mysql, que completa un respaldo completo

Ejemplo: copia de seguridad de todas las bases de datos

mysqldump -uroot --p contraseña --todas las bases de datos> letra de la unidad: \ ruta \ nombre de archivo.sql

-A es equivalente a --todas las bases de datos

 /usr/local/mysql/bin/mysqldump -uroot -p123 -A -S /var/lib/mysql/mysql.sock > /tmp/all_db.sql

Ejemplo: copia de seguridad de una (alguna) base de datos especificada (prueba + mysql)

mysqldump -uroot -p contraseña -base de datos nombre de la base de datos> letra del disco: \ ruta \ nombre de archivo.sql

-B es equivalente a -databases

[root@localhost mysql]# /usr/local/mysql/bin/mysqldump -uroot -p123 --databases test mysql -S /var/lib/mysql/mysql.sock > /tmp/test_mysql.sql
Warning: Using a password on the command line interface can be insecure.

Ejemplo: hacer una copia de seguridad de una tabla en una base de datos específica (mysql.user)

mysqldump -uroot -p contraseña nombre de la base de datos nombre de la tabla> letra del disco: \ ruta \ nombre de archivo.sql

[root@localhost mysql]# /usr/local/mysql/bin/mysqldump -uroot -p123  mysql user -S /var/lib/mysql/mysql.sock > /tmp/mysql_user.sql
Warning: Using a password on the command line interface can be insecure.

2.2.2: mydumper

Mydumper es una herramienta de copia de seguridad y recuperación de subprocesos múltiples de alto rendimiento para MySQL.

2.2.2.1: Características principales de Mydumper:
  • Escrito en lenguaje C ligero
  • La velocidad de ejecución es 10 veces más rápida que mysqldump
  • Compresión de archivos rápida
  • Soporte de exportación de binlog
  • Recuperación de subprocesos múltiples (aplicable a la versión 0.2.1 y superior)
  • Trabajando como un demonio, instantáneas cronometradas y registros binarios continuos (aplicable a versiones superiores a 0.5.0)
  • Código abierto (GNU GPLv3)
2.2.2.2: Instalación de Mydumper:

descargar:

wget https://github.com/maxbube/mydumper/releases/download/v0.9.5/mydumper-0.9.5-2.el7.x86_64.rpm
yum -y install  glib2-devel zlib-devel pcre-devel
yum -y install mydumper-0.9.5-2.el7.x86_64.rpm

Vista de versión:

[root@localhost mysql]# mydumper  -V
mydumper 0.9.5, built against MySQL 5.7.21-21

2.2.2.3: Descripción del parámetro Mydumper

-B,
--database La biblioteca a respaldar -T, --tables-list Las tablas a respaldar, múltiples tablas, separadas por comas
-o, --outputdir El directorio del archivo de salida
-s, --statement-size Genera declaraciones de inserción El número de bytes, el predeterminado es 1000000
-r, --rows divididos en muchas filas de bloques. Tabla
-c, --compress Comprimir archivos de salida
-e, --build-empty-files Incluso si la tabla no tiene datos, se sigue generando un archivo vacío
-x , --regex Expresión regular: 'db.table'
-i, --ignore- motors Motores de almacenamiento ignorados, separados por comas
-m, --no-schemas no exporta la estructura de la tabla
-k, --no-locks no Ejecutar advertencia de bloqueo de lectura compartida: esto causará copias de seguridad inconsistentes
-l, --long-query-guard establece un tiempo de consulta largo, predeterminado 60 segundos
-kill-long-queries elimina consultas de larga ejecución
-b, --binlogs export binlog
-D, --daemon enable daemon mode
-I, --snapshot-interval dump snapshot interval time, predeterminado 60s, necesita estar en modo daemon
-L, --logfile log file
-h, --host El host para conectarse to
-u, --user Nombre de usuario con privilegios para ejecutar el volcado
-p, --password Contraseña de usuario
-P, --port Puerto TCP / IP para conectarse a
-S, --socket Archivo de socket de dominio UNIX para usar para la conexión
-t, --threads El número de subprocesos usados, el valor predeterminado es 4
-C , --compress-protocol Usa el protocolo de compresión en la conexión mysql
-V, --version Muestra la versión del programa y sale
-v, --verbose Más salida, 0 = silencioso, 1 = errores, 2 = advertencias, 3 = información , predeterminado 2

2.2.2.4: Ejemplo de mydumper

Por defecto, se utilizan 4 derivados de subprocesos. Generalmente, los servidores empresariales recomiendan 8 o más. Los motores sin transacciones bloquearán la tabla. Se recomienda exportar usando esclavo y usar compresión.
Nota: Hay un espacio después del parámetro -u xx para hacer una
copia de seguridad de toda la base de datos
mydumper -u root -p'xxx'- h xxx -o / xxx / gw
(¡El directorio de respaldo se creará automáticamente!)

Realice una copia de seguridad de la tabla sin realizar una copia de seguridad de la estructura de la tabla
mydumper -u root -p'xxx '-h xxx -B gw -T testA -m -o / xxx / gw

Realice una
copia de seguridad de la base de datos especificada mydumper -u root -p'xxx '-h xxx -B gw -t 6 -o / xxx / gw

Hacer una copia de seguridad de varias tablas (tableA, tableB)
mydumper -u root -p'xxx '-h xxx -B gw -T testA, testB -t 6 -o / xxx / gw

Haga una copia de seguridad de los datos en la tablaA y comprímalos
mydumper -u root -p'xxx '-h xxx -B gw -T testA -t 6 -c -o / xxx / gw

Recuperación de datos de mydumper:
myloader -u root -p'xxxxx '-B test -d / home / mysql /

2.2.3: [xtrabackup] (entender)

sitio web oficial de xtrabackup
Inserte la descripción de la imagen aquí

2.2.4: Recuperación de datos

método uno:

mysql -u root -p biblioteca de contraseñas o tabla <archivo de copia de seguridad

Método dos:

O inicie sesión en la
letra de la unidad de copia de seguridad de origen de mysql : \ ruta \ nombre de archivo.sql

Método tres:

mydumper: exportar datos
myloader: restaurar datos
myloader -u root -p'xxxxx '-B test -d / home / mysql /

Tres: gestión de registros de mysql

3.1: Tipo de registro

3.1.1: Registro de errores:

Registre los problemas al iniciar, ejecutar o detener mysqld.

3.1.2: Registro binario:

El archivo de registro registra varias operaciones de la base de datos en forma binaria, pero no registra declaraciones de consulta.
La replicación maestro-esclavo de la base de datos también se basa en binlog para sincronizar datos.

3.1.2.1: Compruebe si el registro binario está habilitado:
show variables like 'log%';

Inserte la descripción de la imagen aquí

3.1.2.2: Obtenga la lista de registros binarios actual:
mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |     69459 |
| mysql-bin.000002 |   1377550 |
| mysql-bin.000003 |       143 |
| mysql-bin.000004 |      9796 |
| mysql-bin.000005 |       916 |
+------------------+-----------+
5 rows in set (0.00 sec)

3.1.2.3: Compruebe qué registro se está utilizando:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000005 |      916 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

3.1.2.4: Ver el contenido del archivo binario: (herramienta mysqlbinlog)

Opciones comunes para el comando mysqlbinlog:

--Start-postion start position
--stop-position end position --start
-datetime'yyyy-mm-dd hh: mm: ss 'start time
--stop-datetime'yyyy-mm-dd hh: mm: ss' end time

mysqlbinlog --no-defaults --start-position=106 --stop-position=272  /var/lib/mysql/mysql-bin.000001 
[root@localhost ~]# mysqlbinlog  --start-datetime='2020-10-08 21:10:38' --stop-datetime='2020-10-08 21:20:01' /data/mysql/mysql-bin.000005

3.1.2.5: Utilice el registro binario para restaurar datos:

Al realizar una copia de seguridad de la base de datos mysql, la copia de seguridad del registro binario relacionado es una copia de seguridad incremental de mysql , y el registro binario se puede restaurar de forma incremental al restaurar.

3.1.2.5.1: Restaurar por tiempo

Proceso experimental:
1: Inserte primero un dato
2: Elimine este dato
3: Encuentre los parámetros de posición inicial y final de los datos de entrada y restaure los datos.

mysqlbinlog --start-datetime=“时间” 日志文件路径 | mysql -u用户 -p             //指定开始恢复的时间节点

mysqlbinlog --stop-datetime=“时间” 日志文件路径 | mysql -u用户 -p 					//指定结束恢复的时间节点

mysqlbinlog --start-datetime=“时间” --stop-datetime=“时间” 日志文件路径 | mysql -u用户 -p   //从规定的起始时间还原到规定的结束时间
3.1.2.5.2: Restaurar por ubicación
mysqlbinlog --start-position=“位置” 日志文件路径 | mysql -u	用户 -p   //从规定的起始位置还原到现在

mysqlbinlog --stop-position=“位置” 日志文件路径 | mysql -u	用户 -p   //从最开始还原到规定的结束位置

mysqlbinlog --start-position=“位置” --stop-position=“位置” 日	志文件路径 | mysql -u用户 -p   //从规定的起始位置还原到规定的结束位置

3.1.3: Registro de consultas lentas (comprender)

slow_log
El registro de consultas lentas de MySQL es un registro proporcionado por MySQL. Se utiliza para registrar declaraciones en MySQL cuyo tiempo de respuesta excede el umbral. Específicamente, SQL con un tiempo de ejecución superior al valor long_query_time se registrará en el registro de consultas lentas.

El valor predeterminado de long_query_time es 10, lo que significa ejecutar la instrucción más de 10S.

De forma predeterminada, la base de datos Mysql no inicia un registro de consultas lento, necesitamos configurar este parámetro manualmente.

Por supuesto, si no es necesario para el ajuste, generalmente no se recomienda habilitar este parámetro, porque activar el registro de consultas lentas producirá más o menos un cierto impacto en el rendimiento.

El registro de consultas lento admite la escritura de registros en archivos y también admite la escritura de registros en tablas de base de datos.

Supongo que te gusta

Origin blog.csdn.net/zhangshaohuas/article/details/108976646
Recomendado
Clasificación