2013年12月31日星期二

一個MySQL DBA著眼於PostgreSQL的

Original post: http://anothermysqldba.blogspot.com/2013/12/a-mysql-dba-looks-at-postgresql.html

所以這是/一之旅的MySQL DBA尋找到的PostgreSQL 。 這不是一個攻擊只是觀察和例子。 

使用的CentOS 6.5 64位: 

RPM-IVH http://yum.postgresql.org/9.3/redhat/rhel-6.5-x86_64/pgdg-centos93-9.3-1.noarch.rpm

百勝groupinstall“PostgreSQL數據庫服務器9.3 PGDG” 
--->包裝postgresql93.x86_64 0:9.3.2-1PGDG。RHEL6將安裝 
--->包裝postgresql93-contrib.x86_64 0:9.3.2-1PGDG。RHEL6將安裝 
--->包裝postgresql93-libs.x86_64 0:9.3.2-1PGDG。RHEL6將安裝 
 
--->包裝postgresql93-server.x86_64 0:9.3.2-1PGDG。RHEL6將安裝 

yum的安裝postgresql93服務器 

服務的PostgreSQL-9.3初始化數據庫 
初始化數據庫:[ 確定 ] 
服務的PostgreSQL-9.3啟動 
啟動PostgreSQL的-9.3服務:[ 確定 ] 
在chkconfig的postgresql-9.3 

下面所有的例子都是基於PostgreSQL的維基 
#蘇- Postgres的 
-bash的-4.1 $ psql的 
 
psql的(9.3.2) 

Postgres的=#CREATE USER testuser的密碼'1234'; 
CREATE ROLE 
Postgres的=#GRANT ALL ON SCHEMA測試,以testuser的; 
GRANT 

Postgres的=#GRANT ALL ON架構中測試,以testuser的所有表; 
GRANT 
Postgres的=#\ q
-bash的-4.1 $退出
註銷
#蘇testuser的

$ PWD 
/首頁/ testuser的 
$ psql的-D Postgres的 
psql的(9.3.2) 

鍵入“help”以獲得幫助。 
Postgres的=> CREATE TABLE test.test(COLTEST為varchar(20));
CREATE TABLE
Postgres的=>插入test.test(COLTEST)VALUES('它的工作原理!');
INSERT 0 1
Postgres的=> SELECT * FROM test.test;
COLTEST
-----------
它的工作原理!
(1行)

Postgres的=> DROP TABLE test.test;
DROP TABLE
Postgres的=>

我也注意到,這些GRANT語句9.3運作良好,但最初的發行版安裝了一個8 *版本和一些命令失敗。 

順便說一句......你當然還有功能,你會期望從一個穩定的RDBM系統。 誠然這些都是很簡單的例子。 

Postgres的=> EXPLAIN SELECT * FROM test.test; 
查詢計劃 
-------------------------------------------------- ------ 
序列掃描測試上(成本= 0.00 .. 19.20行= 920寬度= 58) 

顯示數據庫== \升 
Postgres的- > \升 
Postgres的| Postgres的| UTF8 |的en_US.UTF-8 |的en_US.UTF-8 | 
template0中| Postgres的| UTF8 |的en_US.UTF-8 |的en_US.UTF-8 | = C / Postgres的+ 
| | | | | Postgres的= CTC / Postgres的 
的template1 | postgres的| UTF8 |的en_US.UTF-8 |的en_US.UTF-8 | = C / Postgres的+ 

| | | | | Postgres的= CTC / Postgres的 

使用的是標準的SQL: 
Postgres的- >使用Postgres的 

列出所有模式: 

Postgres的- > \ DN 
公眾| Postgres的 

測試| Postgres的 

SHOW CREATE TABLE等是更多一點的工作。 授予一個MySQL DBA會看到它作為,因為我們是用來做更多的工作。PostgreSQL使用表空間超過MySQL用戶是用來做什麼。

  Postgres的=> CREATE TABLE sometable(somefield數據類型為varchar(255),anotherfield為varchar(150),DateField的日期); 
  CREATE TABLE 
  Postgres的=> INSERT INTO sometable(somefield,anotherfield,的DateField)VALUES('FUBAR','rabuf','2013-12-30'); 
  INSERT 0 1 
  Postgres的=> INSERT INTO sometable(somefield,anotherfield,的DateField)VALUES('FUBAR','rabuf',NOW()); 
  INSERT 0 1 
  Postgres的=> INSERT INTO sometable(somefield,anotherfield,的DateField)VALUES('fubar2','rabuf2',NOW()); 
  INSERT 0 1 
  Postgres的=>從sometable選擇*; 
   somefield | anotherfield |的DateField   
  ----------- + -------------- + ------------ 
   FUBAR | rabuf | 2013-12-30 
   FUBAR | rabuf | 2013-12-30 
   fubar2 | rabuf2 | 2013-12-30 
  (3行) 

