Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cuando se trabaja con base de datos, uno de las cosas más importantes de hacer es respaldar los
datos en caso de que ocurra cualquier situación que dañe nuestro servidor de base de datos. De
nada nos serviría hacer esos respaldos si no los podemos volver a cargar (restaurar) cuando lo
necesitemos.
En este post, trataremos la forma de hacer respaldos y restauración de datos cuando se utiliza
postgreSQL como DBMS.
Respaldando los datos: pg_dump
pg_dump es una herramienta de línea de comandos que nos permita hacer un respaldo de alguna
de las bases de datos (o todas) en nuestro servidor postgres.
Permite hacer el volcado de datos en diferentes formatos ya sean compresos, texto plano, etc. En
resumen, escribe en un archivo (o salida estándar) las instrucciones SQL necesarias para hacer un
respaldo de la base de datos.
Para realizar la restauración de los datos volcados con pg_dump, podemos utilizar la
herramienta pg_restore. pg_restore restaura una base de datos que ha sido respaldada
con pg_dump.
Entre las ventajas de utilizar esta utilidad para la restauración es que se puede seleccionar qué partes
del respaldo se quieren restaurar o incluso reordenar los items antes de hacer la restauración
Entre las opciones más comunes utilizadas con este comando están:
Otros ejemplos:
Crea la base de datos postgres (por la opción -C) pero siempre vuelca los datos en la base que el
script especifica.
Como habrán notado, las herramientas pg_dump y pg_restore comparten muchas opciones
comunes entre sí y representan un par de herramientas bastante útiles a la hora de restaurar y
manipular los respaldos hechos de nuestras bases de datos.
Cuando se trabaja con base de datos, uno de las cosas más importantes de hacer es respaldar los
datos en caso de que ocurra cualquier situación que dañe nuestro servidor de base de datos. De
nada nos serviría hacer esos respaldos si no los podemos volver a cargar (restaurar) cuando lo
necesitemos.
En este post, trataremos la forma de hacer respaldos y restauración de datos cuando se utiliza
postgreSQL como DBMS.
Respaldando los datos: pg_dump
pg_dump es una herramienta de línea de comandos que nos permita hacer un respaldo de alguna
de las bases de datos (o todas) en nuestro servidor postgres.
Permite hacer el volcado de datos en diferentes formatos ya sean compresos, texto plano, etc. En
resumen, escribe en un archivo (o salida estándar) las instrucciones SQL necesarias para hacer un
respaldo de la base de datos.
Para realizar la restauración de los datos volcados con pg_dump, podemos utilizar la
herramienta pg_restore. pg_restore restaura una base de datos que ha sido respaldada
con pg_dump.
Entre las ventajas de utilizar esta utilidad para la restauración es que se puede seleccionar qué partes
del respaldo se quieren restaurar o incluso reordenar los items antes de hacer la restauración
Entre las opciones más comunes utilizadas con este comando están:
Otros ejemplos:
Como habrán notado, las herramientas pg_dump y pg_restore comparten muchas opciones
comunes entre sí y representan un par de herramientas bastante útiles a la hora de restaurar y
manipular los respaldos hechos de nuestras bases de datos.
12/06/2017
Tiempo de lectura: 34 minutos
Colaboradores
o
SE APLICA A: SQL Server Azure SQL Database Azure SQL Data Warehouse
Almacenamiento de datos paralelos
Para SQL Server 2014, vaya a Crear una copia de seguridad completa de base de datos (SQL
Server).
En este tema se explica cómo crear una copia de seguridad completa de la base de datos en SQL
Server 2017 mediante SQL Server Management Studio, Transact-SQLo PowerShell.
Para obtener información sobre la copia de seguridad de SQL Server en el servicio de Windows
Azure Blob storage, vea SQL Server Backup and Restore with Microsoft Azure Blob Storage
Service (Copia de seguridad y restauración de SQL Server con el servicio de Microsoft Azure Blob
Storage) y Copia de seguridad en URL de SQL Server.
Antes de comenzar
Limitaciones y restricciones
A medida que la base de datos aumenta de tamaño, las copias de seguridad completas
requieren una mayor cantidad de tiempo para finalizar y espacio de almacenamiento. En el
caso de una base de datos grande, considere la posibilidad de complementar una copia de
seguridad completa con una serie de copias de seguridad diferenciales. Para más
información, consulte SQL Server Backup to URL.
Calcule el tamaño de una copia de seguridad completa de la base de datos mediante el
procedimiento almacenado del sistema sp_spaceused .
De forma predeterminada, cada operación de copia de seguridad correcta agrega una
entrada en el registro de errores de SQL Server y en el registro de eventos del sistema. Si
realiza copias de seguridad con frecuencia, estos mensajes de aprobación se acumularán
rápidamente, lo que dará lugar a enormes registros de errores. Esto puede dificultar la
búsqueda de otros mensajes. En esos casos, puede suprimir estas entradas de registro de
copia de seguridad con la marca de seguimiento 3226 si ninguno de los scripts depende de
ellas. Para obtener más información, vea Marcas de seguimiento (Transact-SQL).
Seguridad
TRUSTWORTHY se establece en OFF en una copia de seguridad de base de datos. Para obtener
información sobre cómo establecer TRUSTWORTHY en ON, vea Opciones de ALTER DATABASE
SET (Transact-SQL).
A partir de SQL Server 2012 (11.x) las opciones PASSWORD y MEDIAPASSWORD no se pueden
utilizar para crear copias de seguridad. Todavía puede restaurar las copias de seguridad creadas
con contraseñas.
Permissions
De forma predeterminada, los permisos BACKUP DATABASE y BACKUP LOG corresponden a los
miembros del rol fijo de servidor sysadmin y de los roles fijos de base de
datos db_owner y db_backupoperator .
Los problemas de propiedad y permisos del archivo físico del dispositivo de copia de seguridad
pueden interferir con una operación de copia de seguridad. SQL Server debe poder leer y escribir
en el dispositivo y la cuenta en la que se ejecuta el servicio SQL Server debe tener permisos de
escritura. En cambio, sp_addumpdevice, que agrega una entrada para un dispositivo de copia de
seguridad en las tablas del sistema, no comprueba los permisos de acceso a los archivos. Es
posible que estos problemas con el archivo físico del dispositivo de copia de seguridad no
aparezcan hasta que se tenga acceso al recurso físico, al intentar la copia de seguridad o la
restauración.
Usar SQL Server Management Studio
Al especificar una tarea de copia de seguridad mediante SQL Server Management Studio, puede
generar el script Transact-SQL BACKUP script by clicking the Script button and selecting a script
destination.
Realizar una copia de seguridad de una base de datos
Página General
Tenga en cuenta que después de crear una copia de seguridad completa de la base de
datos, puede crear una copia de seguridad diferencial; para obtener más información,
vea Crear una copia de seguridad diferencial de una base de datos (SQL Server).
7. También puede activar la casilla Copia de seguridad de solo copia para crear una copia
de seguridad de solo copia. Una copia de seguridad de solo copia es una copia de seguridad
deSQL Server independiente de la secuencia de copias de seguridad convencionales
de SQL Server. Para obtener más información, vea Copias de seguridad de solo copia (SQL
Server).Una copia de seguridad de solo copia no está disponible para el tipo de copia de
seguridad Diferencial.
8. En Componente de copia de seguridad, seleccione el botón de radio Base de datos .
9. En la sección Destino , use la lista desplegable Copia de seguridad en para seleccionar el
destino de la copia de seguridad. Haga clic en Agregar para agregar objetos o destinos de
copia de seguridad adicionales.
Para eliminar un destino de copia de seguridad, selecciónelo y haga clic en Quitar. Para ver
el contenido de un destino de copia de seguridad existente, selecciónelo y haga clic
en Contenido.
10. Para ver o seleccionar las opciones multimedia, haga clic en Opciones multimedia en el
panel Seleccionar una página .
11. Seleccione una opción de Sobrescribir medios ; para ello, haga clic en una de las opciones
siguientes:
Importante
Si piensa usar cifrado, no seleccione esta opción. Si selecciona esta opción, las opciones de
cifrado de la página Opciones de copia de seguridad estarán deshabilitadas. No se admite
el cifrado al anexar al conjunto de copia de seguridad existente.
Para esta opción, haga clic en Anexar al conjunto de copia de seguridad
existente o Sobrescribir todos los conjuntos de copia de seguridad existentes. Para
obtener más información, vea Conjuntos de medios, familias de medios y conjuntos de
copias de seguridad (SQL Server).
Para esta opción, especifique un nombre en el cuadro de texto Nuevo nombre del conjunto
de medios y, si lo desea, describa el conjunto de medios en el cuadro de texto Nueva
descripción del conjunto de medios .
4. Para ver o seleccionar las opciones de copia de seguridad, haga clic en Opciones de copia
de seguridad en el panel Seleccionar una página .
5. En el cuadro de texto Nombre , acepte el nombre del conjunto de copia de seguridad
predeterminado o escriba otro nombre para el conjunto de copia de seguridad.
6. En el cuadro de texto Descripción , también puede escribir una descripción del conjunto de
copia de seguridad.
7. Especifique cuándo expirará el conjunto de copia de seguridad y se podrá sobrescribir sin
omitir explícitamente la comprobación de los datos de expiración:
Para que el conjunto de copia de seguridad expire al cabo de un número de días
específico, haga clic en Después de (opción predeterminada) y escriba el número de
días tras la creación del conjunto en que este expirará. Este valor puede estar entre 0
y 99999 días; el valor 0 significa que el conjunto de copia de seguridad no expirará
nunca.
El valor predeterminado se establece en la opción Tiempo predeterminado de
retención de medios de copia de seguridad (días) del cuadro de
diálogo Propiedades del servidor (página Configuración de base de datos). Para
acceder a esta opción, en el Explorador de objetos, haga clic con el botón derecho en
el nombre del servidor y seleccione Propiedades; después, seleccione la
página Configuración de base de datos .
Para que el conjunto de copia de seguridad expire en una determinada fecha, haga
clic en Ely escriba la fecha en la que expirará.
9. En la sección Cifrado , use la casilla Cifrar copia de seguridad para decidir si usar el
cifrado en la copia de seguridad. Use la lista desplegable Algoritmo para seleccionar un
algoritmo de cifrado. Use la lista desplegable Certificado o clave asimétrica para
seleccionar un certificado o una clase asimétrica existente. El cifrado se admite en SQL
Server 2014 o posterior. Para obtener más detalles sobre las opciones de cifrado, vea Copia
de seguridad de la base de datos (página Opciones de copia de seguridad).
Puede usar el Asistente para planes de mantenimiento para crear copias de seguridad de base de
datos.
Ejemplos
A. Crear copia de seguridad completa en disco en una ubicación predeterminada
En este ejemplo, se creará una copia de seguridad de la base de datos Sales en disco en la
ubicación de copia de seguridad predeterminada. Nunca se ha creado una copia de seguridad
de Sales .
1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos de SQL
Server y expándala.
2. Expanda Bases de datos, haga clic con el botón derecho en Sales, seleccione Tareasy,
luego, haga clic en Copia de seguridad...
3. Haga clic en Aceptar.
B. Crear copia de seguridad completa en disco en una ubicación no predeterminada
En este ejemplo, se creará una copia de seguridad de la base de datos Sales en disco
en E:\MSSQL\BAK. Se han creado copias de seguridad de
Sales anteriores.
1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos de SQL
Server y expándala.
2. Expanda Bases de datos, haga clic con el botón derecho en Sales, seleccione Tareasy,
luego, haga clic en Copia de seguridad...
3. En la página General , en la sección Destino , seleccione Disco en la lista
desplegable Copia de seguridad en: .
4. Haga clic en Quitar hasta que se quiten todos los archivos de copia de seguridad existentes.
5. Haga clic en Agregar y se abrirá el cuadro de diálogo Seleccionar destino de la copia de
seguridad .
6. Escriba E:\MSSQL\BAK\Sales_20160801.bak en el cuadro de texto nombre de archivo .
7. Haga clic en Aceptar.
8. Haga clic en Aceptar.
C. Crear una copia de seguridad cifrada
En este ejemplo, se creará una copia de seguridad de la base de datos Sales con cifrado en la
ubicación de copia de seguridad predeterminada. Ya se creó una clave maestra de base de
datos .Ya se creó un certificado con el nombre MyCertificate. Puede ver un ejemplo T-SQL de
cómo crear una clave maestra de base de datos y un certificado en Crear una copia de
seguridad cifrada.
1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos de SQL
Server y expándala.
2. Expanda Bases de datos, haga clic con el botón derecho en Sales, seleccione Tareasy,
luego, haga clic en Copia de seguridad...
3. En la página Opciones de medios , en la sección Sobrescribir medios , seleccione Hacer
copia de seguridad en un nuevo conjunto de medios y borrar todos los conjuntos de
copia de seguridad existentes.
4. En la página Opciones de copia de seguridad , en la sección Cifrado , active la
casilla Cifrar copia de seguridad .
5. En la lista desplegable Algoritmo , seleccione AES 256.
6. En la lista desplegable Certificado o clave asimétrica , seleccione
1. MyCertificate.
2. Haga clic en Aceptar.
D. Copia de seguridad en el servicio de Azure Blob Storage
Pasos comunes
Los tres ejemplos siguientes realizan una copia de seguridad completa de la base de
datos Salesen el servicio de almacenamiento de blobs de Microsoft Azure. El nombre de la cuenta
de almacenamiento es mystorageaccount. El contenedor se denomina myfirstcontainer. Por
motivos de brevedad, los cuatro primeros pasos se enumeran aquí una vez y todos los ejemplos se
iniciarán en el paso 5.
1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos de SQL
Server y expándala.
2. Expanda Bases de datos, haga clic con el botón derecho en Sales, seleccione Tareasy,
luego, haga clic en Copia de seguridad...
3. En la página General de la sección Destino , seleccione URL en la lista desplegable Copia
de seguridad en: .
4. Haga clic en Agregar y se abrirá el cuadro de diálogo Seleccionar destino de la copia de
seguridad .
D1. Ya existen una copia de seguridad distribuida en URL y una credencial de SQL
Server
Se ha creado una directiva de acceso almacenada con derechos de lectura, escritura y
lista. La credencial de SQL
Server, https://mystorageaccount.blob.core.windows.net/myfirstcontainer, se creó con una
firma de acceso compartido asociada a la directiva de acceso almacenada.
*
D2. Existe una firma de acceso compartido pero no una credencial de SQL Server
TO backup_device [ ,...n ]
WITH with_options [ ,...o ] De forma opcional, puede especificar una o varias opciones, o. Para
obtener información sobre algunas de las opciones de WITH básicas, vea
el paso 2.
{ COMPRESSION | NO_COMPRESSION }
En SQL Server 2008 Enterprise y versiones posteriores únicamente, especifica si
la compresión de copia de seguridad se realiza en esta copia de seguridad, lo que
invalida la configuración predeterminada del servidor.
Opcionalmente, para dar formato a los medios de copia de seguridad, utilice la opción
FORMAT:
En este ejemplo, se crea un dispositivo de copia de seguridad lógico para una unidad de cinta. A
continuación, se realiza una copia de seguridad completa de la base de
datosAdventureWorks2012 en dicho dispositivo.
SQLCopiar
-- Create a logical backup device,
-- AdventureWorks2012_Bak_Tape, for tape device \\.\tape0.
USE master;
GO
EXEC sp_addumpdevice 'tape', 'AdventureWorks2012_Bak_Tape', '\\.\tape0'; USE
AdventureWorks2012;
GO
BACKUP DATABASE AdventureWorks2012
TO AdventureWorks2012_Bak_Tape
WITH FORMAT,
MEDIANAME = 'AdventureWorks2012_Bak_Tape',
MEDIADESCRIPTION = '\\.\tape0',
NAME = 'Full Backup of AdventureWorks2012';
GO
Usar PowerShell
Use el cmdlet Backup-SqlDatabase . Para indicar explícitamente que esta es una copia de
seguridad completa de la base de datos, especifique el parámetro -BackupAction con su valor
predeterminado, Database. Este parámetro es opcional para las copias de seguridad de base de
datos completas.
Ejemplos
A. Copia de seguridad local completa
En el ejemplo siguiente se crea una copia de seguridad completa de la base de datos MyDB en la
ubicación de copia de seguridad predeterminada de la instancia de
servidor Computer\Instance.Opcionalmente, en este ejemplo se especifica -BackupAction
Database.
PowerShellCopiar
Backup-SqlDatabase -ServerInstance Computer\Instance -Database MyDB -BackupAction
Database
B. Copia de seguridad completa en Microsoft Azure
En el ejemplo siguiente se crea una copia de seguridad completa de la base de datos Sales de la
instancia de MyServer en el servicio de almacenamiento de blobs de Microsoft Azure. Se ha creado
una directiva de acceso almacenada con derechos de lectura, escritura y lista. La credencial de
SQL Server, https://mystorageaccount.blob.core.windows.net/myfirstcontainer, se creó con una
firma de acceso compartido asociada a la directiva de acceso almacenada. El comando de
PowerShell usa el parámetro BackupFile para especificar la ubicación (dirección URL) y el nombre
del archivo de copia de seguridad.
PowerShellCopiar
import-module sqlps;
$container = 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer';
$FileName = 'Sales.bak';
$database = 'Sales';
$BackupFile = $container + '/' + $FileName ;
Cuando hablamos de Alta Disponibilidad nos referimos a la creación de un protocolo para nuestro
sistema que pueda proporcionar una protección completa de datos y su disponibilidad para poder
asegurar un cierto grado de continuidad operacional durante un periodo de medición dado (los
famosos nueves anuales, por ejemplo).
Almacenamiento compartido
Redundancia de datos (Replicación)
Streaming Replication
Maestro – Esclavo
Síncrono
Asíncrono
Multi – Maestro
En próximas entradas iremos detallando las diferentes opciones que tenemos para cada una de
ellas. Además disponemos de un curso donde se indaga más en algunas de estas opciones y se
realiza la configuración necesaria para dichos métodos.
Bienvenidos a una nueva entrada en nuestro portal formativo en PostgreSQL. Esta semana
estaremos hablando de una de las herramientas de modelado más importantes de PostgreSQL.
Cuando empezamos un nuevo proyecto, debemos de crear las estructuras que contienen los
datos dentro de una base de datos. Para ello deberíamos de realizar el diseño en papel o utilizar
una herramienta para el diseño de bases de datos.
Existen varias herramientas para el diseño de las estructuras de datos, con las que nos resultará
más fácil crear los modelos de tablas con sus columnas. Incluyendo las restricciones y relaciones
entre las demás tablas.
La herramienta pgModeler
Este programa es Open Source y se utiliza para el modelado de las bases de datos. Implementa
una serie de características y utilidades que vamos a ver a continuación.
Podemos crear y editar de forma sencilla y rápida modelos de bases de datos con una
interfaz simple. También incluye unos formularios con una serie de campos que se deben de
completar para generar el código SQL de forma correcta.
Tenemos a nuestra disposición el código fuente en un repositorio publico para poder
modificar y redistribuir a nuestro antojo. Además, es multiplataforma, por lo que podemos
compilar el código fuente en varios Sistemas Operativos, como Windows, Linux y macOS.
Cuando hemos terminado de diseñar nuestras bases de datos con sus tablas, columnas y
tipos de datos, y hemos especificado las relaciones entre tablas. Nos permite exportar las
estructuras de datos a los servidores de PostgreSQL.
Actualmente soporta desde la versión 9.0 de PostgreSQL. En la reciente versión estable
0.9.1, incluyen el soporte hasta la versión 10 de PostgreSQL. Es por ello que esta
herramienta es la más utilizada para el modelado de datos para Postgres.
pgModeler también proporciona un módulo de administración de bases de
datos simple pero útil. Con el que es posible ejecutar comandos SQL, explorar los objetos y
manejar datos.
Otra de las funciones adicionales de pgModeler, es que podemos generar scripts SQL que
contienen los comandos necesarios para mantener sincronizada la base de datos con
respecto al modelo.
Ahora que conocéis las características y utilidades de esta herramienta podéis plateros la
utilización de la misma en los nuevos proyectos que tengáis en plan.
Por lo que vi en post anterior, hay un esquema (habian varios pero este me
parecio el que mas se adecuaba) que podria reemplazar el esquema actual,
http://www.linuxjournal.com/article/7834 ,pero del cual no tengo noticias
si se implemento exitosamente y que performance tiene.
Aunque el común denominador suele referirse a estas soluciones de base de datos como cluster o
clusterización por el hecho de que normalmente implica varios servidores, varias instancias o
instalaciones de bases de datos distribuidas tal vez hasta geográficamente, lo correcto es referirse
a “Alta Disponibilidad” del ingles “High Availability“ (en muchos textos se abrevia HA) por que
nos indica que la prioridad es “Mantener la Continuidad Operativa” de nuestro servicio, de nuestras
operaciones, de la infraestructura tecnológica que soporta un negocio que simplemente no se puede
dar el lujo de detenerse, o en caso de falla tiene que recuperarse y restaurarse bajo unas reglas
definidas previamente, es por ello que hablamos de Alta Disponibilidad y no de cluster. Pgpool-II es
una de las mejores y mas completa herramienta para brindar soluciones de alta disponibilidad en el
manejador de bases de datos libres PostgreSQL. PgPool-II es software libre que trabaja
como intermediario (middleware) entre clientes que se conecten contra postgres (psql, pgadmin,
DBA’s, software, aplicativos, etc..) y otras instancias de bases de datos (nodos) para distribuir el
trabajo o la carga entre los distintos nodos con los que cuente nuestro diseño o implementación de
alta disponibilidad. Los clientes ven y se conectan a PgPool a través de una cadena de conexión
común y silvestre como si fuera una base de datos mas, y a su vez cada uno de los nodos ven a
PgPool como si fuera un cliente mas, de ahí que PgPool podría ser considerado desde este punto
de vista como cliente y servidor al mismo tiempo.
PgPool sobresale sobre otras herramientas de software libre que brindan o buscan brindar alta
disponibilidad para PostgreSQL por tener soporte para las siguientes características:
Agrupación de Conexiones ( Connection Pooling )
PgPool-II guarda las conexiones establecidas con los servidores PostgreSQL (nodos), y las vuelve
a usar cada vez que una nueva conexión con las mismas propiedades (usuario, base de datos,
puerto, versión del protocolo) es necesitada. Esto reduce la sobrecarga de la conexión y mejora
considerablemente el rendimiento general de los sistemas.
Replicación ( Replication )
PgPool-II puede gestionar múltiples servidores PostgreSQL. Habilitando la funcionalidad de
replicación permite crear una copia de seguridad en tiempo real de dos (2) o mas servidores
Postgres, de modo que en caso de fallo de alguno de esos nodos el servicio puede continuar sin
interrupción.