日期:2014-05-16  浏览次数:20493 次

一次数据库升级过程 mysql5.0.78 到 5.1.57
1. 停数据库,备份数据(备份物理文件)
2. 将新版本mysql的数据目录指向到旧目录(datadir)
3. 启动mysqld时使用skip grant tables 参数避开系统检查,
# 例如
/usr/local/mysql/bin/mysqld --datadir=/var/data/ --user=mysql --skip-grant-tables &
4. 执行mysql_upgrade,这时应该就会顺利进行下来了
或者只升级授权表,mysql_fix_privilege_tables(推荐) 或 mysql_fix_privilege_tables.sql 脚本执行
5. 停止mysqld
6. 按照原来的my.cnf运行正常服务(这一步失败很可能由于参数不兼容引起,比如bdb相关的所有参数5.1开始都不再支持,总之这一步很容易处理)
7. 检查表有没有问题,比如执行mysqlcheck --all-databases 等等



[size=medium]原版本:5.0.72
升级版本:5.1.57
一、 数据库安装mysql5.1.57 版本(预先安装好)
编译时需要把innodb_plugin 编译进去

./configure  --prefix=/usr/local/webserver/mysql5.1.57 --with-extra-charsets=all --with-plugins=partition,blackhole,csv,heap,innobase,myisam,myisammrg,innodb_plugin --with-mysqld-user=mysql --with-big-tables --without-debug --with-client-ldflags=-all-static --enable-assembler --with-pthread --enable-thread-safe-client --with-unix-socket-path=/usr/local/webserver/mysql5.1.57/mysql.sock

make
make install


[root@192_168_9_78 data]# mkdir /data/mysql5.1.57
[root@192_168_9_78 data]# mkdir /data/mysql5.1.57/data
[root@192_168_9_78 data]# mkdir /data/mysql5.1.57/logs
[root@192_168_9_78 data]# mkdir /data/mysql5.1.57/innodb_data
[root@192_168_9_78 data]# chown mysql.mysql -R /data/mysql5.1.57/

[root@192_168_9_78 mysql-5.1.57]# cd /usr/local/webserver/mysql5.1.57/
[root@192_168_9_78 webserver]# chown mysql.mysql -R mysql5.1.57/
[root@192_168_9_78 mysql5.1.57]# bin/mysql_install_db  --basedir=/usr/local/webserver/mysql5.1.57 --datadir=/data/mysql5.1.57/data --user=mysql

[root@192_168_9_78 mysql5.1.57]# ll /data/mysql5.1.57/data/
[root@192_168_9_78 mysql5.1.57]# cp share/mysql/my-large.cnf  my.cnf
[root@192_168_9_78 mysql5.1.57]# chown mysql.mysql my.cnf 
[root@192_168_9_78 mysql5.1.57]# chown mysql.mysql -R /data/mysql5.1.57/

/usr/local/webserver/mysql5.1.57/bin/mysqld_safe  --defaults-file=/usr/local/webserver/mysql5.1.57/my.cnf


二、 修改配置文件
1. 按现有my.cnf文件主要参数修改
2. 打开innodb plugin
#屏蔽默认innodb
ignore-builtin-innodb
plugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.so

innodb_file_per_table=1
innodb_file_format=barracuda
innodb_strict_mode=1

#并根据服务器配置修改下面几个配置
innodb_flush_log_at_trx_commit=2
innodb_buffer_pool_size=1G
innodb_log_file_size=100M
三、 数据迁移过程
停止老版本mysql
拷贝物理文件到新数据库目录(mysql servant_591up)20分钟左右
Mysqldump导出 innodb表数据(ol_checkout ol_checkoutcount ol_originconversion ol_originlog) 共四张表
启动新mysql,升级权限表。执行mysql_fix_privilege_tables(推荐) 或 mysql_fix_privilege_tables.sql 脚本执行
导入innodb 表备份文件

可以先准备好的
1. 安装好新数据库
2. 准备好dump innodb表的脚本
[/size]
1 楼 cocos 2011-06-13  
MySQL ERROR] Plugin 'InnoDB' init function returned error.

  启动mysql时,报错:
           InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
           InnoDB: than specified in the .cnf file 0 104857600 bytes!
          110408  4:17:59 [ERROR] Plugin 'InnoDB' init function returned error.
          110408  4:17:59 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

解决:删除 ./ib_logfile0