天天看點

開發指南—DDL語句—分庫分表文法—CREATE DATABASE

文法

create_database_stmt:
    CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] database_name [database_option_list]
database_option_list:
    database_option [database_option ...]
database_option:
    [DEFAULT] {CHARACTER SET | CHARSET} [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name
  |  LOCALITY=locality_option}
  | [PARTITION_MODE = partition_mode_option]
 
locality_option:
    'dn=storage_inst_id_list'
storage_inst_id_list:
    storage_inst_id[,storage_inst_id_list]
    
partition_mode_option:
     'partitioning'
    |'sharding'      

參數說明

參數 說明
database_name 指定要修改屬性的資料庫名稱。如果不指定,會對目前預設資料庫進行修改。
CHARSET charset_name 指定要修改的字元集。
COLLATE collation_name 指定校對規則。
LOCALITY 建立資料庫時指定該庫的存儲位置。
PARTITION_MODE 指定邏輯庫所使用的分區模式,支援兩種分區模式:
  • partitioning:使用MySQL類型的分區表建表文法(例如,partition byHash/Range/List)進行分區建表。
  • sharding:使用DRDS模式的分庫分表建表文法(例如,dbpartition by / tbpartition by)。

如果不指定,預設是partitioning。

資料庫的分區模式不可更改,建庫時一旦指定,不能變更。

示例

  • 建立資料庫test,并指定字元集為UTF8。
mysql> create database test PARTITION_MODE=sharding default CHARACTER SET UTF8;
Query OK, 1 row affected (0.00 sec)      
  • 在執行個體中建立一個資料庫,并通過以下指令指定其存儲位置為polardbx-storage-0-master節點。
mysql> CREATE DATABASE db1 PARTITION_MODE=sharding LOCALITY='dn=polardbx-storage-0-master';      
    • 如果在建立資料庫時未指定資料庫的存儲位置,系統将預設在所有存儲節點中均勻分布資料庫。
    • 資料庫中分表的存儲位置與該庫的存儲位置保持一緻,以實作分表上的資料隔離。

建立成功後,您可以通過以下語句檢視資料庫的存儲位置資訊。

mysql> SHOW CREATE DATABASE db1 PARTITION_MODE=sharding;      

傳回結果如下所示:

+----------+------------------------------------------------------------------------+
| DATABASE | CREATE DATABASE                                                        |
+----------+------------------------------------------------------------------------+
| db1      | CREATE DATABASE `db1` /* LOCALITY = "dn=polardbx-storage-0-master" */  |
+----------+------------------------------------------------------------------------+
1 row in set