2013年8月15日星期四

MySQL Workbench中的6.0在CentOS 6.4

Original post: http://anothermysqldba.blogspot.com/2013/08/mysql-workbench-60-on-centos-64.html

我不是真正一個GUI的DBA。 他們有他們的地方,可以做很好的事情,但我只是不使用它們了。 你可以告訴我已經升級。

# cat /etc/*-release
CentOS release 6.4 (Final)

# rpm -qa | grep MySQL
MySQL-server-5.6.13-1.el6.x86_64
MySQL-devel-5.6.13-1.el6.x86_64
MySQL-shared-compat-5.6.13-1.el6.x86_64
perl-DBD-MySQL-4.013-3.el6.x86_64
MySQL-python-1.2.3-0.3.c1.1.el6.x86_64
MySQL-client-5.6.13-1.el6.x86_64
MySQL-shared-5.6.13-1.el6.x86_64
MySQL-test-5.6.13-1.el6.x86_6

# rpm -qa | grep mysql
php-mysql-5.3.3-23.el6_4.x86_64
mysql-workbench-gpl-5.2.47-1el6.x86_64


MySQL的工作台確實發生發行版中的最新版本,但最新的版本是MySQL的工作台社區-6.0.6-1.el6。 所以我很好奇,我看了之後最新的MySQL工作台的博客文章:http://mysqlworkbench.org/2013/08/mysql-workbench-6-0-6-ga-released/

因此,及時升級....
首先,MYSQL工作台社區是依賴於libtinyxml的的,所以你必須確保安裝或者被安裝,當你升級/安裝。

其他前處理:
所以,之後我看了一下,發現TinyXML的包...

yum install tinyxml-2.6.1-1.el6.x86_64.rpm mysql-workbench-community-6.0.6-1.el6.x86_64.rpm

Installed:
mysql-workbench-community.x86_64 0:6.0.6-1.el6 tinyxml.x86_64 0:2.6.1-1.el6

Replaced:
mysql-workbench-gpl.x86_64 0:5.2.47-1el6

Complete!


OK ... 所以開始有一個新的面貌。
作為一個shell怪胎我去殼。 當然,它抱怨說,沒有安裝mysql的公用事業。 它可以帶你到下載頁面,但可能也只是去的時間提前,因為您可能需要安裝連接器Python作為。 所以基本上... 去獲得這些包和安裝以及...
mysql-connector-python-1.0.12-1.el6.noarch.rpm
mysql-utilities-1.3.4-1.el6.noarch.rpm
# yum install mysql-*.rpm

所以...... 所有這一切,我有一個圖形用戶界面,打開一個終端窗口:)

The following MySQL Utilities are available:
Launching console ...

Utility Description
---------------- ---------------------------------------------------------
mysqlauditadmin audit log maintenance utility
mysqlauditgrep audit log search utility
mysqldbcompare compare databases for consistency
mysqldbcopy copy databases from one server to another
mysqldbexport export metadata and data from databases
mysqldbimport import metadata and data from files
mysqldiff compare object definitions among objects where the
difference is how db1.obj1 differs from db2.obj2
mysqldiskusage show disk usage for databases
mysqlfailover automatic replication health monitoring and failover
mysqlfrm show CREATE TABLE from .frm files
mysqlindexcheck check for duplicate or redundant indexes
mysqlmetagrep search metadata
mysqlprocgrep search process information
mysqlreplicate establish replication with a master
mysqlrpladmin administration utility for MySQL replication
mysqlrplcheck check replication
mysqlrplshow show slaves attached to a master
mysqlserverclone start another instance of a running server
mysqlserverinfo show server information
mysqluserclone clone a MySQL user account to one or more new users


因此,移動外,我開始環顧四周。
政府有一個很好的新的面貌,輕鬆地為您提供一些體面的圖形信息。

sakila的模型看起來非常漂亮,雖然。 建模是一個方便的功能,在GUI中,我承認。

那麼這是我所做的新的MySQL工作台,但我現在升級:)

2013年8月10日星期六

與Percona的Xtrabackup中創建另一台為Slave(次要的)服務器

Original post: http://anothermysqldba.blogspot.com/2013/08/create-slave-secondary-server-with.html

所以,第一你可能會只是保存自己一些時間,和讀取這方面的的Percona的的例子為:
http://www.percona.com/doc/percona-xtrabackup/2.1/howtos/setting_up_replication.html

但是,只是在區分大小寫這裡是一個例子基於上的一個真正的的形勢下的。

Primary server(主服務器)

# innobackupex /tmp/ <---- this is whatever directory you want to store the backup in. This is a very basic no fluff hot backup.

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
.........
130809 14:40:11 innobackupex: Connection to database server closed
130809 14:40:11 innobackupex: completed OK!

