by Rain Chu | 10 月 31, 2023 | MariaDB , SQL , 資料庫
1. 瞭解 MariaDB Master to Master 備援的重要性
Master to Master (M2M) 備援在 MariaDB 中是非常重要的一種設定。它允許兩個 MariaDB 伺服器雙向地同步資料,確保其中一台伺服器發生問題時,另一台可以立即接手,確保資料的持續可用性。對於那些尋求高可用性和資料完整性的應用程式來說,這是一個非常有用的設定。
2. Windows 環境下的 MariaDB 安裝步驟
要在 Windows 上設定 M2M,首先需要正確地安裝 MariaDB。下載適用於 Windows 的 MariaDB 版本並執行安裝程式。選擇適當的安裝選項,例如伺服器位置、資料庫大小等。並且確保在安裝過程中設定一個強大的 root 密碼,以確保資料庫的安全。
目前MariaDB長期支援版本為 MariaDB 10.11 版本,11版本則是有最佳化過的,兩者都可以用,可以依照自己的需求做選擇
假設兩台主機如下
Hostname: Master01 ,IP:192.168.0.10
Hostname: Master02 ,IP:192.168.0.11
3. 配置 Master to Master 備援
設定 M2M 備援涉及許多步驟:
修改 my.ini
(Windows) 或 my.cnf(Linux)
設定檔,設定 server-id 和 log-bin 參數
可以在開始功能表中找到my.ini,或是到你安裝時候填寫的資料庫路徑中可以看到my.ini檔案
每個 master 伺服器應該有一個唯一的 server-id,所以要在my.ini設定檔案中加入 server-id、log-bin、log-basename
第一台主機 id 設定為 1
[mysqld]
datadir=C:/Mariadb
port=3306
innodb_buffer_pool_size=2559M
character-set-server=utf8mb4
server-id = 1
log-bin
log-basename = master01
第二台主機 id 設定為 2
[mysqld]
datadir=C:/Mariadb
port=3306
innodb_buffer_pool_size=2559M
character-set-server=utf8mb4
server-id = 2
log-bin
log-basename = master02
在每台伺服器上建立用於備援的使用者帳號,並授予該使用者適當的權限。
在第一台主機 master01 上,新增一個使用者,讓 slave 主機可以透過192.168.0.X的網段連進來
grant replication slave on *.* to 'replica_user'@192.168.0.% identified by '123456';
flush privileges;
在第二台主機 master02 上,新增一個使用者,並且要讓 master01 主機的 IP 可以連進來
grant replication slave on *.* to 'replica_user'@192.168.0.% identified by '123456';
flush privileges;
設定 replication filters,確保只有需要的資料被同步。
啟動二進制日誌(binary logging)並確認每台伺服器都可以互相連接。
4. 測試 Master to Master 備援
在完成設定後,你應該測試 M2M 備援以確保它正常工作。首先,在一台伺服器上添加或修改一些資料,然後檢查另一台伺服器是否已同步這些變更。同樣地,從另一台伺服器修改資料並檢查第一台伺服器。此過程應確保資料在兩個伺服器之間正確同步。
在 Master01 中,查詢 File 和 Position,並且把值記錄下來,等等要填到 master02
在 master02 中,把 master01 的數值填入,並且建立連結
change master to master_host='192.168.0.10',
-> master_user='replica_user',
-> master_password='123456',
-> master_log_file='master01-bin.000001',
-> master_log_pos=5099;
start slave;
接下來檢查是否有設定成功
接下來回到 master01 去設定跟 master02 的連接
change master to master_host='192.168.0.11',
-> master_user='replica_user',
-> master_password='123456',
-> master_log_file='master02-bin.000002',
-> master_log_pos=5079;
start slave;
5. 維護和監控 Master to Master 備援
一旦 M2M 備援設定完畢並經過測試,你需要持續監控以確保它正常運作。使用如 MariaDB 的 SHOW SLAVE STATUS
命令來檢查備援的狀態。此外,考慮使用監控工具,如 Nagios 或 Zabbix,來自動檢查伺服器的健康狀態。
相關文章
by Rain Chu | 10 月 27, 2023 | AI , 繪圖
不論你是否具備繪畫基礎,Fooocus的力量都能幫助你創建出大師級的作品。本文將深入解析Fooocus的核心技術及其使用體驗。
1. Fooocus的核心技術:
GPT2為基礎的動態風格擴展 :這項技術使得Fooocus能夠動態調整畫風,提供用戶更多元的選擇。
原生細緻化調整 :Fooocus採用先進的k-擴散採樣技術,使得細緻化調整與基礎模型能夠更協同工作,確保作品的連貫性和質量。
負向引導 :解決了XL基礎模型在最高解析度層面的問題,使得作品更具真實感。
自我專注導引的優化 :這項技術確保了Fooocus生成的作品永遠不會顯得過於光滑或假象。
2. 使用體驗:
Fooocus的使用界面簡潔明了,即使是零基礎的用戶,也能在短時間內上手。其推薦的配置要求為4GB Nvidia GPU記憶體及8GB系統記憶體,但即便是中低端筆記本,如配備16GB RAM及6GB VRAM的Nvidia 3060,都能達到令人滿意的效果。
3.Fooocus於Windows上的安裝與使用教學
Fooocus不僅為專業的AI繪畫工具,其安裝和使用過程也十分簡單。以下將針對Windows平台進行Fooocus的安裝與使用教學。
下載Fooocus
https://github.com/lllyasviel/Fooocus/releases/download/release/Fooocus_win64_2-1-60.7z
解壓縮後放在Fooocus_win64_2-1-60目錄下
下載模型檔
sd_xl_base_1.0_0.9vae.safetensors
sd_xl_refiner_1.0_0.9vae.safetensors
模型檔需要放在 Fooocus\models\checkpoints\ 目錄下
Fooocus的修圖控制模型
控制模型要放在 Fooocus\models\inpaint\ 目錄下
第一次使用以及安裝
執行解壓縮目錄下的 run.bat
Fooocus_win64_2-1-60\run.bat
這時候會做好模型下載以及基本設定,並且在本地端起一個 http://127.0.0.1:7860/ 伺服器
接下來用瀏覽器開啟該網址即可,超簡單
原始碼
https://github.com/lllyasviel/Fooocus
延伸閱讀
VIDEO
by Rain Chu | 10 月 20, 2023 | AI , Tool
近年來,AI技術在多方面都已發光發熱,其中最具話題性的當屬Adept 這家新創公司。微軟的Copilot 雖然在Office365的範疇內有著出色的表現,但Adept則有著更宏大的願景——使所有的軟體都能夠被AI所操控。
Adept的目標是簡單而直接的:用一句話完成所有任務。他們打造了名為「AI助理」的概念,實際上是透過他們開發的ACT-1模型來實現。這款模型基於深度學習基礎模型Transformer所建構,使其能夠學習與模仿使用者的電腦操作,從而自動執行複雜的任務。舉例而言,使用者只需要在Adept的文本框中簡單輸入指令,ACT-1模型就能夠按照使用者的習慣,自動完成指令中的所有要求。
除此之外,Adept的市值和募資金額也非常驚人。在僅成立一年之內,該公司就成功獲得了超過4億美元的募資,投資方包括了Microsoft、Nvidia、Greylock等知名企業和創投機構。尤其值得一提的是,《Forbes》報導指出,該公司最近以10億美元的估值完成了B輪募資,這無疑再次證明了Adept的商業模型和技術潛力。
作為OpenAI的競爭對手,Adept逆勢籌資,並已經明確表示他們希望開發出新的AI工具。他們的目標是利用AI以全新的方式來操控電腦,真正讓AI成為每一位使用者的個人助理。
by Rain Chu | 10 月 20, 2023 | AI , 圖型處理 , 繪圖
在現代快節奏的數位時代,我們經常追求效率並希望能為自己的照片或設計增加獨特之處。Fotor 無疑是滿足這些需求的完美工具,提供了一站式的圖片修圖、拼貼及平面設計解決方案。
先進的圖片編輯技術
Fotor 具有一流的照片處理引擎,它不僅能夠迅速處理高質量的照片,而且功能強大。無論是對照片的曝光、亮度、對比度還是色彩進行調整,它都能瞬間完成。除了這些基本功能外,Fotor 還具有一系列的高級功能,例如去除紅眼、減少影像噪點,甚至是對影像進行矯正和鏡頭失真的修正。用戶還可以保存一系列的編輯動作為”Recipe”,在其他照片上快速再次應用。
獨特的HDR技術 HDR
也就是高動態範圍,是一種專業級的照片編輯技術。Fotor 通過其內置的HDR技術,能夠將多張具有不同曝光度的照片合併成一張,從而在最終圖像中捕獲更多的細節和色彩。這種技術對於在極端光線條件下拍攝的照片尤其有用,如逆光或高對比度的場景。
多功能的平面設計工具
平面設計不再是專業設計師的專利。有了Fotor,任何人都可以像專家一樣設計。無論是為社交媒體製作封面圖片、名片、海報還是其他廣告材料,Fotor 都提供了數以萬計的專業設計模板供用戶選擇。用戶只需選擇一個模板,然後對其進行簡單的編輯和個性化設計,即可得到理想的成果。
靈活的拼貼功能
照片拼貼是一種獨特的藝術形式,可以將多張照片組合成一個完整的故事。Fotor 的拼貼功能提供了大量的模板供用戶選擇,從簡單的兩張照片的拼接到複雜的多張照片的組合都可以輕鬆完成。加上豐富的背景選擇和邊框設計,你的拼貼將會如同藝術品般獨特。
完美的人像修飾工具
Fotor 的人像修飾功能將確保你的每一張人像照片都像由專業攝影師拍攝的一樣。從基本的磨皮、去皺到進階的塑形和牙齒美白,Fotor 提供了全套的修飾工具,只需幾次點擊,你的照片就會焕然一新。
AI繪圖生成器
這是Fotor 最新推出的功能,允許用戶將文字轉化為藝術圖片。只需輸入或描述你的想法,AI就會將其轉化為獨特的藝術作品。
https://www.fotor.com/tw/features/ai-image-generator/
官網
https://www.fotor.com/
支援的系統
Windows、MAC、WEB、iPhone、Android
by Rain Chu | 10 月 19, 2023 | Nginx , SERVER
Nginx 是一個高效能、高穩定性的 Web 伺服器。其中,Nginx 提供的 fastcgi_cache
可以有效地快取後端伺服器(如 PHP-FPM)的回應,以提高網站的回應速度。但在預設情況下,我們需要手動清理這些快取。此時,我們可以使用 NGINX Helper 插件來協助進行快取的清除。
前期準備
要有編譯器
NGINX Helper
1. 安裝 NGINX Helper
首先,你需要在你的網站上安裝 NGINX Helper。如果你使用的是 WordPress,可以直接從插件庫中安裝。
2. 設定 NGINX 快取路徑
為了讓 NGINX Helper 知道你的 Nginx 快取路徑,你需要在 Nginx 的設定檔中,指定 fastcgi_cache_path
。例如:
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=MYCACHE:100m inactive=60m;
此設定將會在 /var/run/nginx-cache
建立快取資料。
3. 配置 NGINX Helper
在 WordPress 的設定中,找到 NGINX Helper 的設定頁面,並啟用以下選項:
Enable Cache Purge
Purge Entire Cache when a post or page is published
並設定你的 Nginx 快取路徑(如 /var/run/nginx-cache
)。
4. 手動清除快取
若需要手動清除快取,可以直接在 NGINX Helper 的設定頁面點選 “Purge Entire Cache” 按鈕。
5. Nginx 設定更新
確保你的 Nginx 設定檔有啟用快取清除功能:
location ~ /purge(/.*) { fastcgi_cache_purge MYCACHE "$scheme$request_method$host$1"; }
6.重新加載 Nginx 以使新設定生效。Copy code
sudo systemctl reload nginx
安裝 Nginx 新版包含有ngx_cache_purge
1.備份配置 :
在進行任何更改之前,確保備份你當前的 Nginx 配置,以防止任何數據丟失。
sudo cp -r /etc/nginx /etc/nginx-backup
停止和卸載現有的 Nginx :
首先,停止 Nginx 服務:
sudo systemctl stop nginx
然後,卸載 Ubuntu 的 Nginx 版本:
sudo apt-get purge nginx nginx-common nginx-full
下載 OpenSSL
wget -c https://www.openssl.org/source/openssl-3.0.11.tar.gz ; tar zxf openssl-3.0.11.tar.gz ; rm openssl-3.0.11.tar.gz
下載第三方模組
安裝 ngx_cache_purge
下載最新版本 https://github.com/nginx-modules/ngx_cache_purge/releases
wget https://github.com/nginx-modules/ngx_cache_purge/archive/refs/tags/2.5.3.tar.gz
tar -xvzf 2.5.3.tar.gz
ngx_brotli
git clone https://github.com/google/ngx_brotli.git
pushd ngx_brotli
git submodule update --init
popd
編譯 ngx_brotli
cd ~/ngx_brotli/deps/brotli/c
mkdir -p out
cmake ..
make
編譯和安裝 Nginx 1.2 :
如果你還沒有下載和編譯 Nginx 1.2,首先下載源代碼,然後編譯和安裝它:
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -xvzf nginx-1.24.0.tar.gz
cd nginx-1.24.0/
./configure --with-pcre=../pcre-8.45 \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-openssl=../openssl-3.0.11 \
--add-module=../ngx_brotli \
--add-module=../ngx_cache_purge-2.5.3
make
sudo make install
預設情況下,自行編譯的 Nginx 會被安裝到 /usr/local/nginx
。
如果出現下面的錯誤
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
代表你apt-get install libpcre3 libpcre3-dev這邊出現問題
可以自行安裝 PCRE
wget https://ftp.exim.org/pub/pcre/pcre-8.45.tar.gz
tar -xvzf pcre-8.45.tar.gz
./configure --with-pcre=../pcre-8.45 \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-openssl=../openssl-3.0.11 \
--add-module=../ngx_brotli \
--add-module=../ngx_cache_purge-2.5.3
如果出現gzip錯誤
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
那可以自行安中 zlib
sudo apt-get update
sudo apt-get install zlib1g zlib1g-dev
如果出現 cannot find -lbrotlienc or cannot find -lbrotlicommon ,那需要安裝 Brotli
sudo apt update
sudo apt install libbrotli-dev
驗證 Brotli 是否安裝成功
ldconfig -p | grep brotli
檢查安裝是否成功
sudo /usr/local/nginx/sbin/nginx -V
配置系統啟動腳本 :
如果你希望 Nginx 在系統啟動時自動運行,你需要設置一個 systemd 服務文件或 init 腳本。由於你從源代碼編譯 Nginx,它不會自帶 systemd 服務文件,所以你可能需要自行創建。
恢復配置 :
從你之前備份的配置恢復設置:
sudo cp -r /etc/nginx-backup/* /usr/local/nginx/conf/
請注意,由於 Nginx 版本之間可能存在差異,所以你可能需要調整配置以使其與 Nginx 1.2 版本兼容。
啟動新的 Nginx :
sudo /usr/local/nginx/sbin/nginx
要使 /usr/local/nginx/sbin/nginx
可在任何地方都能執行
使用符號鏈接 :
你可以在 /usr/bin
或 /usr/sbin
中創建一個指向 /usr/local/nginx/sbin/nginx
的符號鏈接。這樣,由於 /usr/bin
和 /usr/sbin
通常都在 $PATH
環境變量中,你就可以從任何地方執行 nginx
命令。
sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
修改 $PATH
變量 :
作為另一種方法,你可以將 /usr/local/nginx/sbin
目錄添加到 $PATH
環境變量中。這可以在你的 shell 啟動腳本中完成,例如 ~/.bashrc
或 ~/.profile
。打開 ~/.bashrc
文件:
在文件末尾添加以下行:
export PATH=$PATH:/usr/local/nginx/sbin
然後,重新加載 .bashrc
以應用更改:
管理 Nginx
你可以直接從GitHub下載nginx-startup-script-for-debian-ubuntu.sh 至你的『/etc/init.d』目錄,並將名稱更改為『nginx』。
sudo wget -O /etc/init.d/nginx https://raw.githubusercontent.com/KJieGitHub/Nginx/master/nginx-script/nginx-startup/nginx-startup-script-for-debian-ubuntu.sh
sudo chmod +x /etc/init.d/nginx
sudo systemctl daemon-reload
sudo systemctl start nginx
sudo update-rc.d -f nginx defaults
實用管理命令
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
實用連結
Nginx 版本以及下載連結
https://nginx.org/en/download.html
Nginx 第三方模組
NGINX 3rd Party Modules
參考資料
https://www.kjnotes.com/devtools/83
https://github.com/FRiCKLE/ngx_cache_purge
完整版本的 Nginx Config
proxy_cache_path /var/run/proxy_cache/ levels=1:2 keys_zone=demo-proxy:10m max_size=1000m inactive=600m use_temp_path=off;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
server {
listen 80;
server_name yoursite;
proxy_cache demo-proxy;
proxy_cache_valid 200 1d;
#設定上傳的檔案大小
client_max_body_size 64M;
set $skip_cache 0;
add_header X-Cache $upstream_cache_status;
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|^/feed/*|/tag/.*/feed/*|index.php|/.*sitemap.*\.(xml|xsl)") {
set $skip_cache 1;
}
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
location / {
proxy_cache_bypass $skip_cache;
proxy_no_cache $skip_cache;
proxy_hide_header X-Frame-Options;
proxy_pass http://X.X.X.X:X;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache demo-proxy;
proxy_cache_key $uri$is_args$args;
}
location ~ /purge(/.*) {
allow 127.0.0.1;
proxy_cache_purge demo-proxy $1$is_args$args;
}
}
近期留言