小编Han*_*non的帖子

一些 MySQL 从站错误?

  • 主版本:mysql-server-5.5.14-1.el5.remi
  • 从版本:Percona-XtraDB-Cluster-server-5.5.24-23.6.340
  • Binlog格式:基于ROW

我正在使用PRM为 MySQL 设置 HA。

有时,MySQL slave 因一些错误而停止:

Error executing row event: 'Table 'reportingdb.tvc_ads_tag_date' doesn't exist'
Run Code Online (Sandbox Code Playgroud)

[Warning] Slave SQL: Could not execute Update_rows event on table reportingdb.7k_banner_channel_tmp; Can't find record in '7k_banner_channel_tmp', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000854, end_log_pos 859094925, Error_code: 1032

120828 0:36:13 [Warning] Slave SQL: Could not execute Write_rows event on table reportingdb.7k_bookings_ver; Duplicate entry '1518' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.001022, end_log_pos …

mysql replication mysql-5.5

7
推荐指数
2
解决办法
3万
查看次数

如何减少 AWS RDS MySQL 上的数据库大小?

我在 Amazon Web Services 上有一个 RDS MySQL 数据库。

我想减少控制面板中数据库的大小以节省资金。

问:如何让它变小?他们的网站说你必须用某种神奇的方式(从备份或其他方式),但我不想错误地重击它!

请一步一步...谢谢! 在此处输入图片说明

这就是发生的事情:亚马逊问我想要的最大尺寸应该是多少。我选择了 10GB。然后我添加数据,直到表超过 10GB。然后亚马逊自动将大小限制增加到 20GB。在他们的手册中,他们说“增加”是自动的,但“减少”不是。

在删除一些多余的数据后,数据大小再次低于 10GB,有没有办法创建一个新的 10GB db 并使用快照将数据复制到它?

mysql amazon-rds

7
推荐指数
1
解决办法
9628
查看次数

为什么这个游标以错误的顺序产生结果?

我正在编写一些动态 SQL 来识别,也许如果我觉得够疯狂,可以自动将我的NONCLUSTERED索引转换为CLUSTERED索引。

ORDER BY 1,2,3 DESC;下面的 SQL 中的这一行旨在在DROP INDEX...语句之前输出语句ALTER TABLE...,以便先删除 NONCLUSTERED 索引,然后添加一个 CLUSTERED 索引。我必须在第DESC3 列之后添加DROP,然后是 ALTER。这是倒退,除非我失去它!

DECLARE @Server nvarchar(max);
DECLARE @Database nvarchar(max);
DECLARE @cmd nvarchar(max);
DECLARE @IndexType int;


SET @IndexType = 2; /*  1 is CLUSTERED, 2 is NONCLUSTERED */
SET @Server = 'MyServer';
SET @Database = 'MyDatabase';

SET @cmd = '
    DECLARE @cmd nvarchar(max);
    SET @cmd = ''
    SET NOCOUNT ON;
    DECLARE @IndexInfo TABLE (TableName nvarchar(255), IndexName …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server dynamic-sql

7
推荐指数
2
解决办法
1301
查看次数

如何找到具有大量虚拟日志文件的数据库?

我在生产服务器上有几个数百 GB 的数据库,每天都有成千上万的事务通过它们运行。

几乎所有这些数据库都使用 SQL Server 镜像进行镜像。

尽管我们已经仔细规划了物理日志文件大小以匹配预期的日志文件活动;偶尔会出现问题,日志需要增长到超出我们预测的最大值。我们已将所有日志文件设置为增长 8192MB,但是当数据库面临增长日志文件的压力时,它有时只会以非常小的块增长日志,从而在某些情况下创建数十万个虚拟日志文件 (VLF) .

当我们的一个生产数据库意外恢复超过 200,000 个 VLF 时,我开始理解保持低 VLF 数量的重要性。恢复需要 20 多个小时;在此期间,我们的部分业务无法运营。

我需要一个可以监控服务器上所有数据库的虚拟日志文件数量的解决方案,如果任何特定日志文件的 VLF 数量超过给定数量,则发送警报电子邮件。

我知道DBCC LOGINFO;返回 VLF 列表,但是,我不想手动运行它。

我创建了以下 SQL 语句,该语句创建了一个列出数据库以及 VLF 数量的漂亮表,但是,我不知道如何将其放入 SQL 代理作业中,以便在任何数据库的数量超过“x”时向我们的团队发送电子邮件的 VLF。

DECLARE @cmd_per_database_prefix nvarchar(max);
DECLARE @cmd_per_database nvarchar(max);
DECLARE @database_name nvarchar(255);
SET @cmd_per_database = '';
SET @cmd_per_database_prefix = 
'
    SET NOCOUNT ON;
    DECLARE @vlf_count_table TABLE (database_name nvarchar(255), vlf_count int);
    DECLARE @params nvarchar(max);
    DECLARE @db_name nvarchar(255);
    DECLARE @vlf_count int;
    SET @params = ''@db_name nvarchar(255) OUTPUT, @vlf_count …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server transaction-log

7
推荐指数
1
解决办法
1748
查看次数

为报表创建 SQL Server 数据库的只读副本

当我的 .Net Web 应用程序运行缓慢时,我遇到了一个问题,即使我已经优化了所有查询。事实证明,另一位制作报告的开发人员一直在运行一堆未优化的查询。所以我决定为他创建一个单独的服务器。目前我创建了 Jobs 进行备份,将其复制到另一台服务器并恢复它。但这是临时解决方案,因此为了让第二台服务器拥有最新数据或至少延迟最小,我正在研究创建只读副本的机会。

由于我不是 DBA,因此我阅读了大量有关 SQL Server 复制机制的文章或文章。对我来说最好的选择是当我的 PROD Web 应用程序完全不受复制影响时,我的意思是对同步表进行大量锁定。我不需要像镜像那样实时同步,也不需要任何集群解决方案之王,只需读取我的 PROD 数据库的同步副本。所以我选择了Transactional具有异步分发策略(按计划)的复制机制(不可更新)。

所以我有一些问题:

  1. 在 SQL Server 复制机制中,事务复制是否最适合我的问题?

  2. 如果我有机会从 SQL Server 2008 迁移到 SQL Server 2012,事务复制会发生一些重大变化吗?我在technet上读过一篇文章,可能会出现错误?

  3. SQL Server 2012Always On机制不是更好地解决我的问题吗(我正在考虑将此选项作为最后一个选项,因为我仍在使用 2008 R2,但不久之后计划迁移到 2012)?

sql-server sql-server-2008-r2 sql-server-2012 transactional-replication

7
推荐指数
2
解决办法
2万
查看次数

Ola Hallengren 索引脚本未重新索引

首先,我意识到有人问过类似的问题,并且对于 679 页的索引,海报的页数设置为 1000;不是怎么回事。

我将 Ola 的脚本设置为

@Databases nvarchar(max)
,@FragmentationLow nvarchar(max) = null
,@FragmentationMedium nvarchar(max) = 'INDEX_REORGANIZE'
,@FragmentationHigh nvarchar(max) = 'INDEX_REBUILD_ONLINE'
,@FragmentationLevel1 int = 50
,@FragmentationLevel2 int = 75
,@PageCountLevel int = 400
,SortInTempdb nvarchar(max) = 'N'
,maxdop int = null
,fillfactor int = null
,PadIndex nvarchar(max) = null
,LOBCompaction nvarchar(max) = 'Y'
,UpdateStatistics nvarchar(max) = 'ALL'
,OnlyModifiedStatistics nvarchar(max) = 'Y'
,StatisticsSample int = null
,StatisticsResample nvarchar(max) = 'N'
,PartitionLevel nvarchar(max) = 'Y'
,MSShippedObjects nvarchar(max) = 'N'
,Indexes nvarchar(max) = …
Run Code Online (Sandbox Code Playgroud)

index sql-server index-statistics fragmentation ola-hallengren

7
推荐指数
1
解决办法
1707
查看次数

配置 SQL Server 2016 以允许远程连接

我在 Windows Server 2016 Core 上安装了 SQL Server 2016。在本地,它似乎有效。我可以连接使用SQLCMD.exe并做一些基本的选择,什么不是。

从远程,我无法连接。使用SQLCMD.exe远程计算机上:

sqlcmd -S boldiq_db3
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Named Pipes 
    Provider: Could not open a connection to SQL Server [53]. .
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Login timeout 
    expired.
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : A network-related
    or instance-specific error has occurred while establishing a connection 
    to SQL Server. Server is not found or not …
Run Code Online (Sandbox Code Playgroud)

sql-server windows-server sql-server-2016

7
推荐指数
1
解决办法
3万
查看次数

“分离数据库”对话框中的“删除连接”和“更新统计信息”有什么作用?

作为测试阶段,我安装了 SQL Server 2014 企业版的评估版。

当我通过 SQL Server Management Studio 分离数据库时,我看到两个选项:

  1. 断开连接
  2. 更新统计

在此处输入图片说明

这两个选项都将从 SQL Server 实例中分离数据库。这两个选项有什么区别?

sql-server sql-server-2014

7
推荐指数
2
解决办法
6974
查看次数

这个索引扫描中这个 Uniq1002 列的目的是什么?

采取以下再现:

USE tempdb;

IF OBJECT_ID(N'dbo.t', N'U') IS NOT NULL
DROP TABLE dbo.t
GO
CREATE TABLE dbo.t
(
    id int NOT NULL 
        PRIMARY KEY 
        NONCLUSTERED 
        IDENTITY(1,1)
    , col1 datetime NOT NULL
    , col2 varchar(800) NOT NULL
    , col3 tinyint NULL
    , col4 sysname NULL
);

INSERT INTO dbo.t (
      col1
    , col2
    , col3
    , col4
    ) 
SELECT TOP(100000) 
      CONVERT(datetime, 
         DATEADD(DAY, CONVERT(int, CRYPT_GEN_RANDOM(1)), '2000-01-01 00:00:00'))
    , replicate('A', 800)
    , sc2.bitpos
    , CONVERT(sysname, CHAR(65 + CRYPT_GEN_RANDOM(1) % 26) 
        + CHAR(65 + CRYPT_GEN_RANDOM(1) …
Run Code Online (Sandbox Code Playgroud)

sql-server execution-plan database-internals sql-server-2012

7
推荐指数
1
解决办法
191
查看次数

死锁优先级高被选为死锁受害者

有没有办法防止死锁优先级高的进程成为死锁受害者?

我有 SQL Server 2016 SP2 (13.0.5237.0)。这是我最近在系统中注意到的死锁图。死锁优先级高的进程被选为牺牲品(可能是因为与其他进程相比日志使用率高)。但这不应该发生。这是 SQL 中引入的缺陷吗?有没有办法防止死锁优先级高的进程成为受害者?这是死锁xml:

<deadlock>
 <victim-list>
  <victimProcess id="process1d3ea515848" />
 </victim-list>
 <process-list>
  <process id="process1d3ea515848" taskpriority="10" logused="5800" waitresource="OBJECT: 9:290100074:0 " waittime="4711" ownerId="359850034" transactionname="user_transaction" lasttranstarted="2019-07-31T08:12:25.267" XDES="0x1d2f62d1840" lockMode="Sch-M" schedulerid="3" kpid="10320" status="suspended" spid="52" sbid="0" ecid="0" priority="5" trancount="4" lastbatchstarted="2019-07-31T08:13:30.990" lastbatchcompleted="2019-07-31T08:13:29.427" lastattention="1900-01-01T00:00:00.427" clientapp=".Net SqlClient Data Provider" hostname="XXX" hostpid="14944" loginname="NT AUTHORITY\SYSTEM" isolationlevel="read committed (2)" xactid="359850034" currentdb="9" currentdbname="XXX" lockTimeout="4294967295" clientoption1="673415200" clientoption2="128056">
   <executionStack>
    <frame procname="CreatePartition" line="30" stmtstart="2052" stmtend="2218" sqlhandle="0x03000900d670d75323ec7f0094aa000001000000000000000000000000000000000000000000000000000000">
ALTER PARTITION FUNCTION...    </frame>
    <frame procname="CreatePartitions" line="26" stmtstart="1618" stmtend="1788" sqlhandle="0x030009000f95cb5424ec7f0094aa000001000000000000000000000000000000000000000000000000000000">
EXEC CreatePartition     </frame>
   </executionStack>
   <inputbuf>
Proc [Database …
Run Code Online (Sandbox Code Playgroud)

sql-server deadlock sql-server-2016

7
推荐指数
1
解决办法
376
查看次数