Página 1 de 1

Fazendo Backup no Banco de Dados MYSQL

Enviado: 10 Mai 2014 17:58
por 09466261000176
Olá Pessoal. Estou querendo fazer backup do meu banco. Quero embutir em meu aplicativo o comando sql para tal evento. Comno fazer isso por dentro de meu programa? Usei este comando mas ele não funcionou.
mysqldump -u root -ppadrao --all-databases > backup_banco.sql

Fazendo Backup no Banco de Dados MYSQL

Enviado: 13 Mai 2014 11:33
por Kapiaba

Fazendo Backup no Banco de Dados MYSQL

Enviado: 18 Mai 2014 12:19
por 09466261000176
Não. Seria algo assim:

No fonte...

cQuery:="comando sql para executar a copia do banco"
sql execute ( cQuery )

Outra coisa estou usando WINDOWS 8.0 não LINUX

Fazendo Backup no Banco de Dados MYSQL

Enviado: 19 Mai 2014 17:13
por Kapiaba

Fazendo Backup no Banco de Dados MYSQL

Enviado: 22 Mai 2014 22:04
por 09466261000176
Usar o MYSQLDUMP tudo bem consigo, porém o que quero é embutir dento de meu fonte comandos SQL para realizar esta operação. Não quero fazer isso por um .BAT nem direto na console do MYSQL. Fica mais elegante o próprio programa executar.

Fazendo Backup no Banco de Dados MYSQL

Enviado: 23 Mai 2014 01:50
por alxsts
Olá!

Recentemente instalei o MySQL, seguindo um excelente tutorial postado pelo Toledo mas, ainda não iniciei meus testes com ele.

Tenho alguns testes feitos com SQL Server com ADO, onde crio um banco de dados e algumas tabelas no mesmo, que compartilho abaixo. Creio que eja possível adaptar isto para MySQL e acrescentar a rotina de backup.

Código: Selecionar todos

#include "ado.ch"
#include "box.ch"
#include "hbcompat.ch"

REQUEST HB_CODEPAGE_PTISO

STATIC oCn As Object

//------------------------------------------------------------------------------

INIT PROCEDURE AppInit()

   LOCAL oErr As Object
   LOCAL cCnString As Character

   Altd()
   
   RELEASE GetList
   HB_CDPSELECT("PTISO")

   Set( _SET_DATEFORMAT, "dd/mm/yyyy" )
   SetMode(50,150)
   SetBlink( .F. )
   SetColor( "W+/N, N/W*" )

   CLS

   DispBox( 0,0,2, MaxCol(), Space(9), "W+/RB"  )
   DispBox( 3,0,MaxRow() - 1, MaxCol() * .25, Space(9), "N/N"  )
   DispBox( 3,(MaxCol() * .25) + 1,MaxRow(), MaxCol() , Space(9), "N/BG+"  )
   DispBox( MaxRow(), 0, MaxRow(), MaxCol(), Space(9), "N/W"  )
   DispOutAt( 1,0, PadC("Testando Harbour + ADO + SQL Server",MaxCol()), "W+/RB" )


   Try
      cCnString := "Provider=SQLNCLI10;Server=(Local);Database=Harbour;Uid=sa;Pwd=xyz;"

      oCn := win_OleCreateObject("ADODB.Connection")

      oCn:ConnectionString := cCnString
      oCn:CursorLocation := adUseClient
      oCn:Mode := adModeReadWrite

   Catch oErr
      Alert( "Não foi possível conectar ao banco de dados.;Erro: " + oErr:description, { "  Fechar  " } )
      __Quit()
   Finally
   
   End
   
RETURN
//------------------------------------------------------------------------------

FUNCTION AppMain()

   LOCAL oRs As Object
   LOCAL oErr As Object
   LOCAL cSql As Character

   Altd()

   Try
      // Cria novo banco de dados, se não existir
      oRs := ExecuteSQL( "SELECT IsNull( db_id('harbour'),0 ) As dbID" )

      If ! oRs:Eof()
         If oRs:fields("dbID"):value == 0
            TEXT INTO cSql
               CREATE DATABASE Harbour
               ON
               ( NAME = Harbour_dat,
                   FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Harbour.mdf',
                   SIZE = 10,
                   MAXSIZE = 50,
                   FILEGROWTH = 5 )
               LOG ON
               ( NAME = Harbour_log,
                   FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Harbour.ldf',
                   SIZE = 5MB,
                   MAXSIZE = 25MB,
                   FILEGROWTH = 5MB ) ;
            ENDTEXT

            oCn:Open()

            oCn:Execute( cSql )

            Alert( "Banco de dados 'Harbour' criado com sucesso.",, "W+/B" )
         Else
            Alert( "Banco de dados 'Harbour' já existe e não pode ser criado novamente.",, "W+/B" )
         Endif
      Else
         Alert( "RS vazio" )
      Endif
      
      TablesGenerator( ScriptGenerator() )

      Alert( "O banco de dados da aplicação foi criado com sucesso: 'Harbour'.",, "W+/B" )

   Catch oErr
      If oErr != NIL
         Alert(oErr:description)
      Endif
      Alert( "Ocorreram erros.;O banco de dados da aplicação não foi criado com sucesso: 'Harbour'.",, "W+/B" )
   Finally
      If oRs != NIL .And. oRs:state() == adStateOpen
         oRs:Close()
      Endif

      If oCn:state() == adStateOpen
         oCn:Close()
      Endif

      oRs := NIL
      oCn := NIL
   End

RETURN
//------------------------------------------------------------------------------

EXIT PROCEDURE AppExit()

   HB_GCAll( .T. )
   CLS

RETURN

//------------------------------------------------------------------------------

STATIC FUNCTION ExecuteSql( cSql )

   LOCAL oRs As Object
   LOCAL oErr As Object
   LOCAL cCnString As Character

   Try
      oRs := win_OleCreateObject("ADODB.RecordSet")
   
      With Object oRs

         :activeConnection := oCn:connectionString

         :cursorLocation := adUseClient
         :cursorType := adOpenDynamic

         :lockType := adLockOptimistic

         :maxRecords := 100000
         :cacheSize := 100
         :source := cSql

         :open()
      End With
   Catch oErr
      Throw( oErr )
   End
   
   RETURN oRs
//------------------------------------------------------------------------------

STATIC FUNCTION TablesGenerator( aScripts )

   LOCAL cSql As Character
   LOCAL lRet As Logical

   lRet := .F.
      
   Try
      oCn:Open()

      For Each cSql In aScripts
         oCn:Execute( cSql )
      Next

      lRet := .T.
      
   Catch oErr
      Throw( oErr )
   Finally
      If oCn:state() = adStateOpen
         oCn:Close()
      Endif
   End

RETURN lRet
//------------------------------------------------------------------------------

STATIC FUNCTION ScriptGenerator()

   LOCAL cSql As Character
   LOCAL aRet As Array

   aRet := {}

   TEXT INTO cSql
      USE [Harbour]

      /****** Object:  Table [dbo].[tbAddressType]    Script Date: 09/04/2014 20:18:23 ******/
      SET ANSI_NULLS ON
      SET QUOTED_IDENTIFIER ON
      SET ANSI_PADDING ON

      CREATE TABLE [dbo].[tbAddressType](
      	[idAddressType] [int] IDENTITY(1,1) NOT NULL,
      	[dsAddressType] [varchar](20) NOT NULL,
       CONSTRAINT [XPKtbAddressType] PRIMARY KEY CLUSTERED
      (
      	[idAddressType] ASC
      )WITH (PAD_INDEX = ON, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
      ) ON [PRIMARY]

      SET ANSI_PADDING OFF
   ENDTEXT

   AAdd( aRet, cSql )

   //
   
   TEXT INTO cSql
      USE [Harbour]

      /****** Object:  Table [dbo].[tbCountry]    Script Date: 09/04/2014 20:20:26 ******/
      
      IF OBJECT_ID('dbo.tbNewItens', 'U') IS NULL

      SET ANSI_NULLS ON
      SET QUOTED_IDENTIFIER ON
      SET ANSI_PADDING ON

      CREATE TABLE [dbo].[tbCountry](
      	[idCountry] [char](3) NOT NULL,
      	[dsCountry] [varchar](50) NOT NULL,
      	[idContinent] [char](1) NOT NULL,
      	[dsContinent] [varchar](50) NOT NULL,
       CONSTRAINT [XPKtbCountry] PRIMARY KEY CLUSTERED
      (
      	[idCountry] ASC
      )WITH (PAD_INDEX = ON, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
      ) ON [PRIMARY]

      SET ANSI_PADDING OFF
   ENDTEXT

   AAdd( aRet, cSql )

   //
   
   TEXT INTO cSql
      /****** Object:  Table [dbo].[tbCustomer]    Script Date: 09/04/2014 19:56:51 ******/
      SET ANSI_NULLS ON
      SET QUOTED_IDENTIFIER ON
      SET ANSI_PADDING ON

      CREATE TABLE [dbo].[tbCustomer](
      	[idCustomer] [int] IDENTITY(1,1) NOT NULL,
      	[dsEmail] [varchar](100) NULL,
      	[dsPassword] [varchar](50) NULL,
      	[dsPwdCrypto] [varchar](250) NULL,
      	[dsName] [varchar](200) NOT NULL,
      	[dsLastName] [varchar](250) NULL,
      	[dsNickName] [varchar](20) NULL,
      	[idProfile] [int] NOT NULL,
      	[dtCreated] [datetime] NOT NULL,
      	[dtLastLogin] [datetime] NULL,
      	[dtLastOrder] [datetime] NULL,
      	[fgReceiveEmail] [tinyint] NOT NULL,
      	[fgActiveLogin] [tinyint] NOT NULL,
      	[idVipCustomerMain] [varchar](40) NULL,
      	[dtModified] [datetime] NOT NULL,
      	[dtMadeInModified] [datetime] NULL,
      	[dtMadeInCreated] [datetime] NULL,
      	[fldCustomer] [tinyint] NOT NULL,
      	[fgReceiveEmailFormat] [tinyint] NOT NULL,
      	[dtSync] [datetime] NULL,
      	[bitEstrangeiro] [bit] NULL,
       CONSTRAINT [PK_tbReseller] PRIMARY KEY CLUSTERED
      (
      	[idCustomer] ASC
      )WITH (PAD_INDEX = ON, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
      ) ON [PRIMARY]

      SET ANSI_PADDING OFF

      ALTER TABLE [dbo].[tbCustomer] ADD  CONSTRAINT [DF_tbCustomer_fldCustomer]  DEFAULT ((0)) FOR [fldCustomer]
      ALTER TABLE [dbo].[tbCustomer] ADD  CONSTRAINT [DF_tbCustomer_fgReceiveEmailFormat]  DEFAULT ((0)) FOR [fgReceiveEmailFormat]
      ALTER TABLE [dbo].[tbCustomer] ADD  CONSTRAINT [DF_tbCustomer_bitEstrangeiro]  DEFAULT ((0)) FOR [bitEstrangeiro]
   ENDTEXT

   AAdd( aRet, cSql )

   //
   
   TEXT INTO cSql
      /****** Object:  Table [dbo].[tbCustomerDetail]    Script Date: 09/04/2014 19:58:46 ******/
      SET ANSI_NULLS ON
      SET QUOTED_IDENTIFIER ON
      SET ANSI_PADDING ON

      CREATE TABLE [dbo].[tbCustomerDetail](
      	[idCustomer] [int] NOT NULL,
      	[dsCNPJ] [varchar](18) NULL,
      	[dsIE] [varchar](15) NULL,
      	[dsIM] [varchar](15) NULL,
      	[dsResponsible] [varchar](30) NULL,
      	[dsCpf] [varchar](15) NULL,
      	[dtBirthDate] [datetime] NULL,
      	[dsSex] [char](1) NULL,
      	[dsCelularPhone] [varchar](20) NULL,
      	[fgPfPj] [char](1) NOT NULL,
      	[dsRG] [varchar](25) NULL,
      	[dsPhoneDDD1] [varchar](5) NULL,
      	[dsPhone1] [varchar](30) NULL,
      	[dsBranchPhone1] [varchar](20) NULL,
      	[dsPhoneDDD2] [varchar](5) NULL,
      	[dsPhone2] [varchar](30) NULL,
      	[dsBranchPhone2] [varchar](20) NULL,
      	[dsPhoneDDD3] [varchar](5) NULL,
      	[dsPhone3] [varchar](30) NULL,
      	[dsBranchPhone3] [varchar](20) NULL,
      	[dsDispatcherAgency] [varchar](10) NULL,
      	[fgSMS] [tinyint] NOT NULL,
       CONSTRAINT [PK_tbCustomerDetail] PRIMARY KEY CLUSTERED
      (
      	[idCustomer] ASC
      )WITH (PAD_INDEX = ON, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
      ) ON [PRIMARY]

      SET ANSI_PADDING OFF

      ALTER TABLE [dbo].[tbCustomerDetail] ADD  CONSTRAINT [DF_tbCustomerDetail_fgSMS]  DEFAULT ((0)) FOR [fgSMS]
      ALTER TABLE [dbo].[tbCustomerDetail]  WITH CHECK ADD  CONSTRAINT [FK_tbCustomer_tbCustomerDetail] FOREIGN KEY([idCustomer])
      REFERENCES [dbo].[tbCustomer] ([idCustomer])
      ALTER TABLE [dbo].[tbCustomerDetail] CHECK CONSTRAINT [FK_tbCustomer_tbCustomerDetail]
   ENDTEXT

   AAdd( aRet, cSql )

   //
   
   TEXT INTO cSql
      /****** Object:  Table [dbo].[tbCustomerDeliveryAddr]    Script Date: 09/04/2014 20:00:31 ******/
      SET ANSI_NULLS ON
      SET QUOTED_IDENTIFIER ON
      SET ANSI_PADDING ON

      CREATE TABLE [dbo].[tbCustomerDeliveryAddr](
      	[idCustomerDeliveryAddr] [int] IDENTITY(1,1) NOT NULL,
      	[dsDestinationName] [varchar](200) NOT NULL,
      	[dsAddress] [varchar](80) NOT NULL,
      	[dsNumber] [varchar](10) NOT NULL,
      	[dsComplement] [varchar](30) NULL,
      	[dsZip] [varchar](10) NULL,
      	[dsCity] [varchar](40) NULL,
      	[dsDistrict] [varchar](40) NULL,
      	[idCustomer] [int] NOT NULL,
      	[idCountry] [char](3) NOT NULL,
      	[idState] [char](2) NOT NULL,
      	[dsReferenceAddress] [varchar](200) NULL,
      	[fgCustomerAddress] [tinyint] NOT NULL,
      	[fgMainAddress] [tinyint] NOT NULL,
      	[dsParentHood] [varchar](20) NULL,
      	[dsEmail] [varchar](100) NULL,
      	[dsProvince] [varchar](30) NULL,
      	[dsDeliveryName] [varchar](200) NULL,
      	[dsPhoneDDD1] [varchar](5) NULL,
      	[dsPhone1] [varchar](30) NULL,
      	[dsBranchPhone1] [varchar](20) NULL,
      	[dsPhoneDDD2] [varchar](5) NULL,
      	[dsPhone2] [varchar](30) NULL,
      	[dsBranchPhone2] [varchar](20) NULL,
      	[dsPhoneDDD3] [varchar](5) NULL,
      	[dsPhone3] [varchar](30) NULL,
      	[dsBranchPhone3] [varchar](20) NULL,
      	[idAddressType] [int] NULL,
      	[dtMadeInCreated] [datetime] NULL,
      	[dtMadeInModified] [datetime] NULL,
       CONSTRAINT [PK_tbCustomerAddr] PRIMARY KEY CLUSTERED
      (
      	[idCustomerDeliveryAddr] ASC
      )WITH (PAD_INDEX = ON, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
      ) ON [PRIMARY]

      SET ANSI_PADDING OFF

      ALTER TABLE [dbo].[tbCustomerDeliveryAddr]  WITH CHECK ADD  CONSTRAINT [FK_tbAddressType_tbCustomerDeliveryAddr] FOREIGN KEY([idAddressType])
      REFERENCES [dbo].[tbAddressType] ([idAddressType])

      ALTER TABLE [dbo].[tbCustomerDeliveryAddr] CHECK CONSTRAINT [FK_tbAddressType_tbCustomerDeliveryAddr]

      ALTER TABLE [dbo].[tbCustomerDeliveryAddr]  WITH CHECK ADD  CONSTRAINT [FK_tbCountry_tbCustomDeliveryAddr] FOREIGN KEY([idCountry])
      REFERENCES [dbo].[tbCountry] ([idCountry])

      ALTER TABLE [dbo].[tbCustomerDeliveryAddr] CHECK CONSTRAINT [FK_tbCountry_tbCustomDeliveryAddr]

      ALTER TABLE [dbo].[tbCustomerDeliveryAddr]  WITH CHECK ADD  CONSTRAINT [FK_tbCustomer_tbCustomerAddr] FOREIGN KEY([idCustomer])
      REFERENCES [dbo].[tbCustomer] ([idCustomer])

      ALTER TABLE [dbo].[tbCustomerDeliveryAddr] CHECK CONSTRAINT [FK_tbCustomer_tbCustomerAddr]
   ENDTEXT

   AAdd( aRet, cSql )

RETURN aRet
//------------------------------------------------------------------------------

Fazendo Backup no Banco de Dados MYSQL

Enviado: 05 Jun 2014 02:28
por rochinha
Amiguinho,

Veja se o MySQL aceita o comando:

Código: Selecionar todos

BACKUP DATABASE NomeDoDatabase TO DISK='C:\BACKUPS\NomeDoDatabase.bak'
Para restaurar:

Código: Selecionar todos

RESTORE DATABASE NomeDoDatabase FROM DISK='C:\BACKUPS\NomeDoDatabase.bak'
Não uso ainda o MySQL mas sei que algum SQL tem estes comandos.

Fazendo Backup no Banco de Dados MYSQL

Enviado: 09 Abr 2021 22:06
por asimoes
Faço assim no MariaDb

Código: Selecionar todos

mysqldump --databases --routines --triggers asaprev -u root -p****** >> backupbanco\backupbanco.sql

::Execute( "mysqldump", "--databases --routines --triggers asaprev -u root -p***** >> backupbanco\backupbanco.sql ", .T. ) //faz dump do banco de dados

Fazendo Backup no Banco de Dados MYSQL

Enviado: 10 Abr 2021 23:28
por alxsts
Olá!

Como seria o comando para restore?

Fazendo Backup no Banco de Dados MYSQL

Enviado: 11 Abr 2021 09:40
por JoséQuintas
09466261000176 escreveu:Usar o MYSQLDUMP tudo bem consigo, porém o que quero é embutir dento de meu fonte comandos SQL para realizar esta operação. Não quero fazer isso por um .BAT nem direto na console do MYSQL. Fica mais elegante o próprio programa executar.
Não existe comando SQL pra backup.
Existem utilitários que fazem backup.
Ou faz no aplicativo uma chamada de um programa de backup, com o comando que ele precisa, ou cria toda uma rotina de backup no aplicativo.
O MySQLDump é um dos utilitários que fazem backup.

Pra fazer pelo aplicativo, vários comandos select *, um pra cada tabela, e mais pra stored procedures, views, etc.