Maison >base de données >tutoriel mysql >Résolution du journal des transactions de réduction Mysql et solutions aux problèmes

Résolution du journal des transactions de réduction Mysql et solutions aux problèmes

小云云
小云云original
2017-12-25 13:33:081385parcourir

Cet article présente principalement comment résoudre le problème de la réduction des journaux de transactions et des fichiers journaux trop volumineux et ne peut pas être réduit. Il est très bon et a une valeur de référence. Les amis qui en ont besoin pourront s'y référer. peut aider tout le monde.

1. MS SQL SERVER 2005

--1. Effacez le journal
exec('DUMP TRANSACTION nom de la base de données AVEC NO_LOG')
--2. :
exec('BACKUP LOG database name WITH NO_LOG')
--3. Réduisez le fichier de base de données (s'il n'est pas compressé, le fichier de base de données ne sera pas réduit
exec('DBCC SHRINKDATABASE(database name) ')
--4. Définir la réduction automatique
exec('EXEC sp_dboption nom de la base de données,autoshrink,TRUE')

2. MS SQL SERVER 2008 &2008r2 &2012 &2016

--在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
USE [master]
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE --简单模式
GO
USE 数据库名 
GO
--crm50sp1_log 为数据库日志文件逻辑名
DBCC SHRINKFILE (N'crm50sp1_log' , 11, TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL --还原为完全模式
GO

3 . Le problème que le fichier journal est anormalement volumineux et ne peut pas être réduit

Si le fichier journal est anormalement volumineux et ne peut pas être réduit lors de la réduction, à ce stade, vous devez vérifier s'il y a des fichiers non validés ou transactions annulées

Exécutez la commande DBCC OPENTRAN pour vérifier s'il existe une transaction qui s'est exécutée très tôt (l'heure de début de la transaction est affichée dans le message Ce qui est affiché indique que la transaction n'a pas été validée ou annulée). en arrière, donc MinLSN ne peut pas être restauré.
S'il existe un tel cas, il existe deux méthodes, l'une consiste à tuer le processus via le numéro de processus affiché dans les informations (bien sûr, en redémarrant le processus). Le service SQL est également possible, si l'opération d'arrêt est autorisée) ;

Si la transaction n'a pas été fermée depuis longtemps, mode simple : Sauvegardez d'abord la base de données, puis exécutez le nom de la base de données BACKUP LOG AVEC NO_LOG. Mode complet : si une sauvegarde complète n'a pas été effectuée, effectuez d'abord une sauvegarde complète, puis sauvegardez le fichier journal et enfin exécutez DBCC SHRINKFILE (N'log file logic Name', 0, TRUNCATEONLY) Réduisez uniquement le fichier journal

Le nom logique du fichier journal peut être obtenu via l'instruction suivante USE erp database go SELECT [name] FROM sys.database_files WHERE type_desc='LOG'

Recommandations associées :

À propos de la transaction Mysql

php Comment utiliser le code d'exemple de transaction Mysql

Explication de l'exemple de traitement de transaction MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn