Rumah pangkalan data tutorial mysql 数据库远程全备份的一种解决方案

数据库远程全备份的一种解决方案

Dec 15, 2016 pm 04:01 PM
Sandaran pangkalan data

数据库远程全备份的一种解决方案

--exec BackUPDatabase_MaJiatao 'pubs','\\XZ154\ABC$','16:50:00.000',1,'XZ154\MaJiatao','MaJiatao'/***************************************************描述:数据库全备份和增量备份编写:马加涛修改:马加涛:2014-02-12:1.加入了备份路径可以选择本机和远程路径2.修正了保存历史备份记录的方式,不在需要本机硬盘上的文本文件来做保存介质***************************************************/if object_id('BackUPDatabase_MaJiatao') is not nulldrop PRoc BackUPDatabase_MaJiatao

GO

alter proc BackUPDatabase_MaJiatao@database_name sysname,--要备份的数据库名称@physical_backup_device_name sysname,--备份文件存放目录@all_backup_datetime char(17)='20:00:00.000',--全备份的时间@IntDistance int=1,--全备份的时间范围(小时)@UserName varchar(100),--远程服务器登录名称@PassWord varchar(100)=''--远程服务器登录密码with ENCRYPTION as

/*********************************declare @database_name sysname,--要备份的数据库名称@physical_backup_device_name sysname,--备份文件存放目录@all_backup_datetime char(17)select @database_name='test',@physical_backup_device_name='E:\备份文件\查询服务器',@all_backup_datetime='16:00:00.000'

***************************************/

--建立备份历史记录if not exists (select * from dbo.sysobjects where id = object_id(N'backup_recorder') and OBJECTPROPERTY(id, N'IsUserTable') = 1) exec('CREATE TABLE backup_recorder (backup_datetime datetime not null,backup_name varchar (500) PRIMARY KEY,backup_path varchar (500) NOT NULL ,is_all_backup char(1) not null default 0,file_is_exists char(1) not null default 0)')elsebeginif not exists(select * from syscolumns where name='file_is_exists' and ID=object_id(N'backup_recorder'))begindrop table backup_recorderexec('CREATE TABLE backup_recorder (backup_datetime datetime not null,backup_name varchar (500) PRIMARY KEY,backup_path varchar (500) NOT NULL ,is_all_backup char(1) not null default 0,file_is_exists char(1) not null default 0)')endend

declare @backup_set_full sysname,@backup_set sysname,--备份文件名称@backup_name sysname

declare @Return_Int intdeclare @CommandText nvarchar(4000)declare @DelFilePathName nvarchar(4000)

declare @physical_backup_device_name_now nvarchar(4000)

declare @physical_backup_device_namebackup nvarchar(4000)

if isnull(@database_name,'')='' or rtrim(@database_name)=''--数据库名称为空set @database_name=db_name()--备份当前数据库

if isnull(@physical_backup_device_name,'')='' or rtrim(@physical_backup_device_name)=''--备份目录为空,使用系统默认目录beginSELECT @physical_backup_device_name=ltrim(rtrim(reverse(filename))) FROM master.dbo.sysdatabases where name=@database_nameset @physical_backup_device_name=reverse(substring(@physical_backup_device_name,charindex('\',@physical_backup_device_name)+5,260))+'backup'end

--判断路径是网络路径还是本机路径if left(@physical_backup_device_name,2)='\\' and ltrim(rtrim(@UserName))<>'' and ltrim(rtrim(@Password))<>''beginselect @CommandText='net use '+@physical_backup_device_name+' "'+@Password+'" /user:'+@UserNameexec master..xp_cmdshell @CommandText,no_outputend

--确定目录是否存在select @CommandText='dir '+@physical_backup_device_name+'\全备份'exec @Return_Int=master..xp_cmdshell @CommandText, no_outputif @Return_Int<>0 --目录不存在,建立beginselect @CommandText='Mkdir '+@physical_backup_device_name+'\全备份'exec @Return_Int=master..xp_cmdshell @CommandText, no_outputend

select @CommandText='dir '+@physical_backup_device_name+'\差异备份'exec @Return_Int=master..xp_cmdshell @CommandText, no_outputif @Return_Int<>0 --目录不存在,建立beginselect @CommandText='Mkdir '+@physical_backup_device_name+'\差异备份'exec @Return_Int=master..xp_cmdshell @CommandText, no_outputend

select @physical_backup_device_name_now=@database_name+'_'+ltrim(rtrim(REPLACE(REPLACE(REPLACE(REPLACE(convert(char(23),getdate(),21),'-',''),':',''),'.',''),' ','')))+'.bak'

if object_id('tempdb..#backup_recorder') is not nulldrop table #backup_recorderCREATE TABLE #backup_recorder (backup_datetime datetime not null,backup_name varchar (500) PRIMARY KEY,backup_path varchar (500) NOT NULL ,is_all_backup char(1) not null default 0,file_is_exists char(1) not null default 0)

--检查是否有全备份存在select @CommandText='dir '+@physical_backup_device_name+'\全备份\*.bak'exec @Return_Int=master..xp_cmdshell @CommandText, no_output

if @Return_Int<>0 --没有全备份文件存在,进行全备份beginselect @backup_set_full='全备份 '+@database_nameselect @physical_backup_device_namebackup=@physical_backup_device_name+'\全备份\'+@physical_backup_device_name_now

--全备份,重写媒体头BACKUP DATABASE @database_name to DISK=@physical_backup_device_namebackup WITH FORMAT ,NAME = @backup_set_fullif @@error=0--备份成功,删除当天全备份之前的所有历史备份文件begin--写备份日志insert into backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)values(getdate(),@physical_backup_device_name_now,@physical_backup_device_namebackup,'1','1')insert into #backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)select backup_datetime,backup_name,backup_path,is_all_backup,file_is_existsfrom backup_recorderwhere backup_name<>@physical_backup_device_name_now and is_all_backup='1' and file_is_exists='1'endendelsebegin--有全备份,验证全备份是否为上一天得指定时间之后--select @all_backup_datetime=REPLACE(REPLACE(@all_backup_datetime,':',''),'.','')if right(left(right(@physical_backup_device_name_now,21),17),9) between REPLACE(REPLACE(@all_backup_datetime,':',''),'.','') and REPLACE(REPLACE(substring(convert(char(23),dateadd(hh,@IntDistance,@all_backup_datetime),21),12,12),':',''),'.','')--进行全备份beginselect @backup_set_full='全备份 '+@database_nameselect @physical_backup_device_namebackup=@physical_backup_device_name+'\全备份\'+@physical_backup_device_name_now--全备份,重写媒体头BACKUP DATABASE @database_name to DISK=@physical_backup_device_namebackup WITH FORMAT ,NAME = @backup_set_fullif @@error=0--备份成功begin--写备份日志insert into backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)values(getdate(),@physical_backup_device_name_now,@physical_backup_device_namebackup,'1','1')--查找历史备份文件insert into #backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)select backup_datetime,backup_name,backup_path,is_all_backup,file_is_existsfrom backup_recorderwhere backup_name<>@physical_backup_device_name_now and is_all_backup='1' and file_is_exists='1'endendelse--当前备份时间小于指定的全备份时间,进行差异备份begin

select @backup_set_full='增量备份 '+@database_nameselect @physical_backup_device_namebackup=@physical_backup_device_name+'\差异备份\'+@physical_backup_device_name_now--差异备份,追加媒体BACKUP DATABASE @database_name to DISK=@physical_backup_device_namebackup WITH NOINIT , DIFFERENTIAL,NAME = @backup_setif @@error=0--备份成功begin--写备份日志insert into backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)values(getdate(),@physical_backup_device_name_now,@physical_backup_device_namebackup,'0','1')--查找历史备份文件insert into #backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)select backup_datetime,backup_name,backup_path,is_all_backup,file_is_existsfrom backup_recorderwhere backup_name<>@physical_backup_device_name_now and is_all_backup='0' and file_is_exists='1'endendend

DECLARE DelFilePathName CURSOR FORWARD_ONLY FOR select backup_path From #backup_recorder OPEN DelFilePathNameFETCH NEXT FROM DelFilePathName into @DelFilePathNameWHILE @@FETCH_STATUS = 0beginif exists(select *from backup_recorder where backup_path=@DelFilePathName and backup_name<>@physical_backup_device_name_now)beginselect @CommandText='del '+@DelFilePathNameexecute @Return_Int=master..xp_cmdshell @CommandText--,no_outputif @Return_Int=0 beginupdate backup_recorder set file_is_exists=0 where backup_path=@DelFilePathNameendendFETCH NEXT FROM DelFilePathName into @DelFilePathNameendCLOSE DelFilePathNameDEALLOCATE DelFilePathName

if object_id('tempdb..#backup_recorder') is not nulldrop table #backup_recorder

if left(@physical_backup_device_name,2)='\\' and ltrim(rtrim(@UserName))<>'' and ltrim(rtrim(@Password))<>''beginselect @CommandText='net share '+@physical_backup_device_name+' /delete'exec master..xp_cmdshell @CommandText,no_outputend

以上就是数据库远程全备份的一种解决方案的内容,更多相关文章请关注PHP中文网(www.php.cn)!


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP dan PDO: Bagaimana untuk melaksanakan operasi sandaran pangkalan data dan memulihkan PHP dan PDO: Bagaimana untuk melaksanakan operasi sandaran pangkalan data dan memulihkan Jul 29, 2023 pm 06:54 PM

PHP dan PDO: Cara melaksanakan operasi sandaran dan pemulihan pangkalan data Apabila membangunkan aplikasi web, sandaran dan pemulihan pangkalan data adalah tugas yang sangat penting. Sebagai bahasa skrip sebelah pelayan yang popular, PHP menyediakan banyak perpustakaan dan sambungan, antaranya PDO (Objek Data PHP) ialah lapisan abstraksi capaian pangkalan data yang berkuasa. Artikel ini akan memperkenalkan cara menggunakan PHP dan PDO untuk melaksanakan operasi sandaran dan pemulihan pangkalan data. Langkah 1: Sambung ke pangkalan data Sebelum operasi sebenar, kita perlu mewujudkan sambungan ke pangkalan data. Gunakan pasangan PDO

Analisis pengalaman projek pada sandaran pangkalan data MySQL dan pengoptimuman prestasi pemulihan Analisis pengalaman projek pada sandaran pangkalan data MySQL dan pengoptimuman prestasi pemulihan Nov 02, 2023 am 08:53 AM

Dalam era Internet semasa, kepentingan data adalah jelas. Sebagai salah satu komponen teras aplikasi Internet, sandaran pangkalan data dan kerja pemulihan adalah amat penting. Walau bagaimanapun, apabila jumlah data terus meningkat dan keperluan perniagaan menjadi semakin kompleks, sandaran pangkalan data tradisional dan penyelesaian pemulihan tidak lagi dapat memenuhi ketersediaan tinggi dan keperluan prestasi tinggi aplikasi moden. Oleh itu, mengoptimumkan prestasi sandaran dan pemulihan pangkalan data MySQL telah menjadi masalah mendesak yang perlu diselesaikan. Dalam amalan, kami telah menerima pakai satu siri pengalaman projek untuk meningkatkan data MySQL dengan berkesan

Cara menggunakan ThinkPHP6 untuk melaksanakan sandaran dan pemulihan pangkalan data Cara menggunakan ThinkPHP6 untuk melaksanakan sandaran dan pemulihan pangkalan data Jun 20, 2023 pm 07:25 PM

Dalam proses membangunkan sistem perniagaan, pangkalan data adalah bahagian yang sangat penting. Oleh itu, membuat sandaran dan memulihkan pangkalan data adalah operasi yang sangat diperlukan. Artikel ini akan menggabungkan contoh rangka kerja ThinkPHP6 untuk memperkenalkan cara menggunakan ThinkPHP6 untuk melaksanakan sandaran dan pemulihan pangkalan data. 1. Sandaran pangkalan data 1.1 Penyediaan persekitaran Sebelum melakukan sandaran pangkalan data, anda perlu mengesahkan perkara berikut: 1. Anda perlu menetapkan alamat direktori bin pangkalan data mysql dan menambah laluannya ke pembolehubah Laluan sistem 2. Anda perlu memasang mysqld

Cara menggunakan thinkorm untuk melaksanakan sandaran dan memulihkan pangkalan data Cara menggunakan thinkorm untuk melaksanakan sandaran dan memulihkan pangkalan data Jul 28, 2023 pm 02:05 PM

Tajuk: Menggunakan ThinkORM untuk merealisasikan sandaran dan pemulihan pangkalan data Pengenalan: Semasa proses pembangunan, sandaran dan pemulihan pangkalan data adalah tugas yang sangat penting. Artikel ini akan memperkenalkan cara menggunakan rangka kerja ThinkORM untuk melaksanakan sandaran dan pemulihan pangkalan data, serta menyediakan contoh kod yang sepadan. 1. Pengenalan latar belakang Semasa proses pembangunan, kami biasanya menggunakan pangkalan data untuk menyimpan dan mengurus data. Prinsip sandaran dan pemulihan pangkalan data adalah untuk melakukan sandaran pangkalan data secara tetap supaya data dapat dipulihkan dengan cepat sekiranya berlaku masalah pangkalan data atau kehilangan data. Dengan bantuan daripada

Bagaimana untuk membuat sandaran pangkalan data di Golang? Bagaimana untuk membuat sandaran pangkalan data di Golang? Jun 01, 2024 am 11:56 AM

Menyandarkan pangkalan data anda di Golang adalah penting untuk melindungi data anda. Anda boleh menggunakan pakej pangkalan data/sql dalam perpustakaan standard, atau pakej pihak ketiga seperti github.com/go-sql-driver/mysql. Langkah-langkah khusus termasuk: Sambung ke pangkalan data. Buat fail untuk menyimpan data sandaran. Gunakan fungsi Dump atau Pengeksport untuk menyandarkan pangkalan data kepada fail.

Sandaran dan pemulihan pangkalan data PHP dan Memcached Sandaran dan pemulihan pangkalan data PHP dan Memcached May 15, 2023 pm 09:12 PM

Dengan perkembangan pesat Internet, sandaran dan pemulihan pangkalan data MySQL berskala besar telah menjadi salah satu kemahiran penting untuk perusahaan dan laman web utama. Dengan aplikasi Memcached yang meluas, cara membuat sandaran dan memulihkan Memcached juga telah menjadi isu penting. Sebagai salah satu bahasa utama untuk pembangunan web, PHP mempunyai kelebihan dan kemahiran unik dalam mengendalikan sandaran dan pemulihan MySQL dan Memcached. Artikel ini akan memperkenalkan secara terperinci kaedah pelaksanaan pemproses PHP MySQL dan sandaran dan pemulihan Memcached.

Sandaran pangkalan data, pengoptimuman dan pemulihan Panel Pagoda Sandaran pangkalan data, pengoptimuman dan pemulihan Panel Pagoda Jun 21, 2023 am 09:45 AM

Dalam dunia dalam talian hari ini, tapak web telah menjadi pembawa penting bagi setiap perusahaan, organisasi atau individu untuk memaparkan jenama, perkhidmatan, produk dan lain-lain mereka. Untuk memastikan operasi normal dan keselamatan tapak web, kami perlu membuat sandaran dan mengoptimumkan secara berterusan pangkalan data dan pemulihan. Sebagai perisian pengurusan pelayan dengan operasi mudah, fungsi yang kaya dan antara muka yang cantik, Panel Pagoda juga cukup cemerlang dalam pengurusan pangkalan data dan mempunyai fungsi penting seperti sandaran, pengoptimuman dan pemulihan. Artikel ini akan menumpukan pada fungsi sandaran pangkalan data, pengoptimuman dan pemulihan Panel Pagoda dan kebimbangan yang berkaitan.

Amalan sandaran dan pemulihan pangkalan data: aplikasi dalam pengaturcaraan PHP Amalan sandaran dan pemulihan pangkalan data: aplikasi dalam pengaturcaraan PHP Jun 22, 2023 pm 07:10 PM

Dengan perkembangan Internet, sandaran dan pemulihan pangkalan data telah menjadi bahagian yang sangat penting dalam operasi dan proses pembangunan laman web. Pangkalan data adalah teras laman web dan mengandungi banyak maklumat penting Jika data hilang atau rosak, ia akan memberi impak yang besar kepada pengendalian laman web dan pengalaman pengguna. Oleh itu, bagi pengendali dan pembangun laman web, kepentingan sandaran dan pemulihan pangkalan data adalah jelas. Artikel ini akan menumpukan pada operasi sandaran pangkalan data dan pemulihan dalam pengaturcaraan PHP untuk rujukan oleh pembangun. 1. Nombor

See all articles