mysql去中心化資料庫
㈠ MYSQL 資料庫用什麼命令切換資料庫,謝謝大家教我。
要用哪個庫 就寫
use 庫名
就可以切換過去了
㈡ 如何移值Mysql中的innoDB的資料庫
對於Mysql有兩種模式,MYISAM與INNODB
如果是MYISAM的話,在data目錄下里會.frm .myd .myi 三種文件,那麼直接把DATA移過去,配置好許可權就可以還原了。
如果是INNODB的話,那是相當的煩啊。在data目錄下只有.frm(這只是一個數據格式),這個移過去後,是無法還原原始數據的。
真正的數據是正放在data目錄下的iddata1里。因此,如果有這個文件,那麼還是有希望還原的。
但我試了網上所有的文章,都還是提示「資料庫里沒有表」。
最後我找到了答案。那就是my.ini的配置文件。裡面有一項:
innodb_data_home_dir="C:\Program Files\MySQL\MySQL Server 5.1\data"
只要把上面的地址設為你正確的地址就可以了。
記得重啟一下mysql (在CMD里輸入net stop mysql,然後net start mysql)就可以了還原了。。。
我花了一天時間發現的問題,希望能對同樣遇到問題的朋友有所幫助。
總結,對於Mysql還是默認採用MYISAM的比較好,容易轉移。資料庫與資料庫是分開的,不會混在一起。所以可以在My.ini里設一下默認項:
default-storage-engine=MYISAM
㈢ mysql資料庫的存放位置在哪裡
資料庫文件默認存放位置:C:Program FilesMySQLMySQL Server 5.0data。
資料庫的配置文件在C:Program FilesMySQLMySQL Server 5.0my.ini。
在data文件夾里找到不test的資料庫文件夾和自己創建的文件夾是因為test資料庫是空的資料庫,用於測試使用,自己的文件夾需要去mysql資料庫尋找。
mysql資料庫文件默認存放位置:C:Program FilesMySQLMySQL Server 5.0mysql。
MySQL是一種開放源代碼的關系型資料庫管理系統(RDBMS),MySQL資料庫系統使用最常用的資料庫管理語言--結構化查詢語言(SQL)進行資料庫管理。
下面詳細介紹幾個找不同資料庫用到的命令:
1、選擇你所創建的資料庫
mysql> USE MYSQLDATA; (按回車鍵出現Database changed 時說明操作成功!)
2、:使用SHOW語句找出在伺服器上當前存在什麼資料庫
mysql> SHOW DATABASES;
3、查看現在的資料庫中存在什麼表
mysql> SHOW TABLES;
4、顯示表的結構。
mysql> DESCRIBE MYTABLE;

(3)mysql去中心化資料庫擴展閱讀:
mysql資料庫伺服器有三個資料庫:information_schema資料庫,mysql資料庫,test資料庫。
1、nformation_schema資料庫:這個資料庫保存了mysql伺服器所有資料庫的信息。比如資料庫的名、資料庫的表、訪問許可權、資料庫表的數據類型,資料庫索引的信息等等。就是關於這個資料庫的點點滴滴信息都存儲在這個資料庫中。
nformation_schema資料庫是MySQL自帶的,它提供了訪問資料庫元數據的方式。什麼是元數據呢?元數據是關於數據的數據,如資料庫名或表名,列的數據類型,或訪問許可權等。有些時候用於表述該信息的其他術語包括「數據詞典」和「系統目錄」。
在MySQL中,把 information_schema 看作是一個資料庫,確切說是信息資料庫。其中保存著關於MySQL伺服器所維護的所有其他資料庫的信息。
如資料庫名,資料庫的表,表欄的數據類型與訪問權 限等。在INFORMATION_SCHEMA中,有數個只讀表。它們實際上是視圖,而不是基本表,因此,將無法看到與之相關的任何文件。
2、mysql資料庫:這個資料庫中是mysql資料庫中的所有的信息表。
這個是mysql的核心資料庫,類似於sql server中的master表,主要負責存儲資料庫的用戶、許可權設置、關鍵字等mysql自己需要使用的控制和管理信息。不可以刪除,如果對mysql不是很了解,也不要輕易修改這個資料庫裡面的表信息。
3、test資料庫:空的資料庫,用於測試用。
這個是安裝時候創建的一個測試資料庫,和它的名字一樣,是一個完全的空資料庫,沒有任何錶,可以刪除。
㈣ WEB伺服器上mysql資料庫中的數據如何移到新資料庫中去
理論上是可以實現的。首先要確認兩個mysql資料庫的版本是否一致,如果不一致,最好轉換數據版本。使用專業的資料庫備份恢復軟體,或者虛擬主機自帶的數據備份恢復也可以。如果自己操作不熟練,建議聯系服務商,讓他幫你備份和恢復。以免數據丟失。
㈤ 如何導入MySQL資料庫
1、打開電腦,在電腦桌面的開始界面中找到mysql,如圖所示。

