5. 在Datadir目录外创建单独表空间

本文介绍如何在MySQL的datadir目录之外创建独立的表空间文件。通过使用DATADIRECTORY子句,可以在指定目录下创建表的.ibd文件,并在datadir目录下生成相应的.isl文件来记录表文件的位置。

5. 在Datadir目录外创建单独表空间

要在MySQL dadadir之外的位置创建单独表空间,请使用该子句:

DATA DIRECTORY = '/path'

在目标目录中,MySQL会创建一个与数据库名称对应的子目录,并在其中创建新表的xx.ibd文件。在MySQL DATADIR目录中,会创建一个xx.isl文件,文件内容包含表的路径名。MySQL将’**.isl’文件视为符号链接。

示例:

# cd /data
# mkdir mysqldata
# chown mysql:mysql mysqldata/

root@localhost [test] 11:14:46>SHOW VARIABLES LIKE 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.00 sec)

root@localhost [test] 11:14:48>create table x1(c1 int primary key) data directory = '/data/mysqldata';
Query OK, 0 rows affected (0.06 sec)

# cd /data/mysqldata
# ls -l
total 0
drwxr-x--- 2 mysql mysql 20 Aug 10 11:15 test

# cd test
# ls -l
total 96
-rw-r----- 1 mysql mysql 98304 Aug 10 11:15 x1.ibd


# cd /data/mysql/mysql3306/data/test
# ls -l
total 144
-rw-r----- 1 mysql mysql   8622 Aug  9 17:03 account.frm
-rw-r----- 1 mysql mysql 114688 Aug 10 09:28 account.ibd
-rw-r----- 1 mysql mysql     67 Aug  7 10:15 db.opt
-rw-r----- 1 mysql mysql   8556 Aug 10 11:15 x1.frm
-rw-r----- 1 mysql mysql     27 Aug 10 11:15 x1.isl


# cat x1.isl 
/data/mysqldata/test/x1.ibd

也可以在创建表时指定innodb_file_per_table关键字,使用此方式创建时innodb_file_per_table参数不必启用

mysql> CREATE TABLE t2 (c1 INT PRIMARY KEY) TABLESPACE = innodb_file_per_table
       DATA DIRECTORY = '/data/mysqldata';
import geopandas as gpd # 导入geopandas库用于处理地理空间数据 from shapely.geometry import box # 导入shapely的box函数用于创建几何框 import contextily as ctx # 导入contextily库用于添加背景地图 import matplotlib.pyplot as plt # 导入matplotlib.pyplot库用于绘图 # 定义经纬度范围 min_lon, max_lon = 121.4800, 121.5050 # 经度范围 min_lat, max_lat = 31.2300, 31.2450 # 纬度范围 # 创建一个几何框表示指定的区域 geometry = box(min_lon, min_lat, max_lon, max_lat) # 使用box函数创建几何框 gdf = gpd.GeoDataFrame({'geometry': [geometry]}, crs="EPSG:4326") # 创建GeoDataFrame并设置坐标参考系统为WGS 84 # 将坐标系转换为Web Mercator (EPSG:3857)以便与Contextily兼容 gdf_webmercator = gdf.to_crs(epsg=3857) # 转换坐标系为Web Mercator # 设置图形大小 fig, ax = plt.subplots(figsize=(10, 10)) # 创建一个10x10英寸的图形和轴对象 # 绘制几何框 gdf_webmercator.plot(ax=ax, facecolor='none', edgecolor='blue') # 在轴上绘制几何框,无填充颜色,蓝色边框 # 添加背景地图,并设置超时时间和重试次数 try: ctx.add_basemap(ax, source=ctx.providers.OpenStreetMap.Mapnik, zoom=16) # 添加OpenStreetMap背景地图,最大重试次数为3次 except Exception as e: print(f"Failed to add basemap: {e}") # 捕获异常并打印错误信息 # 打印当前轴的限制以检查是否正确 print("Current axis limits:", ax.get_xlim(), ax.get_ylim()) # 打印当前轴的限制 # 移除轴刻度 ax.set_axis_off() # 关闭轴的刻度显示 # 保存图像 plt.savefig("osm_map_visualization.png", bbox_inches='tight', pad_inches=0) # 保存图像到文件,去除周围空白 # 显示图像(可选) plt.show() # 显示图像 遇到错误:"G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\envs\Demo_Osm\python.exe" "G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\CallOsm\VisualizeOsm.py" G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\envs\Demo_Osm\lib\site-packages\pyproj\__init__.py:73: UserWarning: Valid PROJ data directory not found. Either set the path using the environmental variable PROJ_LIB or with `pyproj.datadir.set_data_dir`. warnings.warn(str(err)) Traceback (most recent call last): File "G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\CallOsm\VisualizeOsm.py", line 12, in <module> gdf = gpd.GeoDataFrame({'geometry': [geometry]}, crs="EPSG:4326") # 创建GeoDataFrame并设置坐标参考系统为WGS 84 File "G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\envs\Demo_Osm\lib\site-packages\geopandas\geodataframe.py", line 173, in __init__ self["geometry"] = _ensure_geometry(self["geometry"].values, crs) File "G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\envs\Demo_Osm\lib\site-packages\geopandas\geodataframe.py", line 62, in _ensure_geometry out = from_shapely(data, crs=crs) File "G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\envs\Demo_Osm\lib\site-packages\geopandas\array.py", line 154, in from_shapely return GeometryArray(vectorized.from_shapely(data), crs=crs) File "G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\envs\Demo_Osm\lib\site-packages\geopandas\array.py", line 289, in __init__ self.crs = crs File "G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\envs\Demo_Osm\lib\site-packages\geopandas\array.py", line 339, in crs self._crs = None if not value else CRS.from_user_input(value) File "G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\envs\Demo_Osm\lib\site-packages\pyproj\crs\crs.py", line 440, in from_user_input return CRS(value, **kwargs) File "G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\envs\Demo_Osm\lib\site-packages\pyproj\crs\crs.py", line 296, in __init__ super().__init__(projstring) File "pyproj/_crs.pyx", line 2331, in pyproj._crs._CRS.__init__ File "pyproj\_datadir.pyx", line 48, in pyproj._datadir.pyproj_context_initialize File "pyproj\_datadir.pyx", line 44, in pyproj._datadir.pyproj_context_initialize File "pyproj\_datadir.pyx", line 22, in pyproj._datadir.set_context_data_dir File "G:\BaiduSyncdisk\01-Thesis P5-ACO-2\Codes_3D\UAM\envs\Demo_Osm\lib\site-packages\pyproj\datadir.py", line 108, in get_data_dir raise DataDirError( pyproj.exceptions.DataDirError: Valid PROJ data directory not found. Either set the path using the environmental variable PROJ_LIB or with `pyproj.datadir.set_data_dir`.
04-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值