2018年12月24日 星期一

CentOS7.5 MySQL5.7 repliaction 架設

在MySQL資料庫的實用上,常常會需要考慮到備援或增加讀取流量,
其中簡易的處理方案就以replication或cluster。
以下為測試CentOS7.5環境下,建立兩台機器進行安裝MySQL5.7,
並設定某個DB replication的過程。

安裝MySQL
本次假定在兩台機器安裝,
MASTER位於192.168.0.201
SLAVE位於192.168.0.202
CentOS7.5預設的MySQL版本並非5.7,因此需要先從MySQL網站下載。
先下載最新的 noarch.rpm
wget http://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
yum安裝搜尋路徑
yum localinstall mysql80-community-release-el7-1.noarch.rpm
查看目前yum關於MySQL的設定
yum repolist all | grep mysql
啟用MySQL5.7並關閉MySQL8.0(預設安裝最新版本)
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
設定完畢後開始安裝MySQL server
yum install mysql-community-server
啟動MySQL
systemctl start mysqld.service
PS:因為本次測試要兩台機器,所以安裝完畢後直接複製VM。
但每次安裝完畢,啟動MySQL後,MySQL會產生UUID提供辨識,
紀錄在 /var/lib/mysql/auto.cnf,
複製VM的方式會使兩個MySQL擁有相同的UUID,造成衝突。
因此複製完畢後,在其中一台VM要進行調整,將auto.cnf更名,
重新啟動MySQL,讓他重新產生UUID檔案。
mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bak

fireall設定調整
CentOS7已經改用firewall取代iptables。
使用firewall可以增設一組設定,不用重新啟動firewall就可以更新狀態,
避免切斷已經在進行中的連線。
以下假定要增加一組名為 trusted 的設定,開放讓192.168.0.202機器連接本機的MySQL:
firewall-cmd --permanent --zone=trusted --add-source=192.168.0.202
firewall-cmd --permanent --zone=trusted --add-port=3306/tcp
firewall-cmd  --reload
其中 --permanent 表示寫入設定檔,下次開機也會有效。
設定完畢後可以查看目前的狀態:
firewall-cmd --zone=trusted --list-all
firewall-cmd --zone=trusted --list-all --permanent

MASTER設定
MASTER的MySQL上要建立一個帳號讓SLAVE可以讀取資料變動,
需要的權限包含 FILE、REPLICATION:
GRANT FILE ON *.* TO ‘backup’@'192.168.0.202' IDENTIFIED BY ‘1234’;
GRANT REPLICATION SLAVE ON *.* TO ‘backup’@'192.168.0.202' IDENTIFIED BY ‘1234’;
建立要同步的DB
create database testdb;
打開binary log的輸出,讓SLAVE可以讀取。
編輯 /etc/my.cnf,加入下面的設定
server-id=1
log-bin
binlog-do-db=testdb
重新啟動MySQL server
PS:若有多個DB要同步,每個要獨立寫一行binlog-do-db。
完成後,若要查看MASTER的狀態,
可在MySQL下使用show master status\G,可以查看目前master設定是否運作正確。

SLAVE設定
同樣先建立要同步的testdb,
然後調整設定檔,設定要同步的db。
編輯/etc/my.cnf,加入以下設定
server-id=2
replicate-do-db=testdb
重新啟動MySQL server
PS:同樣,多個DB要分寫多行replicate-do-db。
接著設定往MASTER連線,以root登入MySQL,下達下面的命令
change master to master_host='192.168.0.201',
  master_user='backup', master_password='1234';
start slave io_thread;
start slave;
完成後查看SLAVE的狀態,使用 show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
上面兩個項目要確認為Yes才是成功運作,
如果其中有一項為No,都表示有問題。
可以直接查看MySQL的log檔,較容易找出問題所在。
MySQL的log位於:/var/log/mysqld.log

2018年11月28日 星期三

MySQL 使用格狀分割index加速2D座標半徑搜尋


2D座標的半徑搜尋,常用於尋找附近區域內的地點。這類兩個維度範圍搜尋,對於關聯式資料庫而言,一直都是個瓶頸。index僅能提供一個維度的範圍搜尋,第二個維度就無效果了。為了解決搜尋速度的問題,目前最常見的方式就是將資料用網格分割,在半徑跨越的網格內搜尋的目標,加快速度。以下使用兩個大小不同的網格來測試搜尋的速度。

2018年11月27日 星期二

檢查process並執行程式 (windows排程)

在windows環境下,有時候我們會希望使用排程定時檢查某些程式是否在運作,如果沒有運作,則執行啟動。
以下以Notepad++為例,示範如何檢查是否運作,使用排程自動執行。

2018年8月9日 星期四

rpm 使用提示 (Redhat package管理)

列出(list):
 rpm -qa | grep <項目>
 rpm -qa | grep git

搜尋(search):
 rpm無法進行遠端的項目搜尋

安裝(install):
 rpm -ivh <項目>
 rpm -ivh git.rpm

升級(update):
 rpm -Uvh <項目>
 rpm -Uvh git.rpm

刪除(remove):
 rpm -e <項目>
 rpm -e git.rpm
 (此方式會同時移除僅git相依的其他package)

參考網址:
 http://linux.vbird.org/linux_basic/0520rpm_and_srpm.php

apt 使用提示 (Ubuntu package管理)

列出(list):
apt-cache show <項目>
apt-cache show git

搜尋(search):
apt-cache search <項目>
apt-cache search git

安裝(install):
apt-get install <項目>
apt-get install git

升級(update):
apt-get update <項目>
apt-get update git

全部的package update
apt-get upgrade

刪除(remove):
apt-get –purge remove  <項目>
apt-get –purge remove git
(此方式會同時移除僅git相依的其他package,還包含git的設定檔)

參考網址:
https://b9532026.wordpress.com/2010/03/30/apt-get-指令一覽-2/

yum 使用提示 (CentOs package管理)

列出(list):
yum list <項目>
yum list git

搜尋(search):
yum search <項目>
yum search git

安裝(install):
yum install <項目>
yum install git

升級(update):
yum update <項目>
yum update git

全部的package update
yum upgrade

刪除(remove):
yum remove <項目>
yum remove git
(此方式會同時移除僅git相依的其他package)

參考網址:
http://www.vixual.net/blog/archives/101

pacman 使用提示 (Arch Linux package管理)

列出(list):
pacman -Qs <項目>
pacman -Qs git

搜尋(search):
pacman -Ss <項目>
pacman -Ss git

安裝(install):
pacman -S <項目>
pacman -S git

升級(update):
pacman -Sy <項目>
pacman -Sy git

全部的package update
pacman -Syu

刪除(remove):
pacman -Rs <項目>
pacman -Rs git
(此方式會同時移除僅git相依的其他package)

參考網址:
https://wiki.archlinux.org/index.php/Pacman_(正體中文)

2018年6月23日 星期六

學校扼殺了創造力

回顧了2006年TED的一篇演講影片,

https://www.youtube.com/watch?v=iG9CE55wbtY

真真切切說出我的心聲。
一路經過這樣的體制教育,
最後落得變成國家的工具,
還真不甘心。

2018年6月21日 星期四

photoshop CS4 簡體轉繁體

photoshop安裝完畢後沒有可以設定或變動語系的地方,
因此想要變動語系,可以將整個語系的資料夾用更名取代的方式處理。

在 /Adobe Photoshop CS4 Extended/Locales 目錄下:
可以看到

zh_CN/
zh_TW/

兩個目錄,原先簡體版是對應到 zh_CN,
因此可以將zh_CN更名保留,用zh_TW取代:

rename zh_CN zh_CN_OLD
copy zh_TW zh_CN

重新執行即可。