當前位置:首頁 » 編程語言 » 線上sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

線上sql

發布時間: 2022-07-14 04:08:27

㈠ 如何更修改線上資料庫

待那個隊列對應的工作線程完成了上一個操作的資料庫的修改之後,才會去執行下一個操作,也就是緩存更新的操作,此時會從資料庫中讀取最新的值,然後寫入緩存中。

----僅供參考

㈡ 怎樣解決線上Mysql主從不一致問題探討

由於各種原mysql主架構經現數據致情況現致歸結幾類 1:備庫寫數據 2:執行non-deterministic query 3:滾摻雜事務表非事務表事務 4:binlog或者relay log數據損壞 數據同步給應用帶危害致命現主數據致情況見應先庫線找半夜三更間應用停掉重新執行同步資料庫體積十龐工作量想知讓崩潰本文介紹使用percona-toolkit工具mysql主資料庫同步狀態進行檢查重新同步 :安裝percona-toolkit 二:修改mysql binlog格式binlog_format參數row格式 mysql binlog志三種格式別Statement, Mixed,及ROW 1.Statement: 每條修改數據sql都記錄binlog 優點:需要記錄每行變化減少binlog志量節約IO提高性能(相比row能節約少性能與志量取決於應用SQL情況同條記錄修改或者插入row格式所產志量於Statement產志量考慮帶條件update操作及整表刪除alter表等操作ROW格式產量志考慮否使用ROW格式志應該跟據應用實際情況其所產志量增加少及帶IO性能問題) 缺點:由於記錄執行語句些語句能slave確運行必須記錄每條語句執行候些相關信息保證所語句能slavemaster端執行候相同 結另外mysql 復制,像些特定函數功能slave與master要保持致相關問題(sleep()函數 last_insert_id()及user-defined functions(udf)現問題). 2.Row 記錄sql語句文相關信息僅保存哪條記錄修改 優點: binlog記錄執行sql語句文相關信息僅需要記錄條記錄修改所rowlevel志內容非清楚記錄每行數據修改細節且現某些特定情況存儲程或function及trigger調用觸發確復制問題 缺點:所執行語句記錄志候都每行記錄修改記錄能產量志內容,比條update語句修改條記錄則binlog每條修改都記錄造binlog志量特別執行alter table類語句候由於表結構修改每條記錄都發改變該表每條記錄都記錄志 3.Mixed 兩種level混合使用般語句修改使用statment格式保存binlog些函數statement完主復制操作則採用row格式保存binlog,MySQL根據執行每條具體sql語句區待記錄志形式StatementRow間選擇種.新版本MySQL隊row level模式做優化並所修改都row level記錄像遇表結構變更候statement模式記錄至於update或者delete等修改數據語句記錄所行變

㈢ 一個完整安全的sql上線操作應該是怎樣的

mysql>status
--------------mysqlVer14.14Distrib5.6.23,forlinux-glibc2.5(x86_64):803136
Currentdatabase:ashe
Currentuser:[email protected]
SSL:Notinuse
Currentpager:stdout
Usingoutfile:''
Usingdelimiter:;
Serverversion:5.6.23-logMySQLCommunityServer(GPL)
Protocolversion:10
Connection:127.0.0.1viaTCP/IP
Servercharacterset:utf8
Dbcharacterset:utf8
Clientcharacterset:utf8
Conn.characterset:utf8
TCPport:13307
Uptime::9Questions:61630708Slowqueries:66Opens:43871Flushtables:24Opentables:1811Queriespersecondavg:30.301
--------------

㈣ 如何有效的跟蹤線上 MySQL 實例表和許可權的變

有很多種方式可以實現, 比如通過migrate等工具強制所有的操作都以統一的方式執行, 這需要開發人員做更多的配合, 所以這類工具在非規模話的業務場景中較難實現; 另外管理員或 DBA 也可以通過知識庫比如redmine等類似的方式記錄變更, 不過不可控因素很多, 特別依賴上線的流程, 也容易出現紕漏. 這就引申出本文要介紹的如何跟蹤線上庫表的變更, 下文以 MySQL 資料庫介紹說明.