Postgres的=> SELECT * FROM sometable WHERE somefield ='FUBAR'; somefield | anotherfield |的DateField ----------- + -------------- + ---- -------- FUBAR | rabuf | 2013-12-30 FUBAR | rabuf | 2013-12-30(2排)

Postgres的=> \? < -幫助將告訴您如何來瀏覽周圍。

顯示表== \ DT

Postgres的=> \ DT
關係一覽表
架構|名稱|型號|業主
-------- + ----------- + -------- + ----------
公共| sometable |表| TESTUSER

Postgres的=> ALTER TABLE sometable ADD COLUMN intfield的int [11]; ALTER TABLE

Postgres的=> SELECT * FROM sometable; somefield | anotherfield |的DateField | intfield ----------- + -------------- + -------- ---- + ---------- FUBAR | rabuf | 2013-12-30 | FUBAR | rabuf | 2013-12-30 | fubar2 | rabuf2 | 2013-12-30 |(3行)

SHOW CREATE TABLE == \ D +表名
Postgres的=> \ D + sometable
表“public.sometable”
專欄|類型|修飾語|存儲|統計指標|說明
-------------- + ------------------------ + ---------- - + ---------- + -------------- + -------------
somefield |字符改變(255)| |擴展| |
anotherfield |字符改變(150)| |擴展| |
的DateField |日期| |平原| |
intfield |整數[] | |擴展| |
擁有的OID:無


為了幫助更多的可以安裝pgAdmin的
yum的安裝pgadmin3_93

如果這能夠工作,它是如何工作可能是另一種整個博客文章。

到目前為止.... 我會堅持與MySQL但這是使用PostgreSQL的只是一個簡單的例子。 這可以讓你開始你可以評估自己。

下面有用的鏈接。 請參考這些,因為他們有更多的經驗與PostgreSQL的比我好。

2013年12月7日星期六

ERROR 1356(HY000)

Original post: http://anothermysqldba.blogspot.com/2013/12/error-1356-hy000.html

後一個錯誤來時要了解的最重要的事情是要花點時間和放鬆。 
有時,人們遇到一個錯誤運行,並成為慌亂和沮喪。 深呼吸和放鬆。 有時候,“ 瘋狂就像重力。所有這一切需要的是輕輕一推 “和” 有時,問題是複雜的,答案很簡單 。“ 

這是什麼一回事呢? 嗯比如我最近被要求幫助解決了困擾其它DBA的一個問題。 在尊重各沒什麼意思了DBA,但在匆忙的人只是被忽視的 答案 就是在他們面前的,而是螺旋式下降到 瘋狂  

下面是這種情況的一般概念。 

做一個數據庫的mysqldump在用戶移動到另一個數據庫為他人被測試。 導入工作就好了。 但是,用戶開始發現錯誤,當他們試圖從一個預先構建的視圖來查詢。 

的mysql> SELECT * FROM <View_name>限制1; 

ERROR 1356(HY000):查看'。<DB_NAME>的<Viewname>'引用了無效的表(S)或列(S)或函數(S)或視圖缺乏權利定義者/調用者使用它們 

第一反應是假設出事了與進口。 做了視圖或實際的相關表被損壞? 

 

為了解決這個錯誤的第一件事待辦事項是:MySQL的>顯示創建視圖<View_Name> \ G 

你可能會看到的東西,是這樣開始的: 
*************************** 1。 排*************************** 
查看:訪問者 
 
創建視圖:CREATE ALGORITHM = UNDEFINED DEFINER =`<Some_user>`@`<Some_host_or_IP>`SQL SECURITY DEFINER查看 

當你看到誰定義者是:`<Some_user>`@`<Some_host_or_IP>` 您可以查看贈款該用戶。 

MySQL的>展會補助`<Some_user>`@`<Some_host_or_IP>`; 

原來,該解決方案是擺在首位的錯誤只是說什麼:“ 來看缺乏權利定義者/調用者使用它們  

為了方便您可以在那裡已經工作了數據庫做一個節目的贈款和複製GRANT語句,或者你可以查看什麼類型的權限,你需要在新的數據庫來實現,以使視圖來收集所需的數據。 

為用戶和權限錯誤的一個簡單的更新不見了。 

 有時候,答案很簡單 。“ 

2013年11月30日星期六

從社區的戰略

Original post: http://anothermysqldba.blogspot.com/2013/11/a-strategy-from-community.html