請請務必您請參閱的xtrabackup_binlog_info的的文件。 如果你不這樣做你會不會很容易地有的位置和日誌信息。 您將不得不,以挖成基於關於的時間和是比需要的的更多的工作,的等。其中的的的二進制日誌的。

innobackupex --apply-log /tmp/<Timestamp Directory Here>

現在高達給你。 您可以rsync的目錄到的從站或tar [gzip或],然後scp的向從屬。 無論的方法來移動到奴隸的如何的是,您有一個熱備份創建的的,並準備去。


SECONDARY SERVER

# /etc/init.d/mysql stop
mv /var/lib/mysql /var/lib/mysql_ORIG

然而,你搬到該文件從主設備到的奴隸,把其中的內容到對datadir的文件夾,假設為例如:的/ var / lib / mysql下目錄下。

# chown -R mysql:mysql mysql
/etc/init.d/mysql start
Starting MySQL... [ OK ]

現在,在您的的奴隸中的的MySQL服務器,你可以設置的複製用戶信息很容易。

CHANGE MASTER TO
MASTER_HOST='<MASTER_HOST>',
MASTER_USER='<MASTER_USER>',
MASTER_PASSWORD='<MASTER_PASSWORD>',
MASTER_CONNECT_RETRY = 10 ;

獲取該日誌的和位置從的xtrabackup文件中。

# more xtrabackup_binlog_info
<BinLog info> <POSITION INFO>

CHANGE MASTER TO MASTER_LOG_FILE='<BinLog info>', MASTER_LOG_POS=<POSITION INFO>;

Start slave;


那就是它在一個概括地說。 欲了解更多信息中,檢討在開始時的Percona的的url給定的。

2013年7月23日星期二

MySQL範例資料庫>的

Original post http://anothermysqldba.blogspot.com/2013/07/mysql-sample-databases.html

我看到一個帖子上forums.mysql.com網站有關樣本數據庫,我想它可能是值得後,他們為他人給予了簡要概述。

樣本數據庫可以在這裡找到: http://dev.mysql.com/doc/index-other.html
通過MySQL命令行,你就可以將這些數據庫:

$ tar -vxf sakila-db.tar.gz
$cd sakila-db
$ mysql -u root -p < sakila-schema.sql
Enter password:
$ mysql -u root -p < sakila-data.sql
Enter password:

$ gzip -d world_innodb.sql.gz
$ mysql -u root -p -e "DROP SCHEMA IF EXISTS world";
Enter password:
$ mysql -u root -p -e "CREATE SCHEMA world";
Enter password:
$ mysql -u root -p world < world_innodb.sql
Enter password:

你的想法。 sakila的示例數據庫有DROP SCHEMA和CREATE SCHEMA文件中的命令,所以沒有必要做這一步,該架構。

您也可以使用MySQL Workbench來加載這些數據。
  • 你的數據庫創建一個連接句柄。
  • 使用這個新創建的連接句柄來建立一個服務器管理實例。
  • 雙擊您的新實例。
  • 在“數據導出/恢復,你應該看到一個數據導入。
  • 從一個自足的文件導入
    • 文件路徑將會sakila的data.sql的位置sakila的schema.sql的再重複
    • 您可以選擇一種模式,或在世界的情況下,創建一個新的。
    • 選擇“開始導入”,然後你會導入進度視圖。
您現在訪問你的數據庫的示例數據庫。

$ mysql -u root -p
>使用sakila的
>顯示表;
>選擇*從演員上限3;
+ ---------- + ------------ + ----------- + ------------- -------- +
| actor_id | FIRST_NAME |姓氏| LAST_UPDATE |
+ ---------- + ------------ + ----------- + ------------- -------- +
| 1 |佩內洛普| GUINESS | 2006-02-15 4點34分33秒|
| 2 |尼克| WAHLBERG | 2006-02-15 4點34分33秒|
| 3 | ED |的CHASE | 2006-02-15 4時34分33秒|
+ ---------- + ------------ + ----------- + ------------- -------- +
通過工作台:
  • 關閉“管理”選項卡
  • 選擇您的連接手柄下的SQL開發
  • 您可以只需鍵入SELECT * FROM演員上限3打閃電。
  • 或者你可以鍵入的命令部分和表名或列名上雙擊填充你的名字。 然後選擇燈光螺栓。
現在,你有數據開始玩和學習。

如果你想將表添加到這個,你可以使用MySQL命令行或SQL開發並右鍵單擊您選擇的架構下的“表”和“創建新的表”

2013年7月17日星期三

