“共用数据库”通常有两种理解:
- 多站点共享同一个数据库:多个不同的网站(
site1.com和site2.com)都连接到同一个 MySQL 数据库中,通过不同的表前缀来区分各自的数据。 - 主从数据库(读写分离):一个主数据库负责所有写操作(添加、修改、删除),多个从数据库负责读操作(查询),以提高网站性能和可用性。
对于绝大多数DedeCMS用户来说,第一种情况(多站点共享数据库) 是更常见的需求,我将重点讲解这种实现方式,并简要介绍第二种。
多站点共享同一个数据库 (核心方案)
这种方案的核心思想是:一个数据库,多个表前缀,DedeCMS 在安装时,会让你指定一个“数据表前缀”,dede_,我们可以为每个新站点指定一个不同的前缀,这样它们就可以在同一个数据库里“和平共处”。
实现步骤
假设你已经有一个运行正常的 DedeCMS 站点(我们称之为“主站”),现在要添加第二个站点(“子站”)并共用其数据库。
前提条件:
- 你有一个已经安装好的 DedeCMS 网站,并且知道其数据库连接信息(主机名、用户名、密码、数据库名)。
- 你有权限管理该数据库。
操作步骤:
第1步:安装第二个 DedeCMS 网站
-
上传文件:将第二个 DedeCMS 程序文件上传到你的服务器的另一个目录(
site2)。 -
运行安装程序:通过浏览器访问
http://你的域名/site2/install/index.php,开始安装向导。 -
关键一步:修改数据库配置:
- 在安装向导的“数据库设置”页面,数据库名请务必填写与主站完全相同的数据库名。
- 数据表前缀是最关键的!请务必填写一个与主站不同的前缀,
dede2_、s2_等。千万不要使用和主站一样的前缀,否则会直接覆盖主站的数据! - 数据库用户名和密码保持与主站一致。

-
完成安装:继续按照向导完成安装,安装程序会自动在同一个数据库中创建一组以
dede2_为前缀的新表(如dede2_arctype,dede2_archives等)。
第2步:修改配置文件以适配新站点
虽然安装程序会自动生成配置文件,但为了确保万无一失,并且方便后续修改,最好手动检查并调整。
-
找到配置文件:在第二个站点的根目录下,找到
data/common.inc.php文件。 -
检查并修改数据库连接信息:
- 打开
common.inc.php,确保里面的数据库信息($cfg_dbhost,$cfg_dbuser,$cfg_dbpwd,$cfg_dbname)与主站完全一致。 - 最重要的是检查
$cfg_dbprefix变量,确保它被正确设置为你安装时指定的前缀(dede2_)。
// /data/common.inc.php 示例 <?php // 数据库连接信息 $cfg_dbhost = 'localhost'; $cfg_dbuser = 'your_db_user'; $cfg_dbpwd = 'your_db_password'; $cfg_dbname = 'your_database_name'; // 与主站相同 // 数据表前缀 $cfg_dbprefix = 'dede2_'; // 关键!必须与主站不同 ...
- 打开
第3步:后台管理
你有两个独立的 DedeCMS 后台:
- 主站后台:
http://主域名/dede/ - 子站后台:
http://子域名/site2/dede/
你可以分别登录这两个后台,管理各自的内容,它们操作的是同一数据库里不同前缀的表,互不干扰。
主从数据库(读写分离)
这种方案主要用于大型网站,目的是为了提升性能和增强可用性,它比方案一复杂得多,通常需要专业的服务器运维知识。
核心思想
- 主数据库:处理所有的写操作发布、修改、删除、用户注册等),所有数据变更都先发生在主库上。
- 从数据库:复制主数据库的数据,只处理读操作列表、文章详情、搜索等),网站的大部分请求都是读操作,可以将这些压力分散到多个从库上,大大减轻主库的负担,提升网站响应速度。
实现原理
-
数据库环境搭建:
- 需要至少两台(或多台)数据库服务器。
- 在主数据库服务器上启用 MySQL 的“二进制日志”(Binary Log)。
- 在从数据库服务器上配置,使其作为主库的“从服务器”(Replica),并指定主库的日志位置,实时或定时地同步数据。
-
DedeCMS 程序修改:
- DedeCMS 本身不原生支持读写分离,你需要修改其核心的数据库操作类(通常是
/include/dedesql.class.php)。 - 修改逻辑:
- 当执行
SELECT查询时,程序自动连接到从数据库。 - 当执行
INSERT,UPDATE,DELETE等写操作时,程序自动连接到主数据库。
- 当执行
- 这个修改过程比较复杂,需要一定的 PHP 和 MySQL 编程能力,网上有一些第三方开发的补丁或类可以实现此功能,但需要谨慎使用。
- DedeCMS 本身不原生支持读写分离,你需要修改其核心的数据库操作类(通常是
适用场景
- 日均 PV(页面浏览量)数十万甚至百万以上的大型网站。
- 对网站性能和稳定性要求极高的商业项目。
- 有专门的运维人员负责数据库的维护和监控。
对于个人博客、中小型企业官网等,方案一已经足够,方案二的投入和复杂度远超其带来的收益。
总结与建议
| 特性 | 共享数据库(多表前缀) | 主从数据库(读写分离) |
|---|---|---|
| 目的 | 简化多站点管理,节省资源 | 提升性能,高可用性 |
| 复杂度 | 低,只需安装时注意前缀 | 高,需要专业运维和代码修改 |
| 适用对象 | 个人站长,中小型企业,多站点管理 | 大型门户网站,高流量应用 |
| 核心 | 一个数据库,不同 cfg_dbprefix |
主库写,从库读,数据同步 |
| 推荐度 | ★★★★★ (对于绝大多数用户) | ★★ (对于特定高级用户) |
给你的建议:
- 如果你只是想在一台服务器上运行多个 DedeCMS 网站,并且希望它们共享同一个数据库以方便管理或节省成本,请毫不犹豫地选择方案一,它简单、直接、有效。
- 如果你的网站已经非常庞大,用户访问量巨大,并且你发现数据库性能成为瓶颈,那么才需要考虑方案二,在实施之前,请务必评估其成本和收益,并确保你有足够的技术支持。
