本周六在服务器上的操作
[文章作者:叶歆昊 最后修改:2010-07-18 转载请注明原文链接:http://littz.com/server-operation-saturday.html]
一、尝试升级MySQL服务器
当前学生之家服务器使用的数据库为MySQL 4.0,尝试升级到5.1版本,从4.1版本开始,MySQL就支持不同的字符集,而不再是以前只支持Latin1的,所以新版本在解决中文编码问题上很有效果。
过程:
1、备份
2008-05-17 19:30,备份现有数据库文件。使用mysqldump,phpmyadmin导出SQL数据表,并直接复制一个MySQL文件夹,多次备份,并且数据库程序部分和数据库数据部分同时备份,以便升级不成功时恢复。
mysqldump备份方法
mysqldump -uyour_name -pyour_password abc>E:\bak\oldabc.sql
以上适用于MySQL4.0的备份,如果是4.1以上版本,则需加入 default-character-set=gbk 这个参数
phpmyadmin的备份方法,直接导出就可以。
2、数据库程序升级
使用cd命令进入原来的mysql bin文件夹,并卸载原服务,例如
cd \mysql\bin\ mysqld-nt -remove
并删除原目录下的所有文件
下载新版mysql的zip压缩包,解压覆盖原位置安装
mysqld-nt -install
至此MySQL5.1版本已经安装完成,添加到系统服务中,可以在服务中尝试启动MySQL
net start mysql
注:我在安装的过程中由于移动了文件夹位置,所以安装完成后启动MySQL服务时提示1067错误,解决办法如下,找到C:\Windows\my.ini文件,修改它(如果不存在这个文件则用记事本新建一个)
[mysqld] # set basedir to installation path, e.g., c:/mysql # 设置为MYSQL的安装目录 basedir=D:/www/WebServer/MySQL # set datadir to location of data directory, # e.g., c:/mysql/data or d:/mydata/data # 设置为MYSQL的数据目录 datadir=D:/www/WebServer/MySQL/data #另外,要主意 [WinMySQLadmin] Server=D:/www/WebServer/MySQL/bin/mysqld-nt.exe user=root password=xxxxxxxx #以上是设置WinMySQLadmin的配置 [Client] user=root password=xxxxxxxx
1067错误解决
3、数据恢复,由于在数据库升级的过程中同时更改MySQL的字符集,所以无法使用自动升级方式,只有先备份数据文件,再升级恢复。
拷贝phpmyadmin或者mysqldump得到的sql到有Linux系统的电脑中。运行如下命令把sql文件编码方式转码
iconv -f gbk -t utf-8 -c old.sql>new.sql
修改sql文件为mysql5.1格式,使用linux下gedit或者其他文本编辑器查找替换
若sql文件中存在creat database指令,则在后面加上 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
把所有的TYPE=MyISAM 替换为 ENGINE=MyISAM DEFAULT CHARSET=utf8
创建相关的数据库名(若导出的sql文件中存在creat database指令则不需要手动创建数据库)
mysql -uyour_name -pyour_password CREATE DATABASE `abc` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
数据库导入
mysql --default-character-set=utf8 -uyour_name -pyour_password abc
到此为止,MySQL数据库升级完毕,并且在mysql命令行和phpmyadmin下查看数据文件正常,utf8_unicode_ci整理。
不过可能由于学生之家JAVA程序的问题,升级数据后导致JSP页面一直无法连接上数据库,访问提示javanullpoint错误。但是如果新建一个test.jsp测试数据库连接则能正常显示。
2008-05-17 22:40,折腾几个小时后,宣布升级失败,恢复数据库版本到4.0,所有更改全部撤销,改日再尝试。