接続管理マネージャ [詳解]
#include <connMgr.h>
公開型 | |
typedef bzs::db::transactd::connection::record | record |
typedef connRecords | records |
公開メンバ関数 | |
const records & | channels (bool withLock=false) |
bool | connect (const _TCHAR *uri) |
const records & | connections () |
const records & | databases () |
database * | db () const |
void | disconnect () |
const records & | extendedvars () |
bool | haLock () |
void | haUnlock () |
const records & | inUseDatabases (__int64 connid) |
const records & | inUseTables (__int64 connid, int dbid) |
void | postDisconnectAll () |
void | postDisconnectOne (__int64 connid) |
const records & | schemaTables (const _TCHAR *dbname) |
bool | setEnableFailover (bool v) |
bool | setRole (int v) |
bool | setTrxBlock (bool v) |
const records & | slaveHosts () |
const records & | slaveStatus (const char *channel=0) |
const _TCHAR * | slaveStatusName (uint_td id) const |
const records & | statusvars () |
const records & | sysvars () |
const records & | tables (const _TCHAR *dbname) |
const records & | views (const _TCHAR *dbname) |
静的公開メンバ関数 | |
static connMgr * | create (database *db) |
static const _TCHAR * | extendedVarName (uint_td id) |
static void | removeSystemDb (records &recs) |
static const _TCHAR * | statusvarName (uint_td id) |
static const _TCHAR * | sysvarName (uint_td id) |
接続管理マネージャ
connMgrクラスは主に以下のことを行います。
オペレーションの結果ステータスは stat() で受け取ることができます。オペレーションの実行後は stat() を確認してください。
結果データは struct bzs::db::transactd::connection::record に格納されて返されます。この結果は クラス内にある結果オブジェクトを参照で返しています。そのため、この結果が有効なのは次のオペレーションを実行 するまでです。結果を保持したい場合は、コピーするようにしてください。
結果レコードクラス
結果レコード connRecords
const records & channels | ( | bool | withLock = false | ) |
サーバーがスレーブの場合、接続チャンネル名の一覧を返します。チャンネル名にはデフォルトの空文字""のチャンネルも含みます。
bool connect | ( | const _TCHAR * | uri | ) |
新しい接続を作成し、uriで指定したサーバーに接続します。 connMgr::create(db) で渡したデータベースオブジェクトが接続済であった場合は、接続の参照カウンタを一つ減らし (減らした結果、参照カウンタがゼロなら切断され)新しい接続を作成し接続します。
既にデータベースが開かれていた場合は、接続に失敗し stat() は STATUS_DB_YET_OPEN を返します。
const records & connections | ( | ) |
サーバーに接続しているクライアントの一覧を取得します。一覧にはこの接続は含まれません。
connMgrオブジェクトを生成します。未接続のデータベースオブジェクトを渡します。
解放は release() を呼び出してください。
const records & databases | ( | ) |
データベースの一覧を取得します。この結果にはMySQLのシステムデータベースも含んでいます。 それらを除外したい場合は、 removeSystemDb() を使用してください。
database * db | ( | ) | const |
コンストラクタで指定したデータベースオブジェクトを返します。
void disconnect | ( | ) |
connect() で作成した接続を切断します。
|
static |
extendedvars() で得られる内容のタイトル名を取得します。
const records & extendedvars | ( | ) |
サーバーの拡張情報を取得します。 結果セットは、常に同じ順序で extendedVarName() で得られるタイトルの内容です。
得られる情報の内容と順序は以下の通りです。
bool haLock | ( | ) |
サーバーのHaオブジェクトをロックします。ロックが中に他のクライアントが haLock() haUnlock() setRole() setTrxBlock() setEnableFailover() を行うSTATUS_LOCK_ERRORが返されます。
ロックを行ったクライアントは必ず haUnlock() を呼び出してロックを開放してください。
void haUnlock | ( | ) |
サーバーのHaオブジェクトのロックを解除します。
const records & inUseDatabases | ( | __int64 | connid | ) |
connidで指定したクライアントが現在使用しているデータベース一覧を取得します。
const records & inUseTables | ( | __int64 | connid, |
int | dbid | ||
) |
connidで指定したクライアントのdbidで指定したデータベースで、現在使用しているテーブルの一覧を取得します。
void postDisconnectAll | ( | ) |
すべてのクライアントを強制切断するようメッセージを送信します。 クライアントがビジー状態の時は解放されてから切断が行われます。
void postDisconnectOne | ( | __int64 | connid | ) |
connidで指定したクライアントを強制切断メッセージを送信します。 クライアントがビジー状態の時は解放されてから切断が行われます。
|
static |
databases() で取得した一覧からMySQLのシステムデータベースをrecsから除外します。
const records & schemaTables | ( | const _TCHAR * | dbname | ) |
dbnameで指定したデータベースのtransactdスキーマの一覧を取得します。
bool setEnableFailover | ( | bool | v | ) |
接続先サーバーがスレーブの場合、フェイルオーバー時にマスターを切り替えるかどうかを指定します。 vにtrueをセットするとフェイルオーバーが有効であるとマークされます。
フェイルオーバーも含めたHAの設定は statusvars() の ha 変数で確認できます。
ha変数はビットフラグでそれぞれの意味は以下の通りです。
bool setRole | ( | int | v | ) |
サーバーの役割 (Role)をセットします。 vの有効な値は以下の通りです。
bool setTrxBlock | ( | bool | v | ) |
サーバーにTransactdクライアントからの処理要求のブロックについて指示します。 vにtrueを指定すると処理要求をすべてブロックします。
ブロックが有効のときに、クライアントからの何らかの処理要求があると、その処理を終えた後にサーバーは接続を切断します。 但し、トランザクションまたはスナップショット中の場合は切断しません。それらが終了してから切断します。
処理要求のブロックは、マスターをスイッチオーバーする際に使用します。スイッチオーバーを実行するクライアントは まず、 haLock() にてhaオブジェクトをロックしてから setTrxBlock(true) を呼び出し新たなトランザクションをすべてブロックします。 クライアントはすべてのトランザクションが無くなったことを確認してからマスターを切替ることができます。
const records & slaveHosts | ( | ) |
サーバーに接続しているスレーブの一覧を取得します。各スレーブごとに ホスト名、ポート番号、ユーザー名、GTIDセットが返されます。 ポート番号は record::port 、ホスト名、ユーザー名、GTIDセットはタブ区切りで record::value() で取得できます。
const records & slaveStatus | ( | const char * | channel = 0 | ) |
サーバーのスレーブ状態を取得します。サーバーがスレーブでない場合は、ゼロ個の結果が返ります。 MySQL 5.7 MariaDB 10.0以降の場合はchannelを指定できます。NULLを指定すると内部で空文字""が使用されます。 結果セットは、常に同じ順序で slaveStatusName() で得られるタイトルの内容です。
const _TCHAR * slaveStatusName | ( | uint_td | id | ) | const |
slaveStatus() で得られる内容のタイトル名を取得します。
|
static |
statusvar() で得られる内容のタイトル名を取得します。
const records & statusvars | ( | ) |
Transactdサーバーステータス変数の値を取得します。 結果セットは、常に同じ順序で statusvarName() で得られるタイトルの内容です。
|
static |
sysvars() で得られる内容のタイトル名を取得します。
const records & sysvars | ( | ) |
Transactdサーバーシステム変数 (設定変数)の値を取得します。 結果セットは、常に同じ順序で sysvarName() で得られるタイトルの内容です。
const records & tables | ( | const _TCHAR * | dbname | ) |
dbnameで指定したデータベースのテーブルの一覧を取得します。
const records & views | ( | const _TCHAR * | dbname | ) |
dbnameで指定したデータベースのビューの一覧を取得します。