跟蹤的方式

在 Postgresql 中, 由於觸發器對各種操作都有很好的支持, 我們完全可以通過觸發器的形式來記錄所有 DDL 語句的變更. 與此相比, MySQL 則顯得較為弱小, 我們只能以其它方式實現類似的目標. 下面以中間件, log, binlog, 注冊 slave, mysqldiff 五種方式進行介紹.

1. 中間件

現有的中間件atlas,kingshard,mycat等, 都以 proxy 的角色部署於程序和 MySQL 之間, 所有發往 MySQL 的 sql 都通過 proxy 進行轉發. 如下圖所示, 我們可以在 proxy 層面增加一些 DDL, DML 相關語句的記錄, 達到跟蹤變更的目的.

+------+ +-------+ +-------+
| app | ---> | proxy | ---> | MySQL |
+------+ +-------+ +-------+

這種方式自由度較高, 大家都可以隨意定製. 不過需要一些開發能力, 另外 sql 的過濾也會影響到查詢的性能, 通過中間件來直接修改表結構等操作也是有風險較大的方式.

2. log

這種方式很簡單, 打開 MySQL 的 general log 或 audit log 即可記錄所有的 sql 語句. 這種方式比較適合開發環境, 線上環境如果開啟會產生很多日誌, 弊遠遠大於利, 也不利於維護;

3. binlog

管理員或 DBA 同樣可以解析 MySQL 的 binlog 來過濾表或許可權的變更. 這種方式本質上等同第二種方式, 線上資料庫需要開啟 binlog 選項, 解析 binlog 也是很耗資源的操作. 線上如果實例較多, 這種方式特別不可取.

4. 注冊 slave

注冊 slave 的意思即通過 MySQL 的主從協議偽造一個假的 slave, 這樣 master 會把所有的更新都發送過來, 再進行一些過濾的操作. 這種方式在同步數據或增量消費的場景特別適合, 這里只用於記錄表或許可權的變更確實是大材小用, 線上實例較多的話也不可取. 典型的工具有myreplication,tungsten-replicator以及阿里的canal等.

5. mysqldiff

實際上許可權和表變更本身是低頻率的操作事件, 上述的四種方式雖然都可以達到目標, 但本質上都是很耗費資源的操作. 考慮到這點, 我們可以通過對比的方式來實現許可權及表結構變更的跟蹤, 詳見sys-mysql-diff工具. 考慮到通用性, sys-mysql-diff 工具每次都需要獲取指定庫的所有表的定義語句, 通過對比來生成對應的 DDL 語句.mysqldiff則是對 sys-mysql-diff 工具的封裝, 可以批量跟蹤多個實例.

如何使用 mysqldiff

mysqldiff工具是在 sys-mysql-diff 工具的基礎上進行了一層封裝, 所以本質上是通過 sys-mysql-diff 工具跟蹤線上庫的變化. 在實際的運用中, 需要注意以下幾點:

1. 配置文件

mysqldiff 所需要的配置參考以下:

insert ... ok一行表示將結果插入到了[backend]中.

㈤ 、如何檢查其他同事寫的不合理SQL ,防止發生線上故障

重啟下SQL服務,把下面腳本運行即可。運行後,壞掉的資料庫可能會丟失。
MySQL的慢查詢日誌是MySQL提供的一種日誌記錄,它用來記錄在MySQL中響應時間超過閥值的語句,具體指運行時間超過long_query_time值的SQL,則會被記錄到慢查詢日誌中。long_query_time的默認值為10,意思是運行10s以上的語句。

㈥ 有沒有可以在線練習sql語法的網站

線我倒知道我知道用新浪sae隨便創建應用(php免費)免費用面雲資料庫線練習sql語句順便說句選應用倉庫千萬要選git新浪git倉庫巨坑啊初我選git倉庫現吐血

㈦ SQL難學嗎自學的話大概要多長時間

SQL如果有老師教的話一個星期就能上手,但要學好一年二年不算長,關鍵看你做什麼應用,做資料庫維護,那就要學精,要很長時間的學習與實踐;如果只是存數據來開發應用程序,那把:庫、表、行、列弄清楚,就可以用。自學花的時間會長點,不過不會很難。照著學沒有問題。