我們已經看到了關於MariaDB的了Fedora,SUSE和Red Hat取代MySQL的消息。

而Oracle也不會高興這樣的消息,開源社區支持的重點放在一個“更多”開源落實到Linux解決方案。

有趣的事情,我們都可能在看的是,該決定或戰略,以從MySQL遷移到MariaDB的很可能不只是由上層管理紅帽。 這是更可能是來自開源社區的運動紅帽評估,他們聽。

考慮這一點,回頭一看在成龍Yeaney的( @ jackieyeaney )發布有關“ 民主化的企業戰略過程在紅帽 “(發布2011年11月10日),並學習如何帽子紅的作品。 我們利用現有網絡在開源社區,以”保持頭腦開放“和社交的想法紅帽之外。” 社會希望開放性和結果是轉會到MariaDB的紅帽,是關係到紅帽的開放戰略,在我的愚見很可能是肯定的。

吉姆·懷特赫斯特@ JWhitehurst )出現擁抱,因為金融收益的不只是開源社區它獎勵的公司,但也因為它是如何徹底改變了他們的工作,作出戰略決策,並從別人那裡索取輸入:“只要眼球足夠多,所有的bug很淺。“

花點時間與去年語句到MySQL。 如果你遵循的MySQL,那麼你也知道,甲骨文關閉(或有少開版了)的bugs.mysql.com網站。 雖然甲骨文有自己的企業的推理是,開源社區遵循“只要眼球足夠多,所有的錯誤都是淺。”

隨著MariaDB的成長,變得更加嵌入到Linux發行版作為默認數據庫的相關bug跟踪將是開放的,這將是有趣的,看看蟲子從長遠來看分成了瑪麗亞和MySQL。

所以,現在.. 有趣的方面是,而MySQL的過企業,由甲骨文擁有的社區版本,此舉仍然發生,因為MariaDB的的。 Oracle還擁有Java和相關的OpenJDK。 雖然我只是問這個作為一個局外人看著英寸.. 如果Java / OpenJDK的是跨足不是由甲骨文擁有的其他軟件包的話,我們很快就會看到一個替代的Java / OpenJDK的紅帽呢? 再次我是一個局外人Java世界,所以我只是問,因為相似的,它代表與MySQL。

2013年11月19日星期二

MariaDB的Linux發行版

Original post: http://anothermysqldba.blogspot.com/2013/11/mariadb-linux-distributions.html

所以現在很多人已經看過有關谷歌的消息,SUSE和Red Hat / Fedora的移動MariaDB的代替MySQL作為默認的數據庫。

MariaDB的SkySQL已經取得了非常富有成效的企業移動今年。 這究竟是什麼意思為MySQL社會各界和廣大開源社區?

對於初學者回想起什麼取得如此受歡迎的MySQL? 這是現成的所有頂級的Linux發行版。

openSUSE和Fedora的已經轉移到MariaDB的,所以推一個開放源碼的集中運動已經開始。 經過RHEL遷移MariaDB的默認數據庫,然後也意味著,很快就會有CentOS的默認數據庫MariaDB的。

可能很快跟進,將是Ubuntu和Debian的舉動。 我可能已經錯過了一個移動的消息了,但是我不這麼認為。

所有這一切都是大新聞和MariaDB的移動和開源社區的。 MariaDB的自然會開始看到更多的用戶接受和使用。 雖然甲骨文的MySQL仍然是一個開源軟件包大問題一直bugs.mysql.com的的網站,並跟踪mysql用戶的錯誤。 人們很快將開始跟踪更多MariaDB的錯誤呢?

MariaDB的也有開源的特點,模仿甲骨文的MySQL企業唯一的解決辦法。 因此,許多用戶會自然地拿起那些功能。

儘管甲骨文正在建設強大的功能和代碼,但在社會上有多少正在? MySQL 5.1中被大量使用,在社會上使用的Linux發行版,許多用戶可能只知道MySQL 5.1和5.5 MariaDB的這麼快。

接下來會發生什麼?
甲骨文決定做什麼仍是有待觀察。 甲骨文已經採取的Red Hat Linux建立自己的Oracle的Linux(OEL)。 所以,具有諷刺意味的MariaDB的分叉,這是從甲骨文的MySQL,將Red Hat Linux中為Oracle移除他們的OEL。 甲骨文將反擊以某種方式與Java?

Percona的怎麼辦? Percona的也是一個球員在這方面和有MariaDB的和甲骨文多年來互相尊重的關係。 當然,Percona的確實偏向了開源方面的東西,所以會好奇,看是否出現的任何舉動Percona的一部分。 MariaDB的功能,即將成為專注於更多的工具?

MariaDB的做什麼? 那麼, MariaDB的錯誤數據庫中的錯誤監測的增長率會幫助多少人開始採取MariaDB的。
瑪麗亞在一些點脫離MySQL的源代碼更新,並繼續構建社區和他們的工程師?

那麼接下來會發生什麼? 我們不知道。 它是由開源社區。 很多憤怒的聲音已經直指甲骨文多年來。 那些聲音那麼,如何才能改變或MariaDB的顯示支持,將很快可以看到。 他們許多人可能已經MariaDB的支持,它是採用的群眾,將顯示如何MariaDB的問候到MySQL。 許多公司都知道的名稱以及將MySQL猶豫移動到MariaDB的(這只是發生在我身上的一天。)。 因此,MariaDB的工作還沒有完成。
然而,這畢竟... 甲骨文,紅帽和谷歌仍然走到了一起,來幫助我們的政府

2013年10月31日星期四

MySQL在谷歌的雲SQL

Original post: http://anothermysqldba.blogspot.com/2013/10/mysql-in-google-cloud-sql.html

如果你還沒有見過這個.. 很酷...

“使用MySQL客戶端,以及其他管理和報告工具,工作與MySQL數據庫訪問。”

http://gigaom.com/2013/10/30/google-woos-mysql-faithful-to-its-cloud/

“谷歌的雲SQL是一個MySQL數據庫,住在谷歌的雲,它的所有功能和功能的MySQL,一些額外的特性和一些不支持的功能如下:谷歌的雲SQL是易於使用,不需要任何軟件安裝或維護,是為小到中等規模的應用的理想選擇。“

https://developers.google.com/cloud-sql/docs/introduction

2013年10月11日星期五

Percona的5.6(MariaDB的與MySQL)及Debian / Ubuntu的

Original post: http://anothermysqldba.blogspot.com/2013/10/percona-56-mariadb-mysql-debianubuntu.html

輕鬆設置並運行在Debian Percona的5.6。
這個例子是運行Linux Mint的15



Percona的5.6:
http://www.percona.com/doc/percona-server/5.5/installation/apt_repo.html
linuxmint ~ # apt-get install percona-server-server-5.6 percona-server-client-5.6
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libaio1 libdbd-mysql-perl libdbi-perl libmysqlclient18 libmysqlclient18.1 libnet-daemon-perl libplrpc-perl
percona-server-common-5.6
Suggested packages:
tinyca
The following NEW packages will be installed:
libaio1 libdbd-mysql-perl libdbi-perl libmysqlclient18 libmysqlclient18.1 libnet-daemon-perl libplrpc-perl
percona-server-client-5.6 percona-server-common-5.6 percona-server-server-5.6
0 upgraded, 10 newly installed, 0 to remove and 3 not upgraded.
Need to get 40.6 MB of archives.
After this operation, 140 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
linuxmint ~ # mysql -e "CREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME 'libfnv1a_udf.so'"
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
linuxmint ~ # mysql -e "CREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME 'libfnv1a_udf.so'" -p
Enter password:
linuxmint ~ # mysql -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'" -p
Enter password:
linuxmint ~ # mysql -e "CREATE FUNCTION murmur_hash RETURNS INTEGER SONAME 'libmurmur_udf.so'" -p
Enter password:
linuxmint ~ #
linuxmint ~ # mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 52
Server version: 5.6.13-rc61.0 Percona Server (GPL), Release 61.0

Copyright (c) 2009-2013 Percona LLC and/or its affiliates
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SELECT VERSION();
+---------------+
| VERSION() |
+---------------+
| 5.6.13-rc61.0 |
+---------------+
1 row in set (0.04 sec)

10&5.5 MariaDB的都具有以下
https://downloads.mariadb.org/mariadb/repositories/


linuxmint ~ # apt-get install mariadb-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.

所以,你需要檢討
https://mariadb.com/kb/en/installing-mariadb-deb-files/

linuxmint ~ # apt-cache show mysql-common | grep Version
Version: 5.5.33a+maria-1~raring
linuxmint ~ # apt-cache show libmysqlclient18 | grep Version
Version: 5.5.33a+maria-1~raring

linuxmint ~ # apt-get install mariadb-server-5.5 mariadb-client-5.5 libmysqlclient18=5.5.33a+maria-1~raring mysql-common=5.5.33a+maria-1~raring
Reading package lists... Done
Building dependency tree
Reading state information... Done

MySQL的:
http://dev.mysql.com/downloads/mysql /
這是可能的Debian軟件包下載dev.mysql.com /下載網站。