初始化1
This commit is contained in:
78
scripts/run_audit_migration.py
Normal file
78
scripts/run_audit_migration.py
Normal file
@@ -0,0 +1,78 @@
|
||||
"""审计字段数据库迁移脚本"""
|
||||
import pymysql
|
||||
|
||||
conn = pymysql.connect(
|
||||
host='10.1.1.122',
|
||||
user='nginxserver',
|
||||
password='mokee.',
|
||||
database='nginxserver',
|
||||
charset='utf8mb4',
|
||||
autocommit=True
|
||||
)
|
||||
cur = conn.cursor()
|
||||
|
||||
tables = ['forwarding_rules', 'dns_zone_config', 'certificates']
|
||||
columns = [
|
||||
('created_by', 'VARCHAR(100) DEFAULT NULL', '创建人'),
|
||||
('updated_by', 'VARCHAR(100) DEFAULT NULL', '更新人'),
|
||||
]
|
||||
|
||||
for table in tables:
|
||||
for col_name, col_def, col_comment in columns:
|
||||
cur.execute(f"""SELECT COLUMN_NAME FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA='nginxserver' AND TABLE_NAME='{table}' AND COLUMN_NAME='{col_name}'""")
|
||||
if not cur.fetchone():
|
||||
cur.execute(f"ALTER TABLE {table} ADD COLUMN {col_name} {col_def} COMMENT '{col_comment}'")
|
||||
print(f'{table}.{col_name} 已添加')
|
||||
else:
|
||||
print(f'{table}.{col_name} 已存在,跳过')
|
||||
|
||||
# 新建 dns_records 表
|
||||
cur.execute("""SELECT TABLE_NAME FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA='nginxserver' AND TABLE_NAME='dns_records'""")
|
||||
if not cur.fetchone():
|
||||
cur.execute("""
|
||||
CREATE TABLE dns_records (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
||||
record_id VARCHAR(128) NOT NULL COMMENT '阿里云解析记录ID',
|
||||
domain_zone VARCHAR(255) NOT NULL COMMENT '主域名',
|
||||
rr VARCHAR(255) NOT NULL COMMENT '主机记录',
|
||||
record_type VARCHAR(20) NOT NULL COMMENT '记录类型: A/CNAME/TXT',
|
||||
record_value VARCHAR(500) NOT NULL COMMENT '记录值',
|
||||
ttl INT DEFAULT 600 COMMENT 'TTL(秒)',
|
||||
status TINYINT DEFAULT 1 COMMENT '0-已删除, 1-正常',
|
||||
created_by VARCHAR(100) DEFAULT NULL COMMENT '创建人',
|
||||
updated_by VARCHAR(100) DEFAULT NULL COMMENT '更新人',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
UNIQUE KEY uk_record_id (record_id),
|
||||
INDEX idx_domain_zone (domain_zone),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='DNS解析记录本地审计表'
|
||||
""")
|
||||
print('dns_records 表已创建')
|
||||
else:
|
||||
print('dns_records 表已存在,跳过')
|
||||
|
||||
# 验证
|
||||
print()
|
||||
print('=== 验证结果 ===')
|
||||
cur.execute("""SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, COLUMN_COMMENT
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA='nginxserver'
|
||||
AND TABLE_NAME IN ('forwarding_rules', 'dns_zone_config', 'certificates')
|
||||
AND COLUMN_NAME IN ('created_by', 'updated_by')
|
||||
ORDER BY TABLE_NAME, COLUMN_NAME""")
|
||||
for row in cur.fetchall():
|
||||
print(row)
|
||||
|
||||
print()
|
||||
cur.execute('SHOW CREATE TABLE dns_records')
|
||||
row = cur.fetchone()
|
||||
if row:
|
||||
print('dns_records 表已就绪')
|
||||
|
||||
cur.close()
|
||||
conn.close()
|
||||
print('\n数据库迁移完成!')
|
||||
Reference in New Issue
Block a user