在MySQL中的狀態變量。

Original post: http://anothermysqldba.blogspot.com/2013/07/check-in-on-your-status-variables-in.html

所以,你有你的數據庫運行不如預期。 
但果真如此嗎? 難道是操作好? 

當是你最後一次檢查一些狀態變量? 

一些關鍵監控狀態變量: 

所以把它簡單地.... 檢查你的狀態!

2013年7月16日星期二

MySQL分發調查

我創造了這個普通的MySQL分發調查。結果將在調查結束。所有的問題都需要(只有4個問題)我曾試圖針對每個調查,這個博客的語言英寸

結果都不會任何MySQL的分佈,但在這裡,供市民瀏覽

請在這裡參加調查:
http://www.surveymonkey.com/s/KMW9V9V

2013年7月13日星期六

從MySQL直接導出CSV

Original post: http://anothermysqldba.blogspot.com/2013/07/export-csv-directly-from-mysql.html

首先這是另一篇博客在這裡:
但是,因為我看到這個上forums.mysql.com發布,我想我會給長一點的例子。

因此,在這個例子中我使用的是世界數據庫。 它是可供免費下載,在這裡:

mysql>desc City;
+-------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| Name | char(35) | NO | | | |
| CountryCode | char(3) | NO | MUL | | |
| District | char(20) | NO | | | |
| Population | int(11) | NO | | 0 | |
+-------------+----------+------+-----+---------+----------------+




mysql> SELECT ID, Name, CountryCode , District , Population
INTO OUTFILE '/tmp/City_data.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM City ;
Query OK, 4079 rows affected (0.04 sec)




# more /tmp/City_data.csv
1,"Kabul","AFG","Kabol",1780000
2,"Qandahar","AFG","Qandahar",237500
3,"Herat","AFG","Herat",186800
4,"Mazar-e-Sharif","AFG","Balkh",127800
5,"Amsterdam","NLD","Noord-Holland",731200
6,"Rotterdam","NLD","Zuid-Holland",593321
7,"Haag","NLD","Zuid-Holland",440900
8,"Utrecht","NLD","Utrecht",234323
9,"Eindhoven","NLD","Noord-Brabant",201843


2013年7月4日星期四

UPDATE OPTIONS與LIKE一起REGEXP,SUBSTRING,和LOCATE

Original post: http://anothermysqldba.blogspot.com/2013/07/update-options-with-like-regexp.html

最近的一項的論壇的職位做了我停止,並覺得對於了片刻..
http://forums.mysql.com/read.php?10,589573,589573#MSG-589573

該的問題是,的用戶通緝,以更新只是的字的出租audi和而不是這個詞核數師。
它已於通過輕鬆地服用的本期間內的優勢,,一旦我停了下來試圖,以使用的,SUBSTRING和LOCATE解決。 ,他們想要一個快速和容易的的修正程式在的所有之後。


root@localhost [test]> CREATE TABLE `forumpost` (
-> `name` varchar(255) DEFAULT NULL
-> ) ENGINE=InnoDB;

root@localhost [test]> insert into forumpost value ('An auditor drives an audi.'),('An auditor drives a volvo.');

root@localhost [test]> select * from forumpost;
+----------------------------+
| name |
+----------------------------+
| An auditor drives an audi. |
| An auditor drives a volvo. |
+----------------------------+ 


所以現在就讓我們來更新它的快速和容易的的的的方式通過服用的本期間內的優勢,

root@localhost [test]>UPDATE forumpost SET name = REPLACE(name, 'audi.', 'toyota.') WHERE name LIKE '%audi.';
Query OK, 1 row affected (0.20 sec)
Rows matched: 1 Changed: 1 Warnings: 0

root@localhost [test]> select * from forumpost;
+------------------------------+
| name |
+------------------------------+
| An auditor drives an toyota. |
| An auditor drives a volvo. |
+------------------------------+ 


但是...... 什麼關於的有效的選項的SUBSTRING的和LOCATE .....


root@localhost [test]> insert into forumpost value ('An auditor drives an audi.');
root@localhost [test]> insert into forumpost value ('An auditor drives an audi car');
root@localhost [test]> select * from forumpost;
+-------------------------------+
| name |
+-------------------------------+
| An auditor drives an toyota. |
| An auditor drives a volvo. |
| An auditor drives an audi. |
| An auditor drives an audi car |
+-------------------------------+ 


首先測試您的的的,所以你使請務必你可以找到後,你是什麼東西的選項..


root@localhost [test]> SELECT * FROM forumpost WHERE name REGEXP 'audi car$';
+-------------------------------+
| name |
+-------------------------------+
| An auditor drives an audi car |
+-------------------------------+ 

root@localhost [test]> SELECT * FROM forumpost WHERE name LIKE '%audi car%';
+-------------------------------+
| name |
+-------------------------------+
| An auditor drives an audi car |
+-------------------------------+


那真的沒有做太多,自我們只是改變了本期間為的字車以來,。 因此,保持回事....

,我們需要,以拉只是這個詞的出租audi從該行與出租audi汽車。

root@localhost [test]> SELECT SUBSTRING(name,-8,4), name FROM forumpost WHERE SUBSTRING(name,-8,4) = 'audi';
+----------------------+-------------------------------+
| SUBSTRING(name,-8,4) | name |
+----------------------+-------------------------------+
| audi | An auditor drives an audi car |
+----------------------+-------------------------------+ 


的子串允許我到上拉的第一個的4個字符,後,我數了數回8個字符從的一端。

那麼,什麼如果你不知道的位置的字符,呢?
與你是否要啟動,應該檢討你的數據,以確保你知道你是什麼後,的。 但是,這些字符可能是圍繞您的的的字符串移動,所以讓我們與LOCATE的工作。

,我會添加另一行只是為的測試。

root@localhost [test]> insert into forumpost value ('An auditor drives an red audi car');
Query OK, 1 row affected (0.04 sec)

root@localhost [test]> select * from forumpost;
+------------------------------------+
| name |
+------------------------------------+
| An auditor drives an toyota. |
| An auditor drives a volvo. |
| An auditor drives an audi. |
| An auditor drives an audi car |
| An auditor drives an audi blue car |
| An auditor drives an red audi car |
+------------------------------------+ 


所以,不管,的的結局中,我們可以看到那個出租audi總是後,核數師,,所以我們只是需要跳過過度那個詞。 “核數師”這個詞是在第一的8個字符的,所以跳過的那些。

root@localhost [test]> SELECT LOCATE('audi', name,8), name FROM forumpost WHERE LOCATE('audi', name,8) > 0 ;
+------------------------+------------------------------------+
| LOCATE('audi', name,8) | name |
+------------------------+------------------------------------+
| 22 | An auditor drives an audi. |
| 22 | An auditor drives an audi car |
| 22 | An auditor drives an audi blue car |
| 26 | An auditor drives an red audi car |
+------------------------+------------------------------------+ 


OK(確定),所以,我們發現了的那些我們所後,的。 現在,,我們需要,,以寫的update語句。

,我們不能使用的replace此的時間。

UPDATE forumpost SET name = REPLACE(name, LOCATE('audi', name,8), 'mercedes') WHERE LOCATE('audi', name,8) > 0 ;
Query OK, 0 rows affected (0.02 sec)
Rows matched: 4 Changed: 0 Warnings: 0 

請注意它發現了的行,但沒有改變任何東西。

所以,再試一次,並我不希望,以承擔的位置8。 我想出租audi的第二個值的。
因此,一個測試顯示了,與SUBSTRING_INDEX,我可以跳過一日一,並用USE CONCAT

SELECT name , CONCAT ( SUBSTRING_INDEX(name, 'audi', 2) , ' mercedes ' , SUBSTRING_INDEX(name, 'audi', -1) ) as newvalue
FROM forumpost
WHERE LOCATE('audi', name,10) > 0 ;
+-----------------------------------+-----------------------------------------+
| name | newvalue |
+-----------------------------------+-----------------------------------------+
| An auditor drives an audi. | An auditor drives an mercedes . |
| An auditor drives an audi. | An auditor drives an mercedes . |
| An auditor drives an audi car | An auditor drives an mercedes car |
| An auditor drives an red audi car | An auditor drives an red mercedes car |
+-----------------------------------+-----------------------------------------+

root@localhost [test]> UPDATE forumpost SET name = CONCAT(SUBSTRING_INDEX(name, 'audi', 2) , ' mercedes ' , SUBSTRING_INDEX(name, 'audi', -1) )
WHERE LOCATE('audi', name,10) > 0 ;
Query OK, 4 rows affected (0.03 sec)
Rows matched: 4 Changed: 4 Warnings: 0

root@localhost [test]> select * from forumpost;
+-----------------------------------------+
| name |
+-----------------------------------------+
| An auditor drives an mercedes . |
| An auditor drives a volvo. |
| An auditor drives an mercedes . |
| An auditor drives an mercedes car |
| An auditor drives an red mercedes car |
+-----------------------------------------+
5 rows in set (0.00 sec) 


現在,授出一本語法,配合使用的“一個”是無效的的,但那是另一個故事。

上的這些可以的的更多信息,被在這裡找到: