- 15年移动互联网产研经验,10年团队管理经验。
- 经历过公司从0到1的创业过程,深知创业难点。
- 拥有软件开发、运营商服务、大数据业务等多领域的工作经验。
- 熟练使用 Office, Project, Visio, Axure, JsutinMind等产品管理工具。
- 熟练使用 Linux, Docker, Python, H5, Javascript, MySQL, PostgreSQL 等开发工具。
- 熟悉网络架构,拥有CCNA证书。
README.md
Popular posts
PostgreSQL 频繁读写数据库的定期维护
是的,频繁读写的 PostgreSQL 数据库绝对需要定期维护。这是保证数据库长期稳定运行、维持高性能和避免数据损坏的关键措施。
🔧 必须的定期维护任务
1. VACUUM 维护(最重要)
-- 常规VACUUM(推荐每日执行) VACUUM ANALYZE; -- 针对特定表的VACUUM VACUUM ANALYZE your_busiest_table; -- 彻底的VACUUM(建议每周或每月) VACUUM FULL VERBOSE;2. ANALYZE 统计信息更新
-- 更新统计信息(查询优化器需要) ANALYZE VERBOSE; -- 针对特定表 ANALYZE VERBOSE your_busiest_table;3. 索引维护
-- 重建碎片化严重的索引 REINDEX INDEX your_index_name; REINDEX TABLE your_table_name; -- 并发重建(PostgreSQL 12+) REINDEX INDEX CONCURRENTLY your_index_name;📅 推荐维护计划
每日维护
-- 自动VACUUM通常足够,但可以补充 VACUUM ANALYZE;每周维护
-- 更彻底的维护 VACUUM FULL ANALYZE; CHECKPOINT;每月维护
-- 全面维护 REINDEX DATABASE your_database; VACUUM FULL VERBOSE; ANALYZE VERBOSE;⚙️ 自动化维护配置
1. 调整 autovacuum 设置(postgresql.conf)
# 针对频繁读写数据库的优化设置 autovacuum = on autovacuum_vacuum_scale_factor = 0.1 autovacuum_analyze_scale_factor = 0.05 autovacuum_vacuum_cost_delay = 10ms autovacuum_vacuum_cost_limit = 10002. 使用 pg_cron 扩展定时任务
-- 安装pg_cron CREATE EXTENSION pg_cron; -- 每天凌晨3点执行VACUUM SELECT cron.schedule('0 3 * * *', 'VACUUM ANALYZE'); -- 每周日凌晨2点执行维护 SELECT cron.schedule('0 2 * * 0', 'VACUUM FULL ANALYZE');3. 操作系统定时任务(crontab)
# 每天执行维护 0 2 * * * psql -d your_db -c "VACUUM ANALYZE" # 每周执行全面维护 0 3 * * 0 psql -d your_db -c "VACUUM FULL ANALYZE; REINDEX DATABASE your_db"📊 监控和维护检查
1. 监控数据库状态
-- 检查表膨胀情况 SELECT schemaname, tablename, n_dead_tup, n_live_tup, round(n_dead_tup::numeric/n_live_tup::numeric*100, 2) as dead_ratio FROM pg_stat_user_tables ORDER BY dead_ratio DESC; -- 检查索引状态 SELECT schemaname, tablename, indexname, idx_scan, idx_tup_read, idx_tup_fetch FROM pg_stat_user_indexes;2. 检查 autovacuum 效果
-- 查看autovacuum统计信息 SELECT relname, last_vacuum, last_autovacuum, last_analyze, last_autoanalyze FROM pg_stat_user_tables;🚨 维护注意事项
- 维护时间窗口:选择业务低峰期进行
- VACUUM FULL 谨慎使用:会锁表,影响业务
- 监控维护影响:使用
VERBOSE选项查看详细情况 - 备份优先:重要维护前先备份数据
🎯 针对频繁读写数据库的特殊维护
-- 针对热点表增加维护频率 ALTER TABLE your_busy_table SET ( autovacuum_vacuum_scale_factor = 0.05, autovacuum_analyze_scale_factor = 0.02 ); -- 监控长事务和锁 SELECT * FROM pg_locks WHERE granted = false; SELECT * FROM pg_stat_activity WHERE state <> 'idle';💡 维护最佳实践
- 定期检查:每周检查数据库状态
- 自动化:尽可能自动化维护任务
- 文档化:记录维护历史和问题
- 测试:在测试环境验证维护脚本
- 容量规划:定期评估存储增长趋势
总结:对于频繁读写的 PostgreSQL 数据库,定期维护不是可选项,而是必需品。通过合理的维护计划,可以确保数据库的性能稳定性和数据完整性。
Debian 12 只安装VNC及i3桌面,就可以低成本的实现远程桌面环境
安装
# 安装通用工具 apt-get install -y nano net-tools bzip2 procps apt-utils iputils-ping netcat-openbsd # 安装中文字体 apt-get install -y locales fonts-wqy-microhei fonts-wqy-zenhei xfonts-wqy && \ sed -i -e "s/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/" /etc/locale.gen && \ locale-gen zh_CN.UTF-8 &&\ update-locale LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh LC_ALL=zh_CN.UTF-8 # 安装VNC apt-get install -y tigervnc-standalone-server # 安装i3桌面 apt-get install -y i3-wm i3status i3blocks dmenu xfonts-base terminator dbus-x11 libdbus-glib-1-2 ; apt-get purge -y pm-utils *screensaver* apt-get clean配置i3桌面
~/.config/i3/config
修改CT虚拟机
修改特权容器
nano /etc/pve/lxc/<CTID>.conf- 删除或注释掉 unprivileged: 1 这一行。
- 确保没有 lxc.idmap 相关的UID/GID映射配置(如有则删除)。
CT虚拟机必须是特权容器,但创建CT虚拟机时,默认为非特权容器,要特别注意!!!
安装
apt update # 安装 Podman apt install -y podman pipx iptables # iptables必须安装,否则netavark无法运行 # 安装 podman-compose apt install pipx \ && pipx install podman-compose \ && echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc \ && . ~/.bashrc # 验证安装 podman version ; podman-compose version # 防火墙一定要加这条,否则容器之间的名称解析无法工作 iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT配置
# 配置国内镜像源 sed -E -i.bak \ -e 's/^# (unqualified-search-registries = ).+$/\1["docker.io"]/' \ -e 's/^# (\[\[registry\]\])$/\1/' \ -e 's/^# (prefix = ).+"$/\1"docker.io"/' \ -e '0,\/^# (location = ).+"$/s//\1"docker.1ms.run"/' \ -e '0,\/^# (\[\[registry.mirror\]\])$/s//\1/' \ -e '0,\/^# (location = ).*"$/s//\1"registry.cn-hangzhou.aliyuncs.com"/' \ /etc/containers/registries.conf# nano /etc/containers/registries.conf unqualified-search-registries = ["docker.io"] [[registry]] prefix = "docker.io" location = "docker.1ms.run" [[registry.mirror]] location = "registry.cn-hangzhou.aliyuncs.com" # 可选备用其实命令与Docker一致,非常方便好用。
- 安装 OpenSSH 客户端
# 检查是否已安装 OpenSSH 客户端 > Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*' # 安装 OpenSSH 客户端 > Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 # 验证安装 > ssh -V- 安装 OpenSSH 服务器
# 检查是否已安装 OpenSSH 服务器 > Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*' # 安装 OpenSSH 服务器 > Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # 启动 SSH 服务并设置为自动启动 > Start-Service sshd > Set-Service -Name sshd -StartupType Automatic # 检查服务状态 > Get-Service sshd # 重启服务 > Restart-Service sshd- 配置防火墙(允许 SSH 端口 22)
# 允许入站 SSH 连接 > New-NetFirewallRule -Name "OpenSSH-Server" -DisplayName "OpenSSH Server (sshd)" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22安装
Windows
1. 下载
推荐使用 PowerShell1
# 下载并安装 VC++ Redistributable,需要管理员模式 Invoke-WebRequest -Uri "https://aka.ms/vs/17/release/vc_redist.x64.exe" -OutFile "$env:TEMP\vc_redist.x64.exe" Start-Process -Wait -FilePath "$env:TEMP\vc_redist.x64.exe" -ArgumentList "/install", "/quiet", "/norestart" # 下载micromamba Invoke-Webrequest -URI https://micro.mamba.pm/api/micromamba/win-64/latest -OutFile micromamba.tar.bz2 # 使用7z解压 & "C:\Program Files\7-Zip\7z.exe" x "micromamba.tar.bz2" -o"tmp" # 使用tar解压,系统内置不用安装 mkdir micromamba tar -xvf .\tmp\micromamba.tar -C .\micromamba\ .\micromamba\Library\bin\micromamba.exe --help # 查看输出2. 安装2
.\micromamba\Library\bin\micromamba.exe shell init -s powershell -r C:\Your\Root\Prefix默认位置为 $HOME/micromamba,也就是 C:\Users\username\micromamba 。
同时会在 PowerShell 的 Profile 文件中(相当于 Bash 的 .bashrc)添加以下代码,保证每次启动 PowerShell 时,都会自动初始化 Micromamba 。
$HOME/Documents/WindowsPowerShell/profile.ps1
#region mamba initialize # !! Contents within this block are managed by 'mamba shell init' !! $Env:MAMBA_ROOT_PREFIX = "C:\Users\username\micromamba" $Env:MAMBA_EXE = "C:\Users\username\micromamba\Library\bin\micromamba.exe" (& $Env:MAMBA_EXE 'shell' 'hook' -s 'powershell' -p $Env:MAMBA_ROOT_PREFIX) | Out-String | Invoke-Expression #endregion加入设置 micromamba 别名的命令。 设置别名后,即方便使用,也可配合 VSCode 的配置,实现自动启动开发环境。
安装
1. 环境准备
# PowerShell 版本:≥5.0 > $PSVersionTable.PSVersion # .NET Framework:≥4.5 > $PSVersionTable.CLRVersion- 下载 .NET Framework 注意下载“脱机安装程序”和“语言包”
- 在 Windows 上安装 .NET
2. 安装
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser # 普通用户安装 > Invoke-RestMethod -Uri https://blog.cuile.com/attachments/scripts/scoop_install.ps1 | Invoke-Expression # 管理员用户安装 > irm blog.cuile.com/attachments/scripts/scoop_install.ps1 -outfile 'install.ps1' > .\install.ps1 -RunAsAdmin # 默认安装到 C:\Users\<user>\scoop # 验证安装 > scoop help # 安装aria2,提升下载速度 > scoop install aria2 # 安装7zip,提升解压成功率 > scoop install 7zip强制使用7zip解压
// ~\.config\scoop\config.json { "7ZIPEXTRACT_USE_EXTERNAL": true }3. 使用
Less