2013年8月15日木曜日

CentOSの6.4上でMySQLのWorkbench 6.0

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です。 http://mysqlworkbench.org/2013/08/mysql-workbench-6-0-6-ga-released/:私は、最新のMySQLワークベンチのブログ記事を見た後にだから私は興味があった

アップグレードするので、時間....
あなたはアップグレード/インストール時にインストールされたり、インストールされることを確認する必要がありますので、最初は、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]を... そうそれが起動し、新しい外観を持っています。
シェルオタクなので私は最初のシェルに行く。 もちろんそれは、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

だから... すべてのことと私は、ターミナルウィンドウ:)を開くGUIを持っている

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とスレーブ(セカンダリ)サーバを作成

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

しかし、念のためにここに実際の状況に基づいて、一例です。

プライマリサーバ

# 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>

今、あなた次第。 あなたは、スレーブにスレーブまたはtar [GZIP]次にSCPにrsyncのディレクトリができます。 関係なくスレーブに移動する方法、作成ホットバックアップと行く準備を持っている。


セカンダリサーバ

# /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というサンプルデータベースがドロップSCHEMAを持っており、そのスキーマにその手順を実行する必要はありませんので、ファイルでSCHEMAコマンドを作成。

また、このデータをロードするためのMySQL Workbenchを使用することができます。
  • あなたのデータベースへの接続ハンドルを作成します。
  • サーバー管理インスタンスをセットアップするには、この新たに作成された接続ハンドルを使用してください。
  • あなたの新しいインスタンスをダブルクリックします。
  • データのエクスポート/復元]の下には、データのインポートが表示されるはずです。
  • 自己完結型ファイルからインポート
    • ファイルパスはSakilaという-data.sqlにために繰り返してからSakilaという-schema.sqlの場所になります
    • スキーマを選択するか、世界の場合は、新しいものを作成することができます。
    • インポートを開始し選択してから、インポートの進行状況表示になります。
今、あなたのデータベースのサンプルデータベースへのアクセスを持っている。

$ mysql -u root -p
>使用Sakilaという
>テーブルを示す;
>俳優リミット3から*を選択します。
+ ---------- + ------------ + ----------- + ------------- -------- +
| ACTOR_ID | FIRST_NAME | last_nameの| LAST_UPDATE |
+ ---------- + ------------ + ----------- + ------------- -------- +
| 1 | PENELOPE |ギネス| 2006-02-15四時三十四分33秒|
| 2 | NICK | WAHLBERG | 2006-02-15 4時34分33秒|
| 3 | ED | CHASE | 2006-02-15 4時34分33秒|
+ ---------- + ------------ + ----------- + ------------- -------- +
ベンチ経由:
  • Adminタブを閉じます
  • SQL開発の下に接続ハンドルを選択してください
  • どちらかだけの俳優の上限3 SELECT * FROMを入力することができ、そして照明ボルトを打つ。
  • または、コマンドの一部を入力し、二重、それはあなたの名前を取り込む持っているテーブル名やカラム名をクリックすることができます。 その後、照明ボルトを選択します。
今、あなたは一緒に遊んで、学習を開始するデータを持っている。

あなたはこれにテーブルを追加したい場合は、MySQLのコマンドラインを使用するか、またはSQL開発、右がお好みのスキーマの下の "テーブル"をクリックし、 "新しいテーブルを作成"

2013年7月17日水曜日

MySQLにおける自分のステータス変数にチェックイン。

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

だから、あなたにも予想通りあなたのデータベースを実行している。
しかし、それは何ですか? それは、より良い動作していませんか?

あなたのステータス変数の一部でチェック最後の時間はいつでしょうか?

監視するためのいくつかの重要なステータス変数は以下のとおりです。

  • Sort_merge_passes
    • 私は、クライアントシステムを監視。 これは私がの値の広大な範囲を参照することを一つの変数である。
    • このステータスの高い値が表示された場合は、真剣にsort_buffer_sizeの調整を検討してconiderはず。 ピーターのブログ記事では、あなたの選択肢を評価するのに役立つスタートすることができます。
    • http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_sort_buffer_size
  • sort_buffer_size
  • Select_scan
    • "最初のテーブルのフルスキャンをした結合の数"
    • あなたは本当に、完全なスキャンをしたいですか?
  • Handler_read_first
    • " この値が大きい場合、それはサーバが完全なインデックススキャンの多くを行っていることを示唆している。"
    • 再びあなたは、完全なスキャンをしたいですか?
  • Key_reads
  • Select_full_join
    • " この値が0でない場合は、慎重にあなたのテーブルのインデックスをチェックする必要があります。"
だから、簡単に言えば.... 自分のステータスをチェック!

2013年7月16日火曜日

MySQLの分布調査

私は、この一般的なMySQLの分布調査を作成しました。結果は、調査の終了時に利用できるようになります。すべての質問が必要な(唯一の4問)私はこのブログがログインに提示されていることを言語にそれぞれ調査をターゲットにしようとしています

結果は、しかし、ここでパブリックビューイングのためのMySQLディストリビューションのいずれかに行くされていません。

調査をここにご利用ください:

http://www.surveymonkey.com/s/KMH9FZD

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日木曜日

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

問題は、ユーザーが言葉だけアウディとしない単語監査を更新したかったのでした。
これは、簡単にかつて私はSUBSTRINGを使用して見つけよう停止期間を利用して解決した。彼らはすべての後に迅速かつ容易に修正を求めていました。


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 |
+-------------------------------+


我々は単に単語の車のため期間を変更したので、それは本当にあまりにもしませんでした。だから続ける....

私たちは、アウディ車でラインからわずかワードアウディをプルする必要があります。

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 |
+----------------------+-------------------------------+ 


SUBSTRINGは、私はバックエンドから8文字を数えた後、私は最初の4文字を引くことができました。

ですから、文字の場所がわからない場合はどうでしょうか。
あなたと一緒に起動するには、あなたが後にあるのか知っていることを確認するためにあなたのデータを確認する必要があります。 しかし、文字がとても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 |
+------------------------------------+ 


だから関係なく、我々は単にその単語をスキップする必要があるように、我々は、監査後に常にそのアウディを見ることができるエンディングの。 ワード監査人は最初の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 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を想定する必要はありません。 私はアウディの2番目の値を求めています。
だからテストはSUBSTRING_INDEXと、私は1日1をスキップして、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) 


さて、無効であるが、それは別の話です ""の使用と文法を付与した。

これらの詳細については、ここで見つけることができます: