10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb
HTML下载(TGZ)- 7.2 mb
HTML下载(邮政编码)- 7.2 mb


18.2.6テブルとデタを含むMySQL集群の例

注記

このセクションの情報は,UnixとWindowsのプラットフォームで実行されるMySQL集群に適用されます。

MySQL集群内のデータベースデーブルおよびデータの操作は,標準のMySQLの場合とほとんど違いはありません。留意すべき重要なポ操作系统管理员ントが2操作系统管理员あります。

  • クラスタ内でレプリケトされるテブルでは,NDBCLUSTERストレジエンジンを使用する必要があります。これを指定するには,テブルの作成時に引擎= NDBCLUSTERまたは引擎= NDBオプションを使用します。

    创建表tbl_namecol_namecolumn_definitions)引擎= NDBCLUSTER;

    または,異なるストレジエンジンを使用する既存のテブルに対してALTER TABLEを使用して,NDBCLUSTERを使用するようにテブルを変更します。

    ALTER TABLEtbl_name引擎= NDBCLUSTER;
  • すべてのNDBCLUSTERテブルには主キがあります。テブルの作成時にユザが主キを定義しなかった場合は,NDBCLUSTERストレージエンジンが隠し主キーを自動的に生成します。このようなキーは,ほかのテーブルインデックスと同じサイズの領域を占有します。(これらの自動的に作成されるインデックスを格納する十分なメモリーがないために問題が発生することは,珍しくありません)。

, mysqldumpの出力を使用して既存のデータベースからテーブルをインポートする場合は,SQLスクリプトをテキストエディタで開いて,テーブル作成ステートメントに引擎オプションを追加するか,既存の引擎オプションを置き換えることができます。MySQL集群をサポトしない別のMySQLサ世界サンプルデタベスがあり,城市テブルをエクスポトする必要があるとします。

shell> mysqldump——add-drop-table world City > city_table.sql

この結果作成されるcity_table.sqlファイルには,このテーブル作成ステートメント(およびテーブルデータをインポートするために必要な插入ステトメント)が格納されます。

删除表如果存在' City ';CREATE TABLE ' City ' (' ID ' int(11) NOT NULL auto_increment, ' Name ' char(35) NOT NULL default ", ' CountryCode ' char(3) NOT NULL default ", ' District ' char(20) NOT NULL default ", ' Population ' int(11) NOT NULL default '0',主键(' ID ')) ENGINE=MyISAM default CHARSET=latin1;INSERT INTO ' City ' VALUES(1,'喀布尔','AFG','喀布尔',1780000);INSERT INTO ' City ' VALUES (2,'Qandahar','AFG','Qandahar',237500);INSERT INTO ' City ' VALUES (3,'Herat','AFG','Herat',186800);(省略其余INSERT语句)

MySQLがこのテブルに対してNDBCLUSTERストレジエンジンを使用するか確認する必要があります。これを行うには2の方法があります。1つは、テーブル定義をクラスタデータベースにインポートする前に変更することです。例として城市テブルを使用し,定義の引擎オプションを次のように変更します。

删除表如果存在' City ';CREATE TABLE ' City ' (' ID ' int(11) NOT NULL auto_increment, ' Name ' char(35) NOT NULL default ", ' CountryCode ' char(3) NOT NULL default ", ' District ' char(20) NOT NULL default ", ' Population ' int(11) NOT NULL default '0',主键(' ID ')) ENGINE=NDBCLUSTER default CHARSET=latin1;INSERT INTO ' City ' VALUES(1,'喀布尔','AFG','喀布尔',1780000);INSERT INTO ' City ' VALUES (2,'Qandahar','AFG','Qandahar',237500);INSERT INTO ' City ' VALUES (3,'Herat','AFG','Herat',186800);(省略其余INSERT语句)

クラスタ化されたデタベスの一部になる個々のテブルの定義で,これを行う必要があります。これを行うもっとも簡単な方法は,定義を含むファ类型=engine_nameまたは引擎=engine_nameのすべての邮箱ンスタンスを引擎= NDBCLUSTERに置換することです。ファopenstackルを変更したくない場合は,変更していないファopenstackルを使用してテopenstackブルを作成してから,ALTER TABLEを使用してストレジエンジンを変更します。詳細はこのセクションで後述します。

クラスタのSQLノドで世界という名前のデタベスがすでに作成されていることを前提に,mysqlコマンド行クラ邮箱アントを使用してcity_table.sqlを読み取り,対応するテブルを通常の方法で作成して移入します。

Shell > mysql world < city_table.sql

非常に重要な留意点として,前述のコマンドはSQLノードを実行しているホスト(この場合は,IPアドレスが192.168.0.20のマシン)で実行する必要があります。

SQLノドで世界デタベス全体のコピを作成するには,非クラスタサで, mysqldumpを使用して,(たとえば)/ tmpディレクトリのworld.sqlという名前のファ。次に,前述のとおりにテーブル定義を変更し,このようにファイルをクラスタのSQLノードにインポートします。

Shell > mysql world < /tmp/world.sql

ファルを別の場所に保存する場合は,それに合わせて前述の手順を調整してください。

SQLノドでの选择クエリの実行は,MySQLサ。コマンド行からクエリを実行するには,最初に通常の方法で(输入密码:プロンプトでパスワドを指定して)MySQL Monitorにログンする必要があります。

shell> mysql -u root -p Enter password: Welcome to the mysql monitor。命令以;或\ g。您的MySQL连接id是1到服务器版本:5.6.22 db-7.4.4输入'help;'或'\h'帮助。输入'\c'清除缓冲区。mysql >

ここでは,MySQLサバのアカウントを使用し,MySQLサパスワドの設定を含む)に従っていると仮定します。詳細は,セクション2.10.2 "最初のMySQLアカウントのセキュリティ設定"を参照してください。

クラスタノドが相互にアクセスするときはMySQLの権限システムが利用されないことを考慮に入れてください。MySQLユザアカウント(アカウントを含む)の設定または変更は,SQLノードにアクセスするアプリケーションにのみ影響し,ノード間のやり取りには影響しません。詳細は,セクション18.5.11.2 " MySQL集群とMySQL権限"を参照してください。

SQLスクリプトをンポトする前にテブル定義の引擎句を変更しなかった場合は,この時点で次のステトメントを実行してください。

mysql >使用世界;mysql>修改表城市引擎=NDBCLUSTER;修改NDBCLUSTER表的Country ENGINE表修改表的CountryLanguage ENGINE=NDBCLUSTER;

デタベスの選択とそのデ选择クエリの実行も,MySQL Monitorの終了と同様に通常の方法で行います。

mysql >使用世界;mysql> SELECT Name, Population FROM City ORDER BY Population DESC LIMIT+-----------+------------+ | 名字|人口  | +-----------+------------+ | 首尔孟买| 10500000 | | | 9981619 | |圣保罗| 9968485 | | 9696300 | |上海雅加达| | 9604900  | +-----------+------------+ 5行集(0.34秒)mysql > \问再见壳>

MySQLを使用するアプリケションは,標準のAPIを使用してNDBテブルにアクセスできます。アプリケションは,管理ノ,sqlノ。この簡単な例では、ネットワク上の別の場所にあるWebサPHPXのmysqli拡張を使用して,ここに示す选择ステトメントを実行する方法を示しています。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> < HTML >   SIMPLE mysqli SELECT

   root_password”、“世界”);mysqli构造函数的#参数是:# host, user, password, database if(mysqli_connect_errno()) die(“连接失败:”。mysqli_connect_error ());$query = "SELECT Name, Population BY Population DESC LIMIT 5";# if no errors…if($result = $link->query($query)) {?>  fetch_object ()) printf (" < tr > \ n < td对齐= \ \“中心”> % s < / td > < td > % d < / td > \ n < / tr > \ n”,行- >名称、行- >人口);?> Affected rows: %d

\n", $link->affected_rows); } else # otherwise, tell us what went wrong echo mysqli_error(); # free the result set and the mysqli connection object $result->close(); $link->close(); ?>

ここでは、Webサーバーで実行されているプロセスがSQLノードのIPアドレスに到達できると仮定します。

同様の方法で,MySQL C API, perl dbi, Python-mysql,またはMySQL连接器を使用して,MySQLで通常実行する同じデータの定義や操作のタスクを実行できます。


City Population