1 Vorwort
Vor kurzem habe ich die Sicherung und Wiederherstellung von MySQL-Datenbankinstanzen untersucht. Die alte Datenkonfiguration und die my.cnf-Konfiguration der neuen Instanz stimmen nicht überein ob der Parameter innodb_data_file_path geändert wurde. Wie analysiere ich meine.cnf? Deshalb habe ich das von Python bereitgestellte ConfigParser-Modul studiert. Dieses Modul kann Lese- und Änderungsvorgänge für allgemeine Konfigurationsdateien abschließen und erfüllt im Wesentlichen die Anforderungen.
2 Verwendung
2.1 Format der Konfigurationsdatei
Die Konfigurationsdatei besteht hauptsächlich aus Abschnittsbereich. Sie können Option=Wert oder Option:Wert im Abschnitt verwenden, um Parameter zu konfigurieren.
[Abschnitt1-Name]
option1=Wert 1
....
optionN= Wert N
[Abschnitt2-Name]
Option1=Wert 1
....
optionN=valueN
Das übliche my.cnf-Format ist wie folgt
[mysqld]
innodb_log_files_in_group = 2
innodb_page_size = 16384
innodb_log_block_size = 512
innodb_data_file_path = ibdata1:2G:autoextend
innodb_log_file_size =. 53687091 2
2.2 ConfigParser-Modul
Das ConfigParser-Modul von Python definiert drei Klassen: RawCnfigParser, ConfigParser, SafeConfigParser. Unter diesen ist RawCnfigParser die grundlegendste Klasse zum Lesen von Konfigurationsdateien.
Dieser Artikel verwendet hauptsächlich eigene Erweiterungen Als Beispiel wird die ConfigParser-Klasse vorgestellt. Zu den Vorgängen des ConfigParser-Moduls gehören hauptsächlich:
a Initialisieren einer ConfigParser-Instanz
b Lesen der Konfiguration
c Ändern der Konfiguration
Gängige Methoden zum Lesen von Konfigurationsdateien
cf.read(filename) Liest den Inhalt der Konfigurationsdatei
cf.sections() Alle Abschnitte abrufen und in Form einer Liste zurückgeben
vgl. Optionen(Abschnitt) Ruft alle Optionen unter dem angegebenen Abschnitt ab
cf.items(Abschnitt) Ruft alle Schlüssel-Wert-Paare unter dem angegebenen Abschnitt ab und gibt sie in Form eines Tupels zurück
cf.get( section, option) Ruft den Wert der Option im angegebenen Abschnitt ab und gibt ihn als Zeichenfolgentyp zurück
cf.getint(section, option) Ruft den Wert von ab Option im angegebenen Abschnitt und gibt sie als int-Typ
cf.has_option(section,option) zurück. Überprüfen Sie, ob unter dem Abschnitt eine angegebene Option vorhanden ist. Geben Sie „True“ zurück, falls vorhanden, andernfalls „False“
cf.has_section(section) Überprüfen Sie, ob ein Abschnitt vorhanden ist. Geben Sie ihn zurück, wenn er „True“ ist, und geben Sie „False“ nicht zurück. add_section(section) Einen neuen Abschnitt zur Konfigurationsdatei hinzufügen
cf.set(section, option, value) Option im Abschnitt festlegen
cf.remove_section( Abschnitt) Löschen Sie den angegebenen Abschnitt
cf.remove_option(section , option) Löschen Sie die Option im angegebenen Abschnitt
Beachten Sie, dass Sie zum Ändern der Konfigurationsdatei Folgendes tun müssen Rufen Sie write auf, um den Inhalt in die Konfigurationsdatei zu schreiben.
2.3 Beispiel
Klicken Sie (hier), um es zu reduzieren oder zu öffnen
#!/usr/bin/python2.6
#coding:utf8
import ConfigParser
old_mycnf_file='backup-my.cnf'
new_mycnf_file='my.cnf'
cf =ConfigParser.ConfigParser()
cf.read(new_mycnf_file)
sec=cf.sections()
print 'sections:' , sec
opts = cf.options("mysqld")
print 'options:', opts
kvs = cf.items("mysqld")
für kv in kvs:
print kv
innodb_data_file_path=cf.get('mysqld','innodb_data_file_path')
innodb_log_file_size=cf.get('mysqld','innodb_log_file_size')
print 'innodb_data_file_path: ',innodb_data_file_path
print 'innodb_log_file_size :',innodb_log_file_size
print „Nach der Änderung“
cf.set('mysqld', 'innodb_data_file_path','ibdata1:1G:autoextend')
cf.write(open(new_mycnf_file, "w"))
cf.read(new_mycnf_file)
InnoDB_DATA_FILE_PATH = CF.GET ('MySQLD', 'Innodb_data_file_path')
yangyidba: Test Yangyi $ Python writecnf. py
Abschnitte: ['mysqld']
('ibdata1', '2g:autoextend = ibdata1:2G:autoextend')
innodb_data_file_path : ibdata1:1G:autoextend
innodb_log_file_size : 536870912
Nach der Änderung
innodb_data_file_path : ibdata1:1G:autoextend
Drei Zusammenfassung
Gemäß den vom ConfigParser-Modul bereitgestellten Funktionen kann es grundsätzlich erfüllt werden die Anforderungen der täglichen Arbeit an Konfigurationsdatei-Änderungsvorgängen. Ausführlichere Informationen finden Sie in der offiziellen Dokumentation.