現在需要在一台服務器(A)上的數據庫(Master)裡訪問另外一台服務器(B)的另外兩個數據庫(NZ 和 AU)。AU 和 NZ 是網站的部分實時數據,目前某一步操作的REPLICATION方案是從服務器B到A,AU / NZ 的表結構同Master 數據結構基本一致。
這樣一來,當把AU Replication 到 Master 後,在把 NZ Replication 到 Master , Master 裡的就只剩 NZ 的數據了。反過來就只有AU的了,具體的Replication 是怎麼一回事,我也不懂,也沒有細看。
如果能在Master 裡直接操作 AU 和 NZ 就好了。
SQLServer 有函數:
OPENROWSET 和 OPENDATASOURCE
這兩個函數不但能實現從另外的數據庫讀數據,而且還能從Excel、TXT, Oracle, ODBC 等讀數據。
--啟用Ad Hoc Distributed QuerIEs:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed QuerIEs',1
reconfigure
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=SQLServerName;User ID=sa;PassWord=xxx'
).Help.dbo.Help_Category
或
select * from openrowset( 'SQLOLEDB ', 'SQLServerName'; 'sa'; 'xxx', Help.dbo.Help_Category )
--關閉Ad Hoc Distributed QuerIEs:
exec sp_configure 'Ad Hoc Distributed QuerIEs',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
但是,這樣寫著有點復雜,而且不便於維護,假如數據庫密碼改變了,就需要把一個一個把密碼改正。
Oracle 裡有 DB Link, 而且語法非常簡潔。
查了一下幫助,SQLServer 裡有 "鏈接服務器" 這個東東。要創建 鏈接服務器需要用到SQLServer 的一個系統存儲過程:
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]
[ , 當廣大Wordpresser歡欣鼓舞地升級到2.9,享受著在線圖片編輯器、回收站等一系列新功能的時候,卻發現Wordpress的生理周期突然失調了——以前她能夠自動地定時為我們發布文章、清除緩存、備份數據庫等等等等,而現在這一切都需要我們手工完成。經過在Wordpress官方論壇一番搜尋,發現原來這是Wordpress 2.9的大BUG——定時模塊失效…… 注明:目前2.9.1版本已經修復此問題
又,最近在國內互聯網“掃黃打非”的狂風暴雨下,個人網站的站長們被弄得一個個誠惶誠恐,一覺醒來說不定域名就“被”停止解析,服務器就“被”關停!所以,及時備份網站的程序和數據對於當下的中國站長們極為重要,然而Wordpress 2.9偏偏又在這當口來一個定時模塊失效,這的確是雪上加霜!
不過,如今最優秀的主機面板cPanel已經越來越普及了,如果您有幸用上了采用cPanel面板的主機,那麼其中的Cron jobs模塊就是雪中送炭了。您不但可以使用Cron jobs結合Linux bash shell腳本更加細致地控制各種自動定時作業——備份數據庫、優化數據庫和備份網站程序,還可以永久性地省掉幾個Wordpress插件,提高Wordpress的運行速度。
定時自動備份MySQL數據庫
如右圖所示,首先請在您的cPanel面板中的Advanced部分找到Cron jobs。點擊進入,您就會看到Cron jobs的操作頁面,不過先別著急,我們要首先編寫備份網站數據庫的Linux bash shell腳本。
我們需要首先用MySQLdump命令導出整個數據庫至一個文本文件,然後用壓縮工具將數據文件壓縮打包,最後用mutt命令將數據庫壓縮包發送至您指定的電子郵件地址。
現在我們開始,請用遠程登錄軟件(如SecureCRT、Putty)或者FTP軟件(如FileZilla、FireFTP)連接到您的主機,並創建一個存儲備份腳本和臨時文件的文件夾,比如我在我的主機根目錄建立了一個backup目錄。根據cPanel主機的文件夾格式,該目錄的絕對路徑應為/home/cPanel登錄名/backup。
下面以/home/xirangus/backup目錄為例。請打開任意一個文本編輯軟件,錄入如下內容。[XXX]處請更換為您的真實數據(去掉[和])。
cd /home/xirangus/backup #切換到工作目錄
stamp=$(date+%y%m%d) #獲取當前日期
MySQLdump -u[數據庫用戶名] -p[數據庫密碼] [數據庫名] > db_backup_$stamp.sql #導出數據庫
bzip2 -z -9 -f db_backup_$stamp.sql #壓縮數據庫
mutt [電子郵件地址] -a db_backup_$stamp.sql.bz2 -s "Database Backup" #郵件發送
rm db_backup_$suffix.sql.bz2 #移除臨時文件
其中第4行采用了bzip2來壓縮數據,如果您的主機不支持bzip2,請更換為使用tar或zip等命令來壓縮數據,具體情況請咨詢您的主機商。
腳本錄入完畢後,請將其保存,比如我將其命名為dbbackup.sh。然後上傳到剛剛建立的/home/xirangus/backup目錄下,並更改該腳本文件的權限為755。
大功快要告成,現在請點擊cPanel中的Cron jobs圖標,選擇Standard進入標准模式。將/home/xirangus/backup/dbbackup.sh填入Command to run中,並選擇定時運行方式,如下圖。
這裡的時間是以服務器的時區為准,所以您需要自己換算一下。嘻來嚷往所在的Just Host的數據中心位於美國中部時區,比中國標准時間晚14個小時,所以按照上圖設置,每天中國標准時間晚上8點,嘻來嚷往的數據庫備份郵件就會自動被發送到我的郵箱裡。
定時自動優化MySQL數據庫
頻繁地對數據庫進行各種操作,會使數據庫產生一些錯誤和冗余數據而導致性能下降,因此及時修復和優化數據庫也是非常必要的。我們可以采用mysqlcheck命令對MySQL數據庫進行修復和優化。腳本文件如下。
MySQLcheck -u[數據庫用戶名] -p[數據庫密碼] –auto-repair –database [數據庫名] #檢查並自動修復數據庫
MySQLcheck -u[數據庫用戶名] -p[數據庫密碼] -o –database [數據庫名] #優化數據庫
如何讓Cron jobs自動運行腳本就不再贅述了。
定時自動備份網站程序
有了前面數據庫的列子,備份程序文件就簡單多了,稍稍修改一下腳本文件就行了。還是以Wordpress為例吧,一般我們修改得最多的就是主題文件,所以我們就讓Cron jobs定時備份Wordpress的themes文件夾吧。直接給出腳本文件。
cd /home/xirangus/backup #切換工作目錄
stamp=$(date+%y%m%d) #獲取當前日期
tar -cvf theme_$stamp.tar /home/xirangus/public_Html/wp-content/themes #打包主題目錄
bzip2 -z -9 -f theme_$stamp.tar #壓縮
mutt [電子郵件地址] -a theme_$stamp.tar.bz2 -s "Themes Backup" #郵件發送
rm theme_$stamp.tar.bz2 #移除臨時文件
雖然tar命令可以使用-j參數進行bzip2的打包+壓縮,但是不能指定壓縮級別,所以我還是采用了tar先打包,接著使用bzip2最高級別壓縮的方式。
就介紹這麼多吧,如果您熟悉Linux,那麼您還可以盡情發揮,讓Cron jobs完成更多的自動定時作業,使網站的運行更加高效和有保障。
[ @provider= ] 'provider_name' ]
[ , [ @datasrc= ] 'data_source' ]
[ , [ @location= ] 'location' ]
[ , [ @provstr= ] 'provider_string' ]
[ , [ @catalog= ] 'catalog' ]
exec sp_addlinkedserver @server= 'XLING' , @srvproduct = '', @provider = 'SQLNCLI' , @datasrc = 'SQLServerName2'
執行後,可以在 Sqlserver Management Studio 的對象資源管理器裡的 服務器對象 -》 鏈接服務器 裡看到看這個 XLING
然後就可以用:
SELECT * FROM XLING.PricemeHelp.dbo.Help_Category
這裡的XLING就是指向數據庫SQLServerName2的鏈接服務器,從上面的SELECT可以看出,寫的依然復雜。
SQLServer 也有,而且語法差不多:
CREATE SYNONYM dbo.Help_Category_NZ FOR XLING.PricemeHelp.dbo.Help_Category
執行後,就可以用:
SELECT * FROM Help_Category_NZ
了!