SQL學習多久,覺得看學員基礎情況。1、如果原來什麼語言也沒有學過,也沒有基礎,那最基礎的要先選擇一種語言來學習,是VB,C..,pascal,看個人的喜好,一般情況下,選擇C語言來學習2、如果是有過語言的學習,看應該一個星期差不多,因為語言的理念互通的,只是所用的命令有所不一樣。3、以前用過其它資料庫管理,那應該兩天就可以,主要熟悉界面和管理,其它的沒什麼變化。

想了解更多有關編程語言的詳情,推薦選擇【達內教育】。該機構具有豐厚的師資力量,優秀的教學體系,教學質量突出,實戰講師,經驗豐富,理論知識+學習思維+實戰操作,打造完整學習閉環。達內教育獨創TTS8.0教學系統,並設有企業雙選會。達內的OMO教學模式,全新升級,線上線下交互學習,直播學,隨時學,隨時問,反復學,學習安排更便捷。→感興趣的話點擊此處,免費學習一下

㈧ 如何用SQL2005的存儲過程導出EXECL表,急,線上等

導出查詢中的數據到Excel,包含欄位名,文件為真正的Excel文件
,如果文件不存在,將自動創建文件
,如果表不存在,將自動創建表
基於通用性考慮,僅支持導出標准數據類型
--*/
/**//*--調用示例
p_exporttb @sqlstr='select * from 地區資料' ,@path='c:',@fname='aa.xls',@sheetname='地區資料'
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and
OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_exporttb]
GO
create proc p_exporttb
@sqlstr sysname, --查詢語句,如果查詢語句中使用了order by ,請加上top 100 percent,注意,如果導 出表/視圖,用上面的存儲過程
@path nvarchar(1000), --文件存放目錄
@fname nvarchar(250), --文件名
@sheetname varchar(250)='' --要創建的工作表名,默認為文件名
as
declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int
declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)
--參數檢測
if isnull(@fname,'')='' set @fname='temp.xls'
if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#')
--檢查文件是否已經存在
if right(@path,1)<>'' set @path=@path+''
create table #tb(a bit,b bit,c bit)
set @sql=@path+@fname
insert into #tb exec master..xp_fileexist @sql
--資料庫創建語句
set @sql=@path+@fname
if exists(select 1 from #tb where a=1)
set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'
+';CREATE_DB="'+@sql+'";DBQ='+@sql
else
set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 5.0;HDR=YES' +';DATABASE='+@sql+'"'
--連接資料庫
exec @err=sp_oacreate 'adodb.connection',@obj out
if @err<>0 goto lberr
exec @err=sp_oamethod @obj,'open',null,@constr
if @err<>0 goto lberr
--創建表的SQL
declare @tbname sysname
set @tbname='##tmp_'+convert(varchar(38),newid())
set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'
exec(@sql)
select @sql='',@fdlist=''
select @fdlist=@fdlist+','+a.name
,@sql=@sql+',['+a.name+'] '
+case when b.name in('char','nchar','varchar','nvarchar') then
'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'
when b.name in('tynyint','int','bigint','tinyint') then 'int'
when b.name in('smalldatetime','datetime') then 'datetime'
when b.name in('money','smallmoney') then 'money'
else b.name end
FROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertype
where b.name not in
('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')
and a.id=(select id from tempdb..sysobjects where name=@tbname)
select @sql='create table ['+@sheetname
+']('+substring(@sql,2,8000)+')'
,@fdlist=substring(@fdlist,2,8000)
exec @err=sp_oamethod @obj,'execute',@out out,@sql
if @err<>0 goto lberr
exec @err=sp_oadestroy @obj

--導入數據
set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES
;DATABASE='+@path+@fname+''',['+@sheetname+'$])'
exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from['+@tbname+']')
set @sql='drop table ['+@tbname+']'
exec(@sql)
return
lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
lbexit:
select cast(@err as varbinary(4)) as 錯誤號 ,@src as 錯誤源,@desc as 錯誤描述
select @sql,@constr,@fdlist
go

㈨ 關於SQL Server2000的問題..線上等

試試如下資料庫的恢復方法是否可行:

當資料庫的主數據MDF文件完好無損時,在丟失了LDF文件的情況下,如何利用MDF文件恢復資料庫?我們把SQL Server的日誌文件分為兩類:一類是無活動事務的日誌,另一類是含活動事務的日誌,根據不同的日誌,採取不同的方法來恢復資料庫。

1. 無活動事務的日誌恢復

無活動事務的日誌丟失時,我們很容易利用MDF文件直接恢復資料庫,具體方法如下:

①.分離被質疑的資料庫,可用企業管理器中的"分離資料庫工具",或者用存儲過程sp_detach_db分離資料庫;

②利用MDF文件附加資料庫生成新的日誌文件,可用企業管理器中的"附加資料庫"的工具,或者用存儲過程sp_attach_single_file_db附加資料庫。

如果資料庫的日誌文件中含有活動事務,利用此方法就不能恢復資料庫。

2. 含活動事務的日誌恢復

含有活動事務的日誌丟失時,利用上述方法就會出現"資料庫和日誌文件不符合,不能附加資料庫"。對於這種情況下,我們採用如下方法:

①新建同名資料庫AAA,並設它為緊急模式

·停止SQL Server伺服器;

·把資料庫主數據MDF文件移走;

·啟SQL Server伺服器,新建一個同名的資料庫AAA;

·停止SQL Server伺服器,把移走的MDF文件再覆蓋回來;

·啟動SQL Server伺服器,把AAA設為緊急模式,不過默認情況下,系統表是不能隨便修改的,必須首先設置一下使其能被修改,運行以下語句即可:

Use Master
Go
sp_configure 』allow updates』,1
reconfigure with override
Go

接著運行以下語句,把AAA資料庫設為緊急模式,即把Sysdatabases表中AAA資料庫的status屬性設為』37268』,就表示把AAA資料庫處於緊急模式。

update sysdatabases set status=32768 where hame=』AAA』

如果沒有報告什麼錯誤,就可以進行以下操作。

②設置資料庫AAA為單用戶模式,並檢查資料庫

·重啟SQL Server伺服器;

·把資料庫AAA設為單用戶模式

Sp_dboption 』AAA』, 』single user』, 』true』

·運行以下語句,檢查資料庫AAA

DBCC CHECKDB(』AAA』)

如果沒有什麼大的問題就可以把資料庫的狀態改回去。

③還原資料庫的狀態

運行以下語句,就可以把資料庫的狀態還原:

update sysdatabases set status=28 where name=』AAA』
sp_configure 』allow updates』,0
reconfigure with override
Go

如果沒有什麼大的問題,刷新一下資料庫,資料庫AAA又會出現在你面前,但目前恢復工作還沒有做完,此時的資料庫仍不能工作,還要進行下面的處理,才能真正恢復。

④利用DTS的導入導出向導,把資料庫AAA導入到一個新建資料庫BBB中

·新建一個資料庫BBB;

·右擊BBB,選擇IMPORT功能,打開導入向導;

·目標源選擇"在SQL Server資料庫之間復制對象和資料庫",這樣可以把表結構,數據視圖和存儲過程導入到BBB中

·再用此功能把BBB庫替換成原來的AAA庫即可。

到此為止,資料庫AAA就完全恢復。

㈩ sql 怎樣外網連接遠程資料庫

這好像不是你資料庫設置的問題,而是區域網的問題,你試試看,在控制面板>管理工具>本地安全策略,中啟動你和對方的guest帳號,網路訪問方式改為經典-本地訪問 ,在拒絕從網路訪問這台計計算機中刪除所有的,拒絕做為伺服器登陸中清空所有的,然後關閉windows防火牆,

區域網內winXP(professional)的訪問是個經常困擾大家的不大不小的問題,上次說我不夠詳細,你現在可以按以下的方法試一下,如果不成功,也可照此方法來解決區域網中經常出現的莫名奇妙的錯誤!!!我也是做DBMS的,出現的很多問題,貌似資料庫故障,其實不然!!
一、首先啟用guest來賓帳戶;
二、控制面板→管理工具→本地安全策略→本地策略→用戶權利指派里,「從網路訪問此計算機」中加入guest帳戶,而「拒絕從網路訪問這台計算機」中刪除guest帳戶;
三、我的電腦→工具→文件夾選項→查看→去掉「使用簡單文件共享(推薦)」前的勾;
四、設置共享文件夾;
五、控制面板→管理工具→本地安全策略→本地策略→安全選項里,把「網路訪問:本地帳戶的共享和安全模式」設為「僅來賓-本地用戶以來賓的身份驗證」(可選,此項設置可去除訪問時要求輸入密碼的對話框,也可視情況設為「經典-本地用戶以自己的身份驗證」);
六、右擊「我的電腦」→「屬性」→「計算機名」,該選項卡中有沒有出現你的區域網工作組名稱,如「work」等。然後單擊「網路 ID」按鈕,開始「網路標識向導」:單擊「下一步」,選擇「本機是商業網路的一部分,用它連接到其他工作著的計算機」;單擊「下一步」,選擇「公司使用沒有域的網路」;單擊「下一步」按鈕,然後輸入你的區域網的工作組名,如「work」,再次單擊「下一步」按鈕,最後單擊「完成」按鈕完成設置。

一般經過以上步驟,基本可以解決。如果不行,再往下看:
七、檢查本地連接是否被禁用,右擊「本地連接」→「啟用」;
八、關閉網路防火牆;
九、檢查是否啟用了域,是否加入了該域並檢查域設置;
十、檢查是否關閉了server服務;
十一、檢查本地連接IP、子網掩碼、網關及DNS設置是否有誤;
十二、「本地連接」→屬性→常規,檢查是否安裝了「Microsoft網路文件和列印機共享」、「Microsoft網路客戶端」以及TCP/IP協議;
十三、某些區域網游戲和軟體須安裝NetBEUI協議。而且網上有文章說,在小型區域網中,微軟在WinXP中只支持的TCP/IP協議和NWLink IPX/SPX/NetBIOS兼容協議表現不盡如人意,在小型區域網(擁有200台左右電腦的網路)中NetBEUI是佔用內存最少、速度最快的一種協議。
安裝方法:

①放入Windows XP安裝光碟,到「valueaddMsft et etbeui」目錄下將Netnbf.inf復制C:\Windows\INF中;

②將Nbf.sys復制到C:\Windows\System32\Drivers中;

③開始→控制面板→網上鄰居」→「網路連接」→「本地連接」(就是你目前使用中的區域網連接)上按右鍵→「屬性」→「常規」→「安裝」→「通訊協議」→→「添加」,此時就可以看到「NetBEUI Protocol」這一項(此項原來是沒有的),選取NetBEUI之後,按確定就OK了。

十四、作為網路瀏覽伺服器的電腦由於病毒、配置低運行慢以及死機等原因導致網路上的計算機列表得不到更新,使得某些機器有時候在網上鄰居中找不到。

解決辦法:最簡單的辦法是重啟各種網路設備和電腦,或者關閉個別有上述問題的電腦上的網路瀏覽伺服器功能,方法如下:
win2000/XP下禁用Computer Browser服務

十五、給系統打上補丁。WinXP訪問網上鄰居的速度較慢,這是WinXP的一個Bug,當我們打開網上鄰居時,操作系統首先會從計劃任務中進行查找,因此就大大影響了訪問的速度,除非您已經安裝了SP1補丁才不會存在這個問題。

可以手工解決這一問題。從注冊表中找到「\HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace」,這里有一個名為「{D6277990-4C6A-11CF-8D87-00AA0060F5BF}」的子鍵,該子鍵指向「計劃任務(Scheled Tasks)」,將它直接刪除即可。

十六、先卸載網卡驅動,重啟再重裝;

十七、硬體問題,檢查網卡、網線、集線器、路由器等,在檢查之前,最好先重啟一下網路設備(集線器、交換機、路由器)看能否解決;

十八、病毒(木馬)原因。升級病毒庫安全模式下全盤殺毒。
參考資料:經驗