精华内容
下载资源
问答
  • 由于磁盘空间的问题,需要移动镜像数据库到一个不同的位置。我们想不停机、不破坏镜像来完成这个任务。需要在不同的环境做测试。  对于启用了数据库镜像的数据库的文件移动,我们只有有限的选择。常规方法如下: ...
  • 配置镜像数据库

    2018-05-30 11:50:00
    为了方便,这里以主数据库和镜像数据库为例,不设置见证数据; 1、环境准备。 (1)准备一个主数据库服务器 10.10.10.1,一个镜像据库服务器 10.10.10.2; (2)两个服务器都安装好SqlServer 2012; 2、数据库...

    为了方便,这里以主数据库和镜像数据库为例,不设置见证数据;

    1、环境准备。

    (1)准备一个主数据库服务器 10.10.10.1,一个镜像据库服务器 10.10.10.2;

    (2)两个服务器都安装好SqlServer 2012;

    2、数据库文件准备。

    (1)主库创建一个数据库 EmptyDb,恢复模式为【完整】,自动关闭为【false】,

    也可以用已经有的数据库,但是注意保证【恢复模式】:【完整】、【自动关闭】:【false】

     

     

    (2)主库备份数据库 (完整备份)(注意还有做一次【事务日志备份】,备份指定的是一个文件)

    (3)在镜像库还原数据库 ,保证镜像库还原中状态;

     

    3、加密、证书生成、证书互换

    (1)主库执行(保证主服务器存在路径d:\mirror)

    USE master
    CREATE MASTER KEY ENCRYPTION BY PASSWORD ='123456'
    --创建本地证书
    CREATE CERTIFICATE MirrorDB0_Cerf WITH SUBJECT='MirrorDB0_Cerf ',EXPIRY_DATE='20501230'
    -- 创建镜像端点
    CREATE ENDPOINT Mirroring STATE=STARTED
       AS TCP(LISTENER_PORT = 5022, LISTENER_IP = ALL)
       FOR DATABASE_MIRRORING
        (AUTHENTICATION = CERTIFICATE MirrorDB0_Cerf, ENCRYPTION = REQUIRED ALGORITHM AES, ROLE=ALL)
    -- 备份证书文件
    BACKUP CERTIFICATE MirrorDB0_Cerf TO FILE ='D:\Mirror\MirrorDB0_Cerf.cer'
    
    CREATE LOGIN sqlmirror WITH PASSWORD ='123456' --; //如果已经存在这个用户则不需要创建
    CREATE USER sqlmirror FOR LOGIN sqlmirror--; //如果已经存在这个用户则不需要创建

    (2) 镜像库执行(保证镜像服务器存在路径d:\mirror),跟主库基本一致,只是证书文件不一样;

     USE master
    CREATE MASTER KEY ENCRYPTION BY PASSWORD ='123456'
    --创建本地证书
    CREATE CERTIFICATE MirrorDB0_Cerf WITH SUBJECT='MirrorDB1_Cerf ',EXPIRY_DATE='20501230'
    -- 创建镜像端点
    CREATE ENDPOINT Mirroring STATE=STARTED
       AS TCP(LISTENER_PORT = 5022, LISTENER_IP = ALL)
       FOR DATABASE_MIRRORING
        (AUTHENTICATION = CERTIFICATE MirrorDB0_Cerf, ENCRYPTION = REQUIRED ALGORITHM AES, ROLE=ALL)
    -- 备份证书文件
    BACKUP CERTIFICATE MirrorDB0_Cerf TO FILE ='D:\Mirror\MirrorDB1_Cerf.cer'
    
    CREATE LOGIN sqlmirror WITH PASSWORD ='123456' --; //如果已经存在这个用户则不需要创建
    CREATE USER sqlmirror FOR LOGIN sqlmirror--; //如果已经存在这个用户则不需要创建

    (3)文件拷贝

     把主库服务器的D:\Mirror\MirrorDB0_Cerf.cer 拷贝到镜像数据库服务器的D:\Mirror;

     把镜像服务器的D:\Mirror\MirrorDB1_Cerf.cer 拷贝到主库数据库服务器的D:\Mirror;

    (4)主库执行

    --交换证书
    GRANT CONNECT ON ENDPOINT::Mirroring TO sqlmirror;
    CREATE CERTIFICATE MirrorDB1_Cerf AUTHORIZATION sqlmirror FROM FILE='D:\Mirror\MirrorDB1_Cerf.cer'

     

    (5)镜像库执行

    GRANT CONNECT ON ENDPOINT::Mirroring TO sqlmirror;
    CREATE CERTIFICATE MirrorDB0_Cerf AUTHORIZATION sqlmirror FROM FILE='D:\Mirror\MirrorDB0_Cerf.cer'

    4、生成镜像

    (1)镜像库执行

     ALTER DATABASE EmptyDb SET PARTNER = 'TCP://10.10.10.1:5022';

     

    (2)主库执行

     ALTER DATABASE EmptyDb SET PARTNER = 'TCP://10.10.10.2:5022';

     5、查验是否成功

    (1)主库的状态【主体,已同步】;

    (2)镜像库的状态【镜像,已同步/正在还原中】;

    (3)语句查询(主库和镜像库都可以),name表示启用了镜像的数据名称;

    SELECT DISTINCT
            d.name ,
            m.mirroring_role_desc ,
            m.mirroring_state_desc 
    FROM    sys.database_mirroring m
            JOIN sys.databases d ON m.database_id = d.database_id
    WHERE   m.mirroring_role_desc IS NOT NULL

    6、删除镜像。

     --手动执行故障转移
    ALTER DATABASE ModelingTest_8011_Mirror SET PARTNER FAILOVER; 
    --取消数据库镜像
    ALTER DATABASE ModelingTest_8011_Mirror SET PARTNER OFF
    --恢复数据库
    restore database Modeling_EmptyDB with RECOVERY ;

     

    转载于:https://www.cnblogs.com/caiyongxi/p/9110118.html

    展开全文
  • 某数据库部署为异步数据库镜像,镜像数据库所在磁盘空间不足,我得移动镜像数据库文件到新的磁盘上。 在异步数据库镜像中,应用程序连接到主数据库访问。我们这里要根据你的线上环境考虑选择哪种方式合适: 直接...

    某数据库部署为异步数据库镜像,镜像数据库所在磁盘空间不足,我得移动镜像数据库文件到新的磁盘上。

     

    在异步数据库镜像中,应用程序连接到主数据库访问。我们这里要根据你的线上环境考虑选择哪种方式合适:

    1. 直接重做镜像,将数据文件放在新的位置。

    2. 直接移动镜像数据库文件。

     

    移动数据库文件的所有操作都是对镜像数据库实例,如果镜像数据库实例上没有其他线上主数据库,不会对线上业务产生影响的情况下,可以直接移动镜像数据库文件。


    1. 在主库上点击“Pause”,暂停镜像会话。


    2. 在镜像库上使用Alter Database指向一个新的位置。

    a) 确定DXListing数据库的逻辑文件名称以及这些文件在磁盘上的当前位置。

    1
    2
    3
    4
    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('DXListing');
    GO


    b) 使用 ALTER DATABASE更改每个文件的位置。

    1
    2
    3
    4
    5
    6
    7
    8
    USE master;
    GO
    ALTER DATABASE DXListing
    MODIFY FILE (NAME = DXListing, FILENAME = 'E:\SQL-DATA\DXListing.mdf');
    GO
    ALTER DATABASE DXListing
    MODIFY FILE (NAME = DXListing_log, FILENAME = 'E:\SQL-DATA\DXListing.ldf');
    GO


    3. 停止镜像数据库所在实例的SQL Server服务。

    4. 移动镜像数据库文件到一个新位置,并确保文件上的权限也还在。

    5. 启动镜像数据库所在实例的SQL Server服务。

    6. 在主库上点击“RESUME”,恢复镜像恢复,并验证镜像成功恢复。



    还有一种方式,只需要重启镜像数据库所在实例的SQL Server服务,而不用暂停服务一段时间用于移动数据文件,实际线上我是用这种方式操作的。


    1. 在主库上点击“Pause”,暂停镜像会话。


    2. 在镜像库上使用Alter Database指向一个新的位置。

    a) 确定DXListing数据库的逻辑文件名称以及这些文件在磁盘上的当前位置。

    1
    2
    3
    4
    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('DXListing');
    GO


    b) 使用 ALTER DATABASE更改每个文件的位置。

    1
    2
    3
    4
    5
    6
    7
    8
    USE master;
    GO
    ALTER DATABASE DXListing
    MODIFY FILE (NAME = DXListing, FILENAME = 'E:\SQL-DATA\DXListing.mdf');
    GO
    ALTER DATABASE DXListing
    MODIFY FILE (NAME = DXListing_log, FILENAME = 'E:\SQL-DATA\DXListing.ldf');
    GO


    3. 重启镜像数据库所在实例的SQL Server服务。

    4. 移动镜像数据库文件到一个新位置,并确保文件上的权限也还在。


    这时,我们来看看镜像状态。

    在主库上:

    clip_image001

    clip_image002

    在镜像库上:

    clip_image003


    可以看到,镜像库状态不正常。这时,我在镜像库上执行以下操作:

    1
    2
    3
    4
    USE master
    GO
    ALTER DATABASE DXListing SET PARTNER RESUME
    GO


    报错如下:

    Msg 945, Level 14, State 2, Line 1

    Database 'DXListing' cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details.


    5. 使DXListing数据库 OFFLINE 再 ONLINE,以实施更改。(当然,此时重启SQL Server服务应该也可以,但建议还是在数据库级别操作)

    1
    2
    3
    4
    5
    USE master
    GO
    ALTER DATABASE DXListing SET OFFLINE
    ALTER DATABASE DXListing SET ONLINE
    GO


    错误如下:

    Msg 954, Level 14, State 1, Line 1

    The database "DXListing" cannot be opened. It is acting as a mirror database.

    Msg 5069, Level 16, State 1, Line 1

    ALTER DATABASE statement failed.


    这时,我们再来看看数据库状态。

    在镜像库上:

    clip_image004

    在主库上:

    clip_image005

    clip_image006

    发现状态已经正常。之前的错误可以忽略。


    6. 在主库上点击“RESUME”,恢复镜像会话。验证镜像状态已同步。

    clip_image007


    参考:

    https://msdn.microsoft.com/zh-cn/library/bb522469.aspx












    本文转自UltraSQL51CTO博客,原文链接: http://blog.51cto.com/ultrasql/1904800,如需转载请自行联系原作者


    展开全文
  • 本文介绍了在Linux下建立Mysql镜像数据库的方法。
  • 两台SQL2008 架设高安全性模式镜像,如果主数据库受损导致无法手动切换镜像数据库时,镜像数据库一直处于“还原状态”被锁定,此时可采用以下方式临时起用镜像数据库使用: 1、主备互换 -- 主机执行: USE ...

    两台SQL2008 架设高安全性模式镜像,如果主数据库受损导致无法手动切换镜像数据库时,镜像数据库一直处于“还原状态”被锁定,此时可采用以下方式临时起用镜像数据库使用:

    1、主备互换
    -- 主机执行:

    USE master;
    ALTER DATABASE <DatabaseName> SET PARTNER FAILOVER;


    2、主服务器Down掉,备机紧急启动并且开始服务
    --备机执行:
    USE master;
    ALTER DATABASE <DatabaseName> SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;


    3、原来的主服务器恢复,可以继续工作,需要重新设定镜像
    --备机执行:
    USE master;
    ALTER DATABASE <DatabaseName> SET PARTNER RESUME; --恢复镜像
    ALTER DATABASE <DatabaseName> SET PARTNER FAILOVER; --切换主备



    展开全文
  • 镜像数据库如果主体数据库日志过大,可以在主体数据库上定时作日志备份(比如每天1次)备份日志可以截断日志,让日志空间可以循环使用,这样可以使日志文件的大小不再增长。 具体步骤,在主体数据库上设置job,每天...
    镜像数据库如果主体数据库日志过大,可以在主体数据库上定时作日志备份(比如每天1次)
    备份日志可以截断日志,让日志空间可以循环使用,这样可以使日志文件的大小不再增长。
    具体步骤,在主体数据库上设置job,每天执行一次sql(不是镜像数据库):
    BACKUP LOG 数据库名 TO DISK = 'h:\log20111122.bak'

    执行完成后,日志文件大小并不会变小,只是文件使用率会下降


    相关知识:
    1、查看日志文件大小和使用率的sql
    USE 数据库名
    GO
    SELECT name, data_space_id 文件组id, size/128 [文件大小(兆)],
        FILEPROPERTY(name, 'SpaceUsed')/128 [已用空间(兆)],
        size/128 - FILEPROPERTY(name, 'SpaceUsed')/128 [未用空间(兆)],
        FILEPROPERTY(name, 'SpaceUsed')*100.0/size [使用率(%)],
        max_size/128 [最大值(兆)], growth 增长值, is_percent_growth 是否百分比增长, physical_name 物理路径
    FROM sys.database_files a

    也可以用下面的sql查看日志文件使用率(注:要管理员才有权限,需要技术部去执行)
    DBCC SQLPERF(LOGSPACE)
    得到结果列如下:
    Database Name    Log Size (MB)    Log Space Used (%)
    数据库名         日志文件大小    日志文件使用率
    这个使用率越小越好,备份日志后,使用率会降低,今天Newresourcedb数据库的日志变化情况:
    09点 271385M   99.98%
    执行日志备份,耗时3小时后变成
    14点 272685M   47.93%
    再执行日志备份,耗时1分钟后变成
    15点 272685M   1.13%

    2、镜像数据库选项的相关知识
    数据库镜像概述
    http://msdn.microsoft.com/zh-cn/library/ms189852.aspx
    异步数据库镜像(高性能模式)
    http://msdn.microsoft.com/zh-cn/library/ms187110(v=SQL.90).aspx
    同步数据库镜像(高安全性模式)
    http://msdn.microsoft.com/zh-cn/library/ms179344(v=SQL.90).aspx
    同步和异步的主要区别就是
    同步时,主数据库要等镜像数据库日志也写入磁盘后,才返回告诉我们成功
    而异步,则是主数据库把日志发给镜像数据库,不等镜像响应,就返回告诉我们成功
     
    3、 查表结构
     

    create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20))
    exec sp_MSforeachtable "insert into #t exec sp_spaceused '?'"
    select name as 表名,rows as  行数,
    ltrim(str(convert(decimal(18,2),replace(reserved,' KB',''))/1024)) + 'MB' as 总分配磁盘空间,
    ltrim(str(convert(decimal(18,2),replace(data,' KB',''))/1024)) + 'MB' as 数据占用磁盘空间,
    ltrim(str(convert(decimal(18,2),replace(index_size,' KB',''))/1024)) + 'MB' as 索引占用磁盘空间,
    unused as 可用空间
    from #t  ORDER BY 行数 desc
    select count(1) as 表数量,sum(rows) as 总行数,sum(convert(int,replace(reserved,' KB',''))/1024) as '总占用空间(MB)',sum(convert(int,replace(data,' KB',''))/1024) as '数据总占用空间(MB)',sum(convert(int,replace(index_size,' KB',''))/1024) as '索引总占用空间(MB)' from #t

     

     

    转载于:https://www.cnblogs.com/llbofchina/p/3689367.html

    展开全文
  • 默认情况下镜像是无法进行访问的,这样就造成了镜像数据库资源的浪费。 其实镜像上也可以通过创建快照的方式实现只读。这样可以将一部分报表访问的压力放到镜像数据库来做。 注意:若要在镜像数据库中创建数据库...
  • 数据库做了镜像备份,主体数据库和镜像数据库断开网络连接后镜像数据库登录不上,导致无法为镜像数据库做快照恢复数据。如果主体数据库和镜像数据库的网络连接连上后镜像数据库就可以登录了。那如果出现主体数据库...
  • 为镜像准备镜像数据库 (Transact-SQL) SQL Server 2005 其他版本 更新日期:2008 年 11 月 17 日 只有存在镜像数据库才能启动数据库镜像会话。镜像数据库的名称必须与主体数据库的...
  • 数据库镜像怎么还原数据库 Both log shipping and mirroring are high availability and disaster recovery options available in SQL Server. This article will review on how to configure log shipping on a ...
  • 配置sqlserver2008的时候出现错误,想删除原来的已经配置的镜像。但是出现RT的错误。 需要执行如下sql: alter database db_name set partner off; restore database db_name with ...然后就可以删除镜像数据库
  • sqlserver2005镜像数据库与数据库快照

    千次阅读 2012-11-28 13:55:30
    sqlserver2005镜像数据库可以创建数据库快照,数据库快照可以读取,查询,做数据库报表作用,分担主数据库的压力。   CREATE DATABASE AdventureWorks_dbss1800 ON ( NAME = AdventureWorks_Data, FILENAME = ...
  • 其中包括:主数据库、镜像数据库以及见证数据库。 主数据库:当前数据库 镜像数据库:备用数据库 见证数据库:对主数据库以及镜像数据库进行心跳判断,主数据库出现问题可以进行故障转移,主换备,备换主。 配置...
  • 由于磁盘空间的问题,需要移动镜像数据库到一个不同的位置。我们想不停机、不破坏镜像来完成这个任务。需要在不同的环境做测试。 对于启用了数据库镜像的数据库的文件移动,我们只有有限的选择。常规方法如下: ...
  • --1.备份主数据库 ...还原备份,生成镜像数据库(镜像服务器) Restore database test from disk='D:\test.bak' with NoRecovery,--保持数据一直处于恢复状态 move 'Test' to 'd:\test.mdf', m...
  • This article will review on how to configure SQL Server Replication along with ... 本文将回顾如何配置SQL Server复制以及数据库镜像。 复制概述 (Replication Overview) SQL Server Replication is ...
  • 除了使用数据库镜像监视器和 dbmmonitor 存储过程监视镜像数据库并对所监视性能变量设置警报之外,Microsoft SQL Server 2008 还提供了下列各项: 目录视图中的数据库镜像元数据。有关详细信息,请参阅...
  • SQL SERVER 2005 镜像数据库截断并收缩日志文件的思路和操作
  • 正常工作的数据库镜像不知什么原因造成主休连接不上镜像数据库服务器,报如下错误: 服务器网络地址 "TCP://192.168.1.4:5022" 无法访问或不存在。请检查网络地址名称,并检查本地和远程端点的端口是否正常运行。 ...
  • 备份数据库时,TRUSTWORTHY 数据库属性设置为 OFF。 因此,在新的镜像数据库中,TRUSTWORTHY 始终为 OFF。 如果数据库在故障转移后需要得到信任,则必须在镜像开始后执行额外的设置步骤。 注意: 有关此...
  • SQL Server2008R2-镜像数据库实施手册(双机)SQL Server2014同样适用 一、配置主备机 1、服务器基本信息 主机名称为:HOST_A,IP地址为:192.168.1.155 备机名称为:HOST_B,IP地址为:192.168.1.156 二、主备...
  • 程序在访问有镜像数据库和无镜像数据库时,采用的链接超时时间算法不一样,因此会导致在在有镜像数据库上设置了15 S的超时时间,而实际的超时时间仅为3.6 S,从而导致有镜像数据库更容易超时。 在无镜像的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,316
精华内容 3,326
关键字:

镜像数据库