㈥ Mysql變成分布式資料庫
1、amoeba相當於一個SQL請求的路由器,目的是為負載均衡、讀寫分離、高可用性提供機制,而不是完全實現它們。用戶需要結合使用MySQL的Replication等機制來實現副本同步等功能。amoeba對底層資料庫連接管理和路由實現也採用了可插撥的機制,第三方可以開發更高級的策略類來替代作者的實現。這個程序總體上比較符合KISS的思想。
2、由上一條,建議使用MySQL的Replication機制建立Master-Slave來做副本。我一開始理解有誤,使用了amoeba的virtual DB(負載均衡pool)做writePool,結果使得本應插入同一個表中的數據被拆分地寫入了不同的物理資料庫中。這樣自然與副本的語義不符了。
3、amoeba已經實現了數據的垂直切分與水平切分。水平切分方面,粒度是行。使用SQLJEP語句可以設計出復雜的切分規則,個人認為是比較強大的。垂直切分的粒度是表,可以把針對不同表的請求發送到不同的節點上執行,但不能以列作為分片粒度。從作者的說法看,amoeba不做SQL解析和重寫。在目前的機制下似乎是難以實現同一個表不同的列在不同節點上的分布。不過對開發人員來說,設計良好的表結構應該可以實現簡單的基於關系屬性的負載均衡的。
㈦ mysql怎麼做一個資料庫復制到另一個mysql伺服器 不藉助任何工具,純sql語句
直接在執行器里運行sql語句的好像是沒有的,可以用備份和還原命令語句,也能遠程備份和還原的,在程序命令庫里就能執行,windows和linux都可以。
備份:mysqlmp -h 127.0.0.1 -u root -p test1 > sql_bak.sql
還原:mysql -h 127.0.0.2 -u root -p -P 3306 test1< sql_bak.sql
㈧ 請問如何把MySQL資料庫綁定到網站空間去謝謝
首先,登錄mysql(127.0.0.1/phpmyadmin)輸入用戶名、密碼,用戶名通常是root,密碼自己看著辦,然後在本地導出資料庫,存為一個擴展名為xxx.sql的文檔。如果你在資料庫里用到了GB2312記得用Dreamweaver打開,替換成GBK,因為我的PHPMYADMIN裡面沒有GB2312編碼。
然後通過瀏覽器打開網址的後台管理界面,用新網給你的用戶名和密碼登陸。在最下方有一個MYSQL資料庫管理入口。
進入新網後台以後,進去後再次要求輸入密碼,再次驗證,你照開始一樣輸入就可以。我的MYSQL資料庫沒有直接導入功能,所以把剛剛在Dreamweaver編輯的代碼全部復制到SQL執行窗口,點擊執行即可!接下來就是修改網站文件里的鏈接代碼,將對應的伺服器地址、用戶名和密碼換成對應的就可以了
㈨ 如何查看mysql資料庫隔離級別
術式之後皆為邏輯,一切皆為需求和實現。希望此文能從需求、現狀和解決方式的角度幫大家理解隔離級別。
隔離級別的產生
在串型執行的條件下,數據修改的順序是固定的、可預期的結果,但是並發執行的情況下,數據的修改是不可預期的,也不固定,為了實現數據修改在並發執行的情況下得到一個固定、可預期的結果,由此產生了隔離級別。
所以隔離級別的作用是用來平衡資料庫並發訪問與數據一致性的方法。
事務的4種隔離級別
READ UNCOMMITTED 未提交讀,可以讀取未提交的數據。READ COMMITTED 已提交讀,對於鎖定讀(select with for update 或者 for share)、update 和 delete 語句, InnoDB 僅鎖定索引記錄,而不鎖定它們之間的間隙,因此允許在鎖定的記錄旁邊自由插入新記錄。 Gap locking 僅用於外鍵約束檢查和重復鍵檢查。REPEATABLE READ 可重復讀,事務中的一致性讀取讀取的是事務第一次讀取所建立的快照。SERIALIZABLE 序列化
在了解了 4 種隔離級別的需求後,在採用鎖控制隔離級別的基礎上,我們需要了解加鎖的對象(數據本身&間隙),以及了解整個數據范圍的全集組成。
數據范圍全集組成
SQL 語句根據條件判斷不需要掃描的數據范圍(不加鎖);
SQL 語句根據條件掃描到的可能需要加鎖的數據范圍;
以單個數據范圍為例,數據范圍全集包含:(數據范圍不一定是連續的值,也可能是間隔的值組成)
1. 數據已經填充了整個數據范圍:(被完全填充的數據范圍,不存在數據間隙)
整形,對值具有唯一約束條件的數據范圍 1~5 ,
已有數據1、2、3、4、5,此時數據范圍已被完全填充;
整形,對值具有唯一約束條件的數據范圍 1 和 5 ,
已有數據1、5,此時數據范圍已被完全填充;
整形的數據范圍 1~5 ,
已有數據 1、2、3、4、5,但是因為沒有唯一約束,
所以數據范圍可以繼續被 1~5 的數據重復填充;
整形,具有唯一約束條件的數據范圍 1~5 ,
已有數據 2,5,此時數據范圍未被完全填充,還可以填充 1、3、4 ;
整形的數據范圍 1~5 ,數據范圍內當前沒有任何數據。
更新丟失:當多個事務選擇了同一行,然後基於最初選定的值更新該行時,
由於每個事物不知道其他事務的存在,最後的更新就會覆蓋其他事務所做的更新;
臟讀: 一個事務正在對一條記錄做修改,這個事務完成並提交前,這條記錄就處於不一致狀態。
這時,另外一個事務也來讀取同一條記錄,如果不加控制,
第二個事務讀取了這些「臟」數據,並據此做了進一步的處理,就會產生提交的數據依賴關系。
這種現象就叫「臟讀」。
不可重復讀:一個事務在讀取某些數據後的某個時間,再次讀取以前讀過的數據,
卻發現其讀出的數據已經發生了改變,或者某些記錄已經被刪除了。
這種現象就叫「不可重復讀」。
幻讀:一個事務按相同的查詢條件重新讀取以前檢索過的數據,
卻發現其他事務插入了滿足其查詢條件的新數據,這種現象稱為「幻讀」。
可以簡單的認為滿足條件的數據量變化了。
Record Locks
索引記錄鎖,索引記錄鎖始終鎖定索引記錄,即使表中未定義索引,
這種情況下,InnoDB 創建一個隱藏的聚簇索引,並使用該索引進行記錄鎖定。
Gap Locks
間隙鎖是索引記錄之間的間隙上的鎖,或者對第一條記錄之前或者最後一條記錄之後的鎖。
間隙鎖是性能和並發之間權衡的一部分。
對於無間隙的數據范圍不需要間隙鎖,因為沒有間隙。
Next-Key Locks
索引記錄上的記錄鎖和索引記錄之前的 gap lock 的組合。
假設索引包含 10、11、13 和 20。
可能的next-key locks包括以下間隔,其中圓括弧表示不包含間隔端點,方括弧表示包含端點:
- (負無窮大, 10] (10, 11] (11, 13] (13, 20] (20, 正無窮大) 對於最後一個間隔,next-key將會鎖定索引中最大值的上方,
2. 數據填充了部分數據范圍:(未被完全填充的數據范圍,是存在數據間隙)
3. 數據范圍內沒有任何數據(存在間隙)
如下:
在了解了數據全集的組成後,我們再來看看事務並發時,會帶來的問題。
無控制的並發所帶來的問題
並發事務如果不加以控制的話會帶來一些問題,主要包括以下幾種情況。
1. 范圍內已有數據更改導致的:
2. 范圍內數據量發生了變化導致:
因為無控制的並發會帶來一系列的問題,這些問題會導致無法滿足我們所需要的結果。因此我們需要控制並發,以實現我們所期望的結果(隔離級別)。
MySQL 隔離級別的實現
InnoDB 通過加鎖的策略來支持這些隔離級別。
行鎖包含:
左右滑動進行查看
"上確界"偽記錄的值高於索引中任何實際值。
上確界不是一個真正的索引記錄,因此,實際上,這個 next-key 只鎖定最大索引值之後的間隙。
基於此,當獲取的數據范圍中,數據已填充了所有的數據范圍,那麼此時是不存在間隙的,也就不需要 gap lock。
對於數據范圍內存在間隙的,需要根據隔離級別確認是否對間隙加鎖。
默認的 REPEATABLE READ 隔離級別,為了保證可重復讀,除了對數據本身加鎖以外,還需要對數據間隙加鎖。
READ COMMITTED 已提交讀,不匹配行的記錄鎖在 MySQL 評估了 where 條件後釋放。
對於 update 語句,InnoDB 執行 "semi-consistent" 讀取,這樣它會將最新提交的版本返回到 MySQL,
以便 MySQL 可以確定該行是否與 update 的 where 條件相匹配。
總結&延展:
唯一索引存在唯一約束,所以變更後的數據若違反了唯一約束的原則,則會失敗。
當 where 條件使用二級索引篩選數據時,會對二級索引命中的條目和對應的聚簇索引都加鎖;所以其他事務變更命中加鎖的聚簇索引時,都會等待鎖。
行鎖的增加是一行一行增加的,所以可能導致並發情況下死鎖的發生。
例如,
在 session A 對符合條件的某聚簇索引加鎖時,可能 session B 已持有該聚簇索引的 Record Locks,而 session B 正在等待 session A 已持有的某聚簇索引的 Record Locks。
session A 和 session B 是通過兩個不相乾的二級索引定位到的聚簇索引。
session A 通過索引 idA,session B通過索引 idB 。
當 where 條件獲取的數據無間隙時,無論隔離級別為 rc 或 rr,都不會存在間隙鎖。
比如通過唯一索引獲取到了已完全填充的數據范圍,此時不需要間隙鎖。
間隙鎖的目的在於阻止數據插入間隙,所以無論是通過 insert 或 update 變更導致的間隙內數據的存在,都會被阻止。
rc 隔離級別模式下,查詢和索引掃描將禁用 gap locking,此時 gap locking 僅用於外鍵約束檢查和重復鍵檢查(主要是唯一性檢查)。
rr 模式下,為了防止幻讀,會加上 Gap Locks。
事務中,SQL 開始則加鎖,事務結束才釋放鎖。
就鎖類型而言,應該有優化鎖,鎖升級等,例如rr模式未使用索引查詢的情況下,是否可以直接升級為表鎖。
就鎖的應用場景而言,在回放場景中,如果確定事務可並發,則可以考慮不加鎖,加快回放速度。
鎖只是並發控制的一種粒度,只是一個很小的部分:
從不同場景下是否需要控制並發,(已知無交集且有序的數據的變更,MySQL 的 MTS 相同前置事務的多事務並發回放)
並發控制的粒度,(鎖是一種邏輯粒度,可能還存在物理層和其他邏輯粒度或方式)
相同粒度下的優化,(鎖本身存在優化,如IX、IS類型的優化鎖)
粒度載入的安全&性能(如獲取行鎖前,先獲取頁鎖,頁鎖在執行獲取行鎖操作後即釋放,無論是否獲取成功)等多個層次去思考並發這玩意。
㈩ 如何連接到伺服器上的mysql資料庫
首先你要先和伺服器的網路是能Ping通的
MYSQL連接一般需要輸入目標伺服器的IP地址,埠號,用戶名和密碼。
如:ip地址:192.168.11.101
埠 :3306
用戶名:root
密碼:root
其中用戶名和密碼一般輸入root都是可以進入的。不行就去目標伺服器上的資料庫管理下用戶。
MYSQL一般都是用NAVITE for mysql。點擊左上角的連接按鈕。輸入以上信息就可以了,記得先PING網路。
