为了国庆期间论坛升级,我把数据库下载到本地[顺便备份],并调试论坛。服务器[mysql4.1]的空间平台有一个数据库备份功能,将备份文件下载,70m左右的数据。修改了本地的php.ini的最大上传字节和最大提交字节为100m,修改phpmyadmin 的config.inc.php里的超时为3600s,为的就是在本地倒入这个备份文件。但是,让人失望,phpmyadmin显然不能在数据里导入体积很大的单一.sql文件。点击导入,机器 cpu 100%,卡了几十分钟,在装态栏下面的进度条还没到20%,比dz的后台分卷导入效果还要差。只得另换思路。看看这个70m的.sql是用什么备份的。用editlus打开文件。在文件头部出现 mysql dump 10.9, 不知道这是什么东西,搜一下吧。原来是 mysql自带的备份工具。在本地g:\www\mysql5\bin找到了mysqldump.exe,点击出来一个dos窗口,又自动关闭了。再去百度,搜到的一大窜使用帮助,都是 mysqldump –help 出来的英文帮助。 还是自己动手吧。 通过多次测试,总结以下相关。mysqldump是mysql自带的备份工具,mysql则可以导入备份数据1.导出数据的方法
2.首先是打开dos窗口 [点击 开始-->运行-->输入 cmd 回车]
在dos下进入mysql 的 bin 目录 g:\www\mysql5\bin [这是我的调试环境,不是每个人的都一样]
3.在dos提示符后输入 mysqldump –user=root –passowrd –opt discuz > discuz061001.sql
// root 是用户名 disucz 是数据库名 discuz061001.sql 是导出来的文件的名字
回车
根据提示输入 password 回车
这里候就开始备份了,备份成功候会回到命令提示符。我们从windows下打开 g:\www\mysql5\bin 发现多了一个 discuz061001.sql 这个文件就是我们的备份了。导入数据的方法,将上面的第3步改成 mysql –user=root –password discuz < discuz061001.sql提醒:要注意 discuz061001.sql 是相对路径,如果你的sql文件不是存放在 g:\www\mysql5\bin 下的, 必须更改为绝对路径 [学一点dos是多么的重要]要学习更多的 mysqldump 或者是 mysql 函数,只要输入 mysqldump –help 或者是 mysql –help 就可以了。
Posts Tagged ‘MySQL’
mysql数据库自带的导入导出工具 mysqldump 的使用
Sunday, October 1st, 2006mysql 数据库管理工具
Wednesday, September 13th, 2006
上次有朋友问我有没有什么好的数据库管理工具,实际上我一般只用phpmyadmin就足够了以前还有fainsun_sql数据库备份工具进行备份,但是因为mysql4.1以后dz容易出现乱码问题,现在干脆就有dz的后台进行数据库的升级和备份,效果很不错,就是有点慢.
- phpmyadmin:这个大家应该不会陌生,基于 web 界面、功能比较强悍的 mysql 管理工具。
- mysql users:基于 web 界面、创建并维护 mysql 用户的工具。
- myclient:mysql 数据库的 web 客户端,提供多重分页界面、连接到多个数据库等特性。
- webmysql:同样基于 web 界面,支持 sql 查询、清空数据库和表、以及导入/导出文件等功能。
- mysql administrator:mysql 数据库可视化管理工具。
- mysql query browser:用于创建、执行及优化 sql 查询的可视化工具。
- gnome mysql client:以简单、快速、强大的方式访问 mysql 数据库,可更改或创建数据库数据。
- webmin module for mysql:允许设置数据库、表及 mysql 使用权限。
faisunsql v4.0发布了,提供下载。
Wednesday, May 10th, 2006一直在用faisunsql3.9 , 好几年了,4.0终于开发出来了,想不到faisun也是落伍的,落伍强人实在数不胜数。
什么是faisunsql?[给你补习下]
more..
一、faisunsql 程序有以下特点:
- 可以导出导入任意大小的数据库。faisunsql 采用分卷导出的方式,将数据库分为多个部份多次导出,因此理论上无论多大的数据库,它都可以胜任。
- 导出的文件本身可以在php环境下执行,因此不需要借助其他工具(也不再需要 faisunsql程序)。导出的文件为完整的 php 文件,直接在服务器中执行即可,使用方便。
- 虽然为多页导出和导入,但其过程会自动运行,且执行速度较快,成功率高。
- 程序编写时考虑了程序的可整合性,因此只要略加修改即可整合到其他程序的后台。
- 导出方式、每个数据文件的大小和数据表等都可以进行设置,个性化强。
- 程序对数据进行了一定的压缩,减少了备份文件的空间占用。
- 对导出的程序进行了加密,安全性高。
- 导出和导入时基本上按照默认的配置即可,使用方便快捷。
二、导出操作步骤简介:
1.操作流程:

2.各流程简要说明:
- (1) 检查数据库配置:输入正确的配置以连接数据库。如果在程序源文件的“配置部分”配置的是正确的值,则不会出现该表单,您可以修改源文件的配置以整合到您程序的后台,但请注意在源文件的适当地方添加管理员身份验证程序。不更改源文件,则必须填入正确的配置。如果无法连接数据库,请联系您的主机管理员以获得正确配置值。
- (2) 选择要备份的数据表:您可以选择导出该数据库中的全部或部分数据表。如果您服务器的空间不够,可以先导出一部分,下载回本机后再导出下一部分。默认全部导出。
- (3) 选择导出方式:您可以选择单文件导出或多文件导出。如果您数据库不大,可以选择单文件导出方式,该方式下备份文件直接下载到本地硬件,而不需要先保存在服务器空间。如果数据库较大,请选择多文件导出方式。保存备份文件需要空间与所选择导出的数据库大小相差不大,但建议保证有1.2 倍以上的存储空间。程序会根据您所要导出的数据量给出默认值,数据量大于1m时默认多文件导出方式。
- (4) 导入默认配置:选择单文件导出方式时会出现该表单。即备份文件重新导入数据库时出现的默认配置,导入时仍可更改。默认“服务器”和“数据库”为您第一步填写的服务器和数据库配置,“该数据库不存在时自动创建”的选项为选中。导入时若该选项不选,如果用户填写的数据库不存在时只提示出错而不自动创建。
- (5) 开始单文件导出。导出的结果为一个php文件,并下载到本地硬盘。
- (6) 保存选项和导入默认配置:选择多文件导出时会出现该表单。该表单包括保存选项和导入默认配置两个表格的内容。简要介绍如下:
- 存放目录:备份文件存放在服务器上的目录。注意该目录相对faisunsql所在目录而言,且其目录属性要求可读写(即设为777)。
- 主文件名:不包括扩展名(.php)的名称,为导出的php运行文件名。主文件名也决定了其他的数据文件名。导入时运行该文件即可。
- 生成文件格式:.php格式最安全且不易出错,下载时需要密码;.zip和.gz都是压缩文件格式,所有的文件写在一个压缩包内,需要解压后使用,导出后占用空间较小,但导出时不能刷新,单个压缩文件不能超过4gb,且易被别人下载,所以请尽快将其删除或移动到不可访问的目录中。
- 每个数据文件大小:单位为b,1mb=(1024*1024)b=1048576b。因为多文件下载时必须把数据文件分成若干个,程序检测到目前的数据文件已到达设定的大小时,即结束该文件并换页准备写入新文件。该值不能设得太大,否则容易造成程序运行超时;也不宜设得太小,否则会分卷过多,导出导入总时间变长,且需占用更多的存储空间。
- 导出一页时间间隔:单位为秒。有些服务器不允许用户过于频繁的刷新页面,所以设为这个选项。
- 数据导入密码:因为导出后,您的文件仍在服务器中,设置此密码以防止他人运行您的备份文件。同时,在以http方式下载所有数据文件时也必须输入此密码以保证您数据的安全性。所以,该密码不要太简单,且请保护好。该密码不能为空。
- “导入默认配置”与第(4)点基本相同。
- (7) 检查多余文件:您在上一步设置的目录中,可能含有其他文件,并且有一些可能会被这次导出的文件覆盖。默认选定了所有可能被覆盖的文件。删除选定的文件,或返回上一步更改保存目录。
- (8) 检查目录属性。检查您设定的保存目录是否可以写入文件。程序试图向该目录写入logo图片,若出错则表明该目录无写入权限。请把该目录的属性改为777。
- (9) 开始多文件的导出:这一步数据文件开始导出,并自动进行下一页,直到导出完毕。
三、导入操作步骤简介:
- 备份文件的下载:
备份文件的下载主要有两种方式:
ftp方式:通过ftp方式连接到服务器,并把备份目录下载回来即可。
http方式:在服务器中运行导出的主文件,文件名为您填写的主文件名+扩展名(.php),点击“点击这里http方式下载所有文件”的链接,要求输入导入密码(即导出时填写的导入密码,见导出操作步骤简介),程序即列出所有的相关文件及其链接。您可以通过flashget等软件全部下载它们。下载完成后,您也可以以http方式把服务器上的备份文件删除。 - 备份文件的导入。
导入时的操作相对比较简单。在服务器中运行导出的主文件,文件名为您填写的主文件名+扩展名(.php),然后输入该数据库的配置即可。多文件导出方式导出的文件,依然为多文件导入。
本站下载 faisunsql v4.0 gb2312
faisunsql_v40.rar
本站下载 faisunsql v4.0 utf-8
faisunsql_v40_utf8.rar
php下的utf8解决方案
Friday, April 21st, 20061.my.ini:
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-storage-engine=myisam
在[mysqld]下加入:
default-collation=utf8_bin
init_connect=’set names utf8′
2.在需要做数据库操作的php程序前面加上
mb_internal_encoding(’utf-8′);
3.create table最后边加上engine=myisam default charset=utf8 collate=utf8_bin
4.phpmyadmin/config.inc.php
$cfg['defaultcharset'] = ‘utf-8′;
$cfg['recodingengine'] = ‘iconv’;
5.phpmyadmin/libraries/string.lib.php
将第41行的
mb_internal_encoding($globals['charset']);
改为:mb_internal_encoding(’utf-8′);
6.phpadmin导出数据时
把”二进制区域使用十六进制显示”的勾去掉
Discuz4.1乱码解决方案
Monday, March 27th, 2006我的论坛更换服务器.论坛进行转移.顺便进行了升级.因为服务器用的mysql是4.1(原来安家空间是4.0),而4.1在编译 mysql 时,指定了一个默认的字符集,这个字符集是 utf8;就是这个utf8,因为不是很熟悉mysql,所以在升级的时候给我带来了相当大的麻烦.前后删除重建数据表不下20次. 在这里把我的一些经验之谈写出来,如果你也遇到我同样的情况,就可以少走一些弯路.
mysql4.0–>mysql4.1(默认字符集 utf8) discuz4.0–>discuz4.1
1.首先是论坛转移.
(1)先看看你的论坛的默认字符集是什么.进入你的phpmyadmin,里面有 mysql 连接校对 边上有一个下拉,点最上面的整理,页面会刷新,看看出来的是字符.如果是 utf8_swedish_ci ,说明默认的字符校对就是latin1了,你的情况就和我一样了.如果出来的是gbk_chinese_ci;那么你可以跳过此文.一知道了字符集的类型,就可以开始转移论坛了.
(2)首先新建一个discuz4.0,这时我们可以看到正常的文件.但是将备份的数据库导入后,会发现出来的全部是乱码,满篇都是??? 问题出在那里? 因为新建的discuz用的是 gbk_chinese_ci来和数据库进行连接校对的.新建的数据表的编码也是gbk_chinese_ci. 我们将备份数据导 ,因为备份数据是mysql4.0的,并没有连接校对字符集,所以mysql4.1会自动为倒入的备份数据添加一个默认的字符集,这个字符集是 utf8.如此一来,矛盾就出现了. 前台的编码访问模式是gbk_chinese_ci,而后台的编码模式却是utf8_swedish_ci.就像访问网页时,用utf-8去访问gb2312一样,自然而然的出现了错误.
解决方案:很明显,就是让前台用正确的编码访问模式去访问后台的编码.后台默认的编码是utf8_swedish_ci 我们让前台用utf8_swedish_ci 去访问就是了.打开文件include/db_mysql_class.php,大约在31~34行,有这样的一段代码.
if($this->version() > ‘4.1′ && in_array(strtolower($globals['charset']), array(’gbk’, ‘big5′, ‘utf-8′))) {
//attention: remove the following line if you want to use the default database character set.
mysql_query(”set names ‘”.str_replace(’-', ”, $globals['charset']).”‘”);
}
在”mysql_query(”set names ‘”.str_replace(’-', ”, $globals['charset']).”‘”);”它的意思是让程序用dz定义的字符集去访问mysql(gbk_chinese_ci),在前面加上”"//”将这一行注释掉.程序就会用mysql的默认字符集(utf8_swedish_ci)去访问mysql里面的数据.保存好文件,在后台更新缓存和统计. wowo~ 页面显示正常了. 高兴死了.
以上部份由旺角网络的旺才指点,参考文章 http://www.discuz.net/thread-201676-1-1.html
2.论坛升级.
(1)disucz4.1也是同样设置了用 gbk_chinese_ci 去访问数据的.所以在运行upgrade6.php前同样要先修改程序访问后台的字符集,不然出了错就糗大了.打开文件include/db_mysql_class.php,大约在 31~39行,有下面的代码
if($this->version() > ‘4.1′) {
global $charset, $dbcharset;
if(!$dbcharset && in_array(strtolower($charset), array(’gbk’, ‘big5′, ‘utf-8′))) {
$dbcharset = str_replace(’-', ”, $charset);
}
if($dbcharset) {
mysql_query(”set names ‘$dbcharset’”);
}
}
修改成
if($this->version() > ‘4.1′) {
global $charset, $dbcharset;
if(!$dbcharset && in_array(strtolower($charset), array(’gbk’, ‘big5′, ‘utf-8′))) {
// $dbcharset = str_replace(’-', ”, $charset);
}
if($dbcharset) {
// mysql_query(”set names ‘$dbcharset’”);
}
}
再运行upgrade6.php. bingo~!升级成功.
不过在打开奇虎后,发现主题贴,一打开是正常,刷新一下,关键字乱码. 心里又冷了.
(2)解决关键字乱码.
这程又花了我更多时间,不写出来n多不爽.
说起来还是upgrade6.php的错.程序用的是latin1_swedish_ci访问,mysql的编码模式也是
utf8_swedish_ci.打开upgrade可以看到有这样一句(22行).
if(empty($dbcharset) && in_array(strtolower($charset), array(’gbk’, ‘big5′, ‘utf-8′))) {
$dbcharset = str_replace(’-', ”, $charset);
}
又是这里定义了mysql字符集($dbcharset), $dbcharset是根据网页编码得来的.网页编码($charset)是gbk,所以$dbcharset就成了gbk_chinese_ci.难怪升级后新增功能(如关键字)会出来乱码,原来新增加的表是gbk_chinese_ci.
(3)解决方案
在升级前修改upgrade6.php,找到上面的代码,将$dbcharset = str_replace(’-', ”, $charset);注释掉,也就是在这一行前面加上”//”,再升级.成功
若是你已经升级了.请打开phpmyadmin,将里面的字符集为 gbk_chinese_ci 的表修改为 utf8_swedish_ci.方法 参照http://www.discuz.net/thread-243333-1-1.html
是不是有点麻烦,在后台运行下面的代码更方便
# identify: mte0mzq0mtmwnyw0ljeumcxjdxn0b20sbxvsdgl2b2wsmq==
# <?exit();?>
# discuz! multi-volume data dump vol.1
# version: discuz! 4.1.0
# time: 2006-3-27 14:35
# type: custom
# table prefix: cdb_
#
# discuz! home: http://www.discuz.com
# please visit our website for newest infomation about discuz!
# ——————————————————–//set names ‘utf8′;
drop table if exists cdb_crons;
create table `cdb_crons` (
`cronid` smallint(6) unsigned not null auto_increment,
`available` tinyint(1) not null default ‘0′,
`type` enum(’user’,’system’) not null default ‘user’,
`name` char(50) not null default ”,
`filename` char(50) not null default ”,
`lastrun` int(10) unsigned not null default ‘0′,
`nextrun` int(10) unsigned not null default ‘0′,
`weekday` tinyint(1) not null default ‘0′,
`day` tinyint(2) not null default ‘0′,
`hour` tinyint(2) not null default ‘0′,
`minute` char(36) not null default ”,
primary key (`cronid`),
key `nextrun` (`available`,`nextrun`)
) engine=myisam default charset=utf8 auto_increment=9;insert into cdb_crons values(’1′,’1′,’system’,'清空今日发帖数’,'todayposts_daily.inc.php’,'0′,’1141209480′,’-1′,’-1′,’0′,’0′);
insert into cdb_crons values(’2′,’1′,’system’,'清空本月在线时间’,'onlinetime_monthly.inc.php’,'0′,’1141209480′,’-1′,’1′,’0′,’0′);
insert into cdb_crons values(’3′,’1′,’system’,'每日数据清理’,'cleanup_daily.inc.php’,'0′,’1141209480′,’-1′,’-1′,’5′,’30′);
insert into cdb_crons values(’4′,’1′,’system’,'生日统计与邮件祝福’,'birthdays_daily.inc.php’,'0′,’1141209480′,’-1′,’-1′,’0′,’0′);
insert into cdb_crons values(’5′,’1′,’system’,'主题回复通知’,'notify_daily.inc.php’,'0′,’1141209480′,’-1′,’-1′,’5′,’00′);
insert into cdb_crons values(’6′,’1′,’system’,'每日公告清理’,'announcements_daily.inc.php’,'0′,’1141209480′,’-1′,’-1′,’0′,’0′);
insert into cdb_crons values(’7′,’1′,’system’,'限时操作清理’,'threadexpiries_daily.inc.php’,'0′,’1141209480′,’-1′,’-1′,’5′,’0′);
insert into cdb_crons values(’8′,’1′,’system’,'论坛推广清理’,'promotions_hourly.inc.php’,'0′,’1141209480′,’-1′,’-1′,’0′,’00′);drop table if exists cdb_modworks;
create table `cdb_modworks` (
`uid` mediumint(8) unsigned not null default ‘0′,
`modaction` char(3) not null default ”,
`dateline` date not null default ‘2006-01-01′,
`count` smallint(6) unsigned not null default ‘0′,
`posts` smallint(6) unsigned not null default ‘0′,
key `uid` (`uid`,`dateline`)
) engine=myisam default charset=utf8;drop table if exists cdb_pluginhooks;
create table `cdb_pluginhooks` (
`pluginhookid` mediumint(8) unsigned not null auto_increment,
`pluginid` smallint(6) unsigned not null default ‘0′,
`available` tinyint(1) not null default ‘0′,
`title` varchar(255) not null default ”,
`description` mediumtext not null,
`code` mediumtext not null,
primary key (`pluginhookid`),
key `pluginid` (`pluginid`),
key `available` (`available`)
) engine=myisam default charset=utf8 auto_increment=1;drop table if exists cdb_pmsearchindex;
create table `cdb_pmsearchindex` (
`searchid` int(10) unsigned not null auto_increment,
`keywords` varchar(255) not null default ”,
`searchstring` varchar(255) not null default ”,
`uid` mediumint(8) unsigned not null default ‘0′,
`dateline` int(10) unsigned not null default ‘0′,
`expiration` int(10) unsigned not null default ‘0′,
`pms` smallint(6) unsigned not null default ‘0′,
`pmids` text not null,
primary key (`searchid`)
) engine=myisam default charset=utf8 auto_increment=1;drop table if exists cdb_promotions;
create table `cdb_promotions` (
`ip` char(15) not null default ”,
`uid` mediumint(8) not null default ‘0′,
`username` char(15) not null default ”,
primary key (`ip`)
) engine=myisam default charset=utf8;drop table if exists cdb_relatedthreads;
create table `cdb_relatedthreads` (
`tid` mediumint(8) not null default ‘0′,
`expiration` int(10) not null default ‘0′,
`keywords` varchar(255) not null default ”,
`relatedthreads` text not null,
primary key (`tid`)
) engine=myisam default charset=utf8;
ok 就么多了. 以上文字针对mysql4.1 且默认字符集为latin1.如果是其他字符集请酌情修改(gbk不在本文讨论范围) 本人水平有限,有出错的地方还请高手指教.写出来不容易,若转载请保留言署名.
by freeher@im286 http://bearlet.com qq 35645368