MYSQL 数据库 (ibdata1) 的大小为 73 GB,配置为在 Windows 2008 O/S 上作为 INNODB 表的专用数据库服务器运行。我们正在使用 mysqldump mysqldump --skip-opt --quick --single-transaction --create-options --extended-insert --disable-keys --add-drop-table --complete-insert -- 运行备份set-charset -- 压缩 --log-error=Proddb0635.err -u root -pjohndoe Proddb> \devNas\devNas\sqlbackup\LIVE\db\Proddb0635.sql
备份文件 Proddb0635.sql 存储在与数据库服务器不同的服务器上。内存为 12 GB。INNODB 缓冲池大小为 6 GB。额外的 mem.pool 是 32 MB。查询缓存大小为 2 GB 网络缓冲区长度为 16 M 最大。数据包大小 1 GB。
mysql 版本是 5.0.67。
当备份未运行时,用户对性能感到满意。
当备份运行时,INNODB 缓冲池命中率很高,接近 100%。没有挂起的读取或挂起的写入。innodb 等待空闲时间为 0。CPU 使用率不高,最低 9% 到最高 15% 查询缓存命中率低约 40%,无论是否运行 mysqlbackup。当前 Windows 任务管理器显示正在使用 10GB 的 RAM。我应该在只有 2GB 可用 RAM 的情况下增加查询缓存吗?mysqlld-nt 占用 9.2 GB …
我在 SQL 2008 中有一份工作,它运行一个存储过程来备份所有数据库。这通过 sql server 代理作业每天运行。
它每天都成功退出,但有时只有在备份了几个数据库后才成功退出。每次可以是不同数量的数据库。大多数情况下,它会成功备份所有数据库,但有时会成功备份 2 次,有时会成功备份 5 次,等等。
我在作业历史记录、事件查看器或 sql server 日志中没有看到任何错误。
备份是在本地磁盘上进行的,尽管该文件夹是可扩展存储卷上文件夹的“连接点”。
操作系统是 Windows 2003 64 位运行 Sql Server 2008 网络版 64 位作为在 Vmware ESXi 5 主机上运行的虚拟机。
存储过程:
ALTER PROCEDURE [dbo].[backup_all_databases]
@path VARCHAR(255)='c:\backups\'
AS
DECLARE @name VARCHAR(50) -- database name
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
DECLARE @dbIsReadOnly sql_variant -- is database read_only?
DECLARE @dbIsOffline sql_variant -- is database offline?
DECLARE db_cursor CURSOR FOR
SELECT name …Run Code Online (Sandbox Code Playgroud) 我们使用的是 SQL 2005 Express Edition。我们要从 LDF 文件中读取数据以恢复一些已删除的记录。
我们尝试使用 ApexSQL 的试用版,这对我们有很大帮助。我们不是去寻找第三方软件,而是试图弄清楚如何自己读取日志文件。
我们如何从 LDF 文件中读取和恢复数据?
我有一个很大的 .sql 文件,里面有很大的 insert into ... values ... 语句。其中许多语句在执行期间会生成警告。如何让 mysql 打印警告?
如果它击中 control-C,则导入停止,我将返回 OS 命令行。
以下是运行 SQL 的示例输出:
Query OK, 9827 rows affected, 5403 warnings (0.20 sec)
Records: 9827 Duplicates: 0 Warnings: 5403
Query OK, 9859 rows affected, 5247 warnings (0.20 sec)
Records: 9859 Duplicates: 0 Warnings: 5247
Run Code Online (Sandbox Code Playgroud) 我有一个大型(数千万条记录)数据库,我将在其上执行完整的数据库备份。
但是,数据库足够大,事务可以在备份发生之前和期间启动,也可以在备份发生期间和之后提交。
例如:
T0 = Transaction A start
T1 = Full database backup start
T2 = Transaction B start (will not deadlock with A)
T3 = Transaction A commit/rollback (does not matter, does it?)
T4 = Full database backup end
T5 = Transaction B commit/rollback (again, does not matter, does it?)
T0 T1 T2 T3 T4 T6
||----------||----------||----------||----------||----------||---------->
Run Code Online (Sandbox Code Playgroud)
我的理解是在备份期间不使用锁(尽管由于高 I/O 可能会出现其他性能问题),但我不确定我能保证什么会被提交。
此外,我担心的不是数据库将处于不一致状态,而是该状态将是什么(即使它不是确定性的,如果有一组可以一致应用的规则)以及它是如何到达那里的(例如,有多少数据文件与事务日志一起用于创建备份文件)?
我有两个备份两个不同数据库的作业。
作业 1 备份 DB1
作业 2 备份 DB2
DB1 由于驱动器 1 上的空间不足导致作业 1 失败而无法备份。为了解决这个问题,我只需要添加空间。没什么大不了的。当这个问题已经发生一个月时,我今天被告知了这一点。是的,我知道这很疯狂,但这是开发人员
我想获得 DB1 的完整备份历史记录。我知道我可以从 msdb.dbo.backupset 表中检索成功的备份信息,但我想知道是否存在显示数据库备份失败的查询。
我下面的查询显示了特定数据库从 12/31/13-1/27/14 的备份历史记录。信息包括服务器、数据库名称、备份开始和结束时间、备份数据库所需的总时间、数据库大小和备份集名称。
SELECT
distinct CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
msdb.dbo.backupset.database_name,
msdb.dbo.backupset.backup_start_date,
msdb.dbo.backupset.backup_finish_date,
CAST((DATEDIFF(second, msdb.dbo.backupset.backup_start_date,msdb.dbo.backupset.backup_finish_date)) AS varchar)+ ' secs ' AS [Total Time] ,
Cast(msdb.dbo.backupset.backup_size/1024/1024 AS numeric(10,2)) AS 'Backup Size(MB)',
msdb.dbo.backupset.name AS backupset_name
FROM msdb.dbo.backupmediafamily
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
--Enter your database below
--and database_name = 'db_name_here'
and msdb.dbo.backupset.backup_start_date>'2013-12-31' and msdb.dbo.backupset.backup_start_date<'2014-01-27 23:59:59'
ORDER BY
msdb.dbo.backupset.database_name,
msdb.dbo.backupset.backup_start_date
Run Code Online (Sandbox Code Playgroud)
有没有办法通过修改我的代码来获取该信息?我可以通过执行针对 sysjobhistory …
我知道没有必要备份information_schema数据库,但是以下数据库(除了用户定义的数据库)呢?
performance_schemamysqlphpmyadmin(所以,如果出现问题,我们必须从头开始(新的 MySQL 安装),我必须放回哪些数据库?)
我想从我的数据库服务器上的远程主机运行 pg_dump 命令,该服务器只允许完全验证的基于证书的连接。我该怎么做呢?9.1 的手册页说明了我所看到的通过密码连接的说明。
我们的 IT 部门每晚都会备份整个服务器(此服务器上安装了一个 SQL Server 实例),这应该备份该服务器以及整个网络,以防出现问题......
所以我的经理问我的完整、差异和日志 SQL 备份与 IT 部门备份的任何备份相比有何重要意义?为了在我们的服务器上节省更多空间,而不是将这些文件保留几个星期并删除它们,她认为 IT 只会提供它们!
我知道这是不对的,因为我可以用我的日志备份恢复到最后 30 分钟,IT 会在第二天恢复它,但这是唯一的区别吗?
由于我将数据库备份文件保存/发送到同一台服务器,IT 将恢复它们,但如果我的维护计划中没有这些备份作业,那么 IT 可以只恢复 SQL 实例,而无需我们的任何表、事务......等我做对了吗?
任何建议将不胜感激。
我不是 DBA,但事情就是这样,我必须戴上 DBA 的帽子,并在我的 SQL Server 实例上设置维护计划。
因此,有一段时间我一直让我的 SSIS 通宵进程运行执行 SQL 任务来执行备份 - 基本上运行master.dbo.xp_create_subdir以确保目标文件夹存在,然后BACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT.
每当该任务失败时,其余的过程将中止,我会收到通知,第二天早上来时注意到事务日志的驱动器已满,因此我会手动截断它们并继续。 .. 直到故事重演并且事务日志再次超过可用磁盘空间。
“手动截断”脚本如下所示:
Run Code Online (Sandbox Code Playgroud)use Staging; alter database Staging set recovery simple alter database Staging set recovery full dbcc shrinkfile ('Staging_log', 0, truncateonly); go
所以我越来越厌倦了,我决定尝试正确地做事情,并按照这里的步骤创建一个实际的维护计划:
问题是,我以前从未这样做过,所以我有几个问题:
G:\Backups。那有意义吗?sql-server backup transaction-log maintenance-plans sql-server-2014
backup ×10
sql-server ×5
mysql ×3
mysqldump ×3
mysql-5 ×1
pg-dump ×1
postgresql ×1
recovery ×1
restore ×1