mysql同一台服務器上不同數據庫中個別表內容同步


>>>>>>soft_wsx>>>>>>
--數據備份與還原>>同步備用服務器
--1、完全備份主數據庫
--2、使用帶SANDBY子句的RESTORE DATABASE語句從主數據庫的完全備份中還原生成備用數據庫
--3、創建作業,使用BACKUP LOG定時對主數據庫時行日志備份
--4、創建作業,使用帶STANDBY子句的RESTORE LOG語句定時從主數據庫的日志備份中恢復數據到備用數據庫
--5、主數據庫不可用時,使用帶RECOVERY子句的RESTORE LOG語句使備用數據庫升級為主數據庫
----具體代碼及說明如下
---->>首先、創建一個淙用的數據庫(主數據庫)
create database db_test_primary
on
(
name=db_test_primary_data,
filename='d:\db_test_primary_data.mdf')
log on
(
name='db_test_primary_log',
filename='d:\db_test_primary_log.ldf'
)
go

--在主數據庫上創建表
create TABLE db_test_primary.dbo.db_test_primary1(id int)
insert db_test_primary.dbo.db_test_primary1 select top 1000 ID from dbo.sysobjects
go
--對主數據庫進行備份
backup database db_test_primary
to disk='d:\db_test_primary_data.bak'
with format
go

--通過主數據庫備份文件創建備用數據庫(演示主數據庫與這個備用數據庫之間的同步)
restore database db_test_second
from disk='d:\db_test_primary_data.bak'
with replace,
standby='d:\db_test_primary_bak.ldf',
move 'db_test_primary_data' to 'd:\db_test_second_data.mdf',
move 'db_test_primary_log' to 'd:\db_test_second_log.ldf'

--啟動SQL AGENT服務(需要通過作業定時將主數據庫同步到備用數據庫)
exec master.dbo.xp_cmdshell 'net start sqlserveragent',no_output
go

--創建主服務數據庫與備用服務器數據庫之間同步的作業
declare @jobid uniqueidentifier
exec msdb.dbo.sp_add_job
@job_id=@jobid output,
@job_name=N'數據同步'

--創建同步處理步驟
exec msdb.dbo.sp_add_jobstep
@job_id=@jobid,
@step_name=N'數據同步',
@subsystem='TSQL',
@command=N'
--主數據庫中進行日志備份
backup log db_test_primary
to disk=''d:\test_log_primary.bak''
with format

--備用數據中還原主數據庫的日志備份(應用主數據庫中的最新變化)
--注:實際應該對主數據庫備份與備用數據庫的還原作業應該分別在主服務器和備用服務器上建立,
--並且備份文件應該放在主服務器和備用服務器都能訪問的共享目錄中
restore log db_test_second
from disk=''d:\test_log_primary.bak''
with standby=''d:\test_log.ldf''',
@retry_attempts=5,
@retry_interval=5
--創建調度
exec msdb.dbo.sp_add_jobschedule
@job_id=@jobid,
@name='時間安排',
@freq_TYPE=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1

--添加目錄服務器
exec msdb.dbo.sp_add_jobserver
@job_ID=@jobid,
@server_name=N'(local)'
go
--通過上述處理,主數據庫與備用數據庫之間的同步關系已經設置完成
--下面開始測試是否能實現同步
create table db_test_primary.dbo.db_test_primary3(id int)
go
insert db_test_primary.dbo.db_test_primary3 select top 5000 id from dbo.sysobjects
waitfor delay '00:01:30'
go

--查詢一下備用數據庫,看看同步是否成功

select * from db_test_second.dbo.db_test_primary3


drop table db_test_primary.dbo.db_test_primary3


--最后刪除測試環境
drop database msdb.dbo.sp_delete_job
@job_name=N'數據同步'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM