2015年12月24日 星期四

MySQL federated 引擎本地資料庫 連接遠端資料庫,MySQL也可以擁有 DBLink 的功能

以前在使用 MS SQL Server 的時候因為可能必須跟別個資料庫進行串接,有可能會利用到 DBLink 來操作 SQL命令 來遠端資料庫,在 MySQL 本身並不具有 DBLink,但幸好也有對應的方法可以使用,也就是 federated 引擎

 

在 MySQL 中針對不同的功能提供了各式儲存引擎,其中 federated 就是一個針對遠程資料庫操作的實現,透過 federated 所創建的資料表只會在 local 建立含有 schema 的空資料表,而 data 來源則是遠端

2015年12月21日 星期一

Unix timestamp 時間格式轉換 - 筆記

timestamp 一般被指為 Unix 時間戳,以 Unix 紀元開始算起 (西元1970年1月1日 00:00:00) 並且通常以秒為單位,在某些系統會採用這種時間格式,在各種語言也都支援這種時間戳格式轉換

 

在一個對岸網站就找到一個蠻詳細說明的 Unix timestamp Converter

 

裡面也包含了許多語言的 Unix timestamp 轉換的方式

PHP timezone = PRC , ROC

最近在操作一台主機在 php.ini 的 timezone 看到設定為 date.timezone = PRC

 

平常我們在設定可能都是使用 Asia/Shanghai , Asia/Taipei 這樣類型的方式

 

基於好奇去抓了 PHP source code 於 ext/date/lib/timezonemap.h 裡面找到 timezone 的代碼

{ "cst", 0, 28800, "Asia/Shanghai" },
{ "cst", 0, 28800, "Asia/Taipei" },
{ "cst", 0, 28800, "Asia/Urumqi" },
{ "cst", 0, 28800, "PRC" },
{ "cst", 0, 28800, "ROC" },

 

沒想到 PHP 內建還替中國大陸特別寫了一個 timezone 縮寫代碼

Orignal From: PHP timezone = PRC , ROC

2015年12月9日 星期三

MySQL 5.6 複寫架構 重複的 Server_UUID

前幾天在實作 MySQL 的複寫架構的時候在 MySQL Slave 啟動的時候出現錯誤訊息

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs;  these UUIDs must be different for replication to work

 

針對上方的訊息得知 UUID 重複於網路內,接下來就一一檢查

MS SQL Server 設定 timeout 逾時時間

最近在一個 MS SQL Server 的案例中遇到了執行 SQL 因為處理大量資料指令,造成執行的時間超過 SQL Server 預設的 timeout 時間

 

在 MSSQL 預設的 timeout 時間是 600秒,如果在必要的狀況下必須修改 timeout 時間可以執行以下

 
USE master 
GO
EXEC sp_configure 'remote query timeout', 6000
GO
RECONFIGURE
GO

6000 即為 timeout 秒數,用 RECONFIGURE 來生效。

 

在一般的狀況下最好的處置是去優化 SQL指令,使其不要執行過長的SQL指令,對於整個系統的效能才會提升,在非必要的狀況下才會採用修改 SQL timeout 時間。

 

Orignal From: MS SQL Server 設定 timeout 逾時時間

2015年12月5日 星期六

MySQL 5.6 單向複寫資料庫實作 (Replication)

在實作 MySQL 的複寫(Replication) 的時候必須注意 MySQL 5.5 之後所使用的設定方式並不相同,必須分清楚這一塊

 

在 MySQL Replication 的實作方式有很多種,這篇是實作 CentOS 6.7 - MySQL 5.6 單向複寫

 

Master:

接收執行指令(SELECT、UPDATE、INSERT ... )


Slave:

僅查詢指令(SELECT)


由 Slave 主動向 Master 取得同步更新資料(由此規則所以 Slave 可以擁有多台,並且非同步複寫,即使中斷連線再恢復也可以回復資料庫同步的狀況。


 

 

資料庫複寫在以往通常使用廣泛用於:資料庫備份、分析

 

本篇範例至少需要兩台資料庫伺服器:

Master 伺服器:192.168.10.10

Slave 伺服器:192.168.10.11