月份: 2021 年 1 月

KVM 備份還原程序教學

KVM(Kernel-based Virtual Machine) 虛擬架構真的是一個很好的使用環境,不論是開發測試或是佈署成正式環境都很妥當,連 GCP 的 CE 也是採用 KVM 的架構。Guest 端可以支援不論是 Linux、FreeBSD、Solaris 甚至是 Microsoft Windows。

當然東西用下去正式跑的時候,備份就很重要了!

KVM 備份程序

先列出要備份的虛擬機器

ubuntu@host:/$ virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     kudocker                       running
 2     nextcloud                      running

停止 kvm – nextcloud

ubuntu@host:/$ virsh shutdown nextcloud
Domain nextcloud is being shutdown

接下來將 VM 的資料備份成 XML 檔案

ubuntu@host:/$ virsh dumpxml nextcloud > /kvm_backup/nextcloud.xml
ubuntu@host:/$ ll /kvm_backup/nextcloud.xml
-rw-rw-r-- 1 ubuntu ubuntu 4943 Jan 19 16:40 /kvm_backup/nextcloud.xml

再來將 image 檔備份出來

sudo cp /var/lib/libvirt/images/nextcloud.qcow2 /kvm_backup

備份打完收工!

KVM 還原程序

virsh undefine nextcloud
sudo cp /kvm_backup/nextcloud.qcow2 /var/lib/libvirt/images
virsh define -file /kvm_backup/nextcloud.xml
virsh start nextcloud
  • 先將原本的 VM undefine
  • 將 image 檔還原
  • 重新載入定義檔
  • 開啟 VM

WordPress 修改 wp-config.php 各項變數

內容修訂版本上限次數

# 控制內容修訂版本上限次數
define( 'WP_POST_REVISIONS', 4 );

# 取消內容修訂版本次數
define('WP_POST_REVISIONS', false );

定義使用的記憶體

# WordPress 前台可使用的記憶體
define( 'WP_MEMORY_LIMIT', '256' );

# wp-admin 後台可使用記憶體 
define( 'WP_MAX_MEMORY_LIMIT', '512' );

定義快取 – WP Super Cache

# 定義快取
define( 'WP_CACHE', true ) ;

# 快取資料夾
define( 'WPCACHEHOME', '/var/www/j7.lb168.tw/wp-content/plugins/wp-super-cache/' );

設定 cookie domain

define( 'COOKIE_DOMAIN', 'j7.lb168.tw');

設定多重 Redis key

單一主機跑 Redis 的時候,會亂七八糟,所以要設定 Redis Key

define( 'WP_CACHE_KEY_SALT', 'j7.lb168.tw' );

其他 Redis Object Cache 相關參數:

define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', '6379' );
define( 'WP_REDIS_DATABASE', 1 );
define( 'WP_REDIS_PASSWORD', 'mypassword_mypassword_mypassword_mypas' );

禁止登入者修改檔案

define( 'DISALLOW_FILE_EDIT', true );

清空回收桶(7 天)

define( 'EMPTY_TRASH_DAYS', '7' );

WordPress 除錯工具

# 開啟 PHP 除錯工具
define( 'WP_DEBUG', true );

# 開啟 CSS 和 JavaScript 除錯工具
define( 'SCRIPT_DEBUG', true );

優化 WordPress 的 MySQL DB(用完記得馬上關閉)- 不建議使用

define( 'WP_ALLOW_REPAIR', true );

其他設定

define('CONCATENATE_SCRIPTS', true );
define('COMPRESS_SCRIPTS', true);
define('COMPRESS_CSS', true);

pigz – 搭配 tar – Linux 使用 pigz 平行 gzip 壓縮、解壓縮

現在 CPU 核心越來越多,threads 也是一樣,單純用 gzip 來壓縮只會使用一個 core 來跑到極致,pigz 如同說明的:

pigz

就是告訴你說可以用很多核心來跑 gzip

A parallel implementation of gzip for modern
multi-processor, multi-core machines

常用參數說明

跟 gunzip 一樣

-k Do not delete original file after processing.
# 保留原始檔案

核心數

-p ${1~n} Allow up to n processes (default is the number of online processors)
# 看有幾個核心,就用幾個去跑

壓縮比

-# --fast --best
-0~-11 
預設壓縮比是 -6,--fast 是 -1,--best 是 -9

我個人是偏好使用 -1,因為大小真的不會差異很大,而且壓縮時間差很多,不過也是看檔案,如果都是圖片當然不用壓縮,如果都是文字,壓縮比越大越小。

解壓縮

-d --decompress --uncompress
# Decompress the compressed input.

搭配 tar 使用

將 j7.lb168.tw 壓縮,使用 4 個核心,分別測試:

  • 壓縮比 -1
  • 壓縮比 -6
  • 壓縮比 -9
tar -I "pigz -1 -p 4" -cf j7.lb168.tw-1.tar.gz -C /var/www j7.lb168.tw

壓縮結果

所以選擇 -1 的壓縮比是對的XD

mycli – MySQL 語法小幫手

MyCLI is a command line interface for MySQL, MariaDB, and Percona with auto-completion and syntax highlighting.

意思就是用 MyCLI 可以有自動完成跟 syntax highlighting,真的方便又好閱讀!

直接來看看官方網站提供的範例:

安裝方式:

Ubuntu

sudo apt install mycli

Python Package:

pip3 install mycli

使用方式

先搭配先前的文章 – 使用 mysql_config_editor 避免密碼外漏,然後就可以用 config 檔來執行 MyCLI

mycli --login-path=phpmyadmin