新旧服务器都是windows 2003 的系统旧服务器的mysql版本是5.0.2x,这个之前不知道是谁装的,不是完全按默认路径安装的(比如数据文件是在一个叫mysqldata的目录下,而innodb的数据文件ibdata1又是在一个叫database的目录下),另外做了哪些特殊设置我也不是很清楚新服务器上的mysql版本是5.0.5x,里是空的,都是按照默认目录结构安装的
mysql里的表只有myisam,innodb,memory三种,其中memory表是discuz论坛这样的程序创建的,我试过,转这样的论坛程序的时候,直接把文件拷贝到另一个mysql里是没有问题的
现在我想
把新服务器上mysql停掉,然后把旧服务器上的mysqldata里的所有数据库目录都复制到新服务器的mysql\data里,把旧服务器上的ibdata1文件也复制到新服务器的mysql\data里,然后运行服务
这样的话是不是就可以了呢,会不会有什么问题
要不要运行什么升级程序呢

解决方案 »

  1.   

    备份数据库
    mysqldump -uuser -p*** dbname > bakfile.db还原数据库
    mysql -uuser -p** dbname < bakfile.db
      

  2.   

    里面的数据库有很多,所以不想用导入导出的方法来做而且,有的时候,mysqldump出来的东西再导回去,好像有问题
      

  3.   

    5.0.2x 到 5.0.5x 如果你把 datadir 目录完全复制,应该是可以的,不过MYSQL并不保证。所以稳妥的方法还是按照一楼 josy(百年树人)  的方法用 mysqldump 逻辑导出。目前还没听说过。 (有时有些网友会碰到由于错误的字符集设置而导致的问题)
      

  4.   

    我真的遇到好几次有问题的,有的时候问题还很奇怪比如遇到过两次,导入的时候提示没有操作表的权限,但是建数据库的时候,其实设置是完全一样的,最后,我把数据库删除还是按第一次的方法重建,就又能正常导入了还有一次,[mysqld]和[client]字符集设置为GBK,里面一个数据库的表的字符集是latin1,内容是韩文,用默认的mysqldump不加任何参数导出是????号,也就是数据丢失了
    我弄了好几次,最后才正常导到另一个mysql里如果批量弄的话,用同一个命令,如果遇到这样的数据库,怎么办才好呢
    另外5.0.2x 到 5.0.5x 要不要运行mysql_upgrade之类的操作,会不会遇到
    Your privilege table structure seems to be older than this MySQL version
    这类的错误呢
      

  5.   

    myisam表可以直接复制文件过去就可以了,其他的如果不可以,先放到如acess表或者excel表中中转一下就可以了
      

  6.   

    如果版本一样:
    myisam 直接拷贝是没什么问题的
    innodb 直接拷贝也没什么大问题
    但要保证两台的my.cnf中的大部分参数一致,除了数据库路径参数不一致外,其他参数最好一致,特别是innodb,如果象buffersize参数不一致, 就无法工作.
      

  7.   

    我看过了,我要转的mysql里面大部分是myisam,用到innodb的只有几个,还有一些是memory类型的表直接复制应该没什么问题,最多就是用到innodb的再用命令导楼上说的buffersize具体是哪个参数呢,我的my.ini里好像没有啊,是不是没有就是默认设置
    另外,像这样的参数还有哪些是转数据库时要注意的呢
      

  8.   

    。之前为了省事,都是用了一个安装版的mysql套件,就一个EXE文件,都不知道安装的时候它做了什么
      

  9.   

    对了,mysql是系统数据库如果我替换的时候,把旧的上面的叫mysql这个数据库里的文件也替换到新的上面去,会发生什么呢
      

  10.   

    mysql 是权限等数据库等管理mysql信息的表包括权限 用户 函数 event 替换新的那么用户等也是新的
      

  11.   


    好像原来的真的不是用的默认设置,原来的是复制的mysql下的my-medium.ini这个里的配置
    比默认安装后的my.ini多了很多设置比如skip-locking
    key_buffer = 16M
    max_allowed_packet = 1M
    sort_buffer_size = 512K
    net_buffer_length = 8K
    read_buffer_size = 256K
    read_rnd_buffer_size = 512K
    myisam_sort_buffer_size = 8M
    max_connections = 1000
    table_cache = 256
    thread_cache_size = 8和[mysqldump]
    quick
    max_allowed_packet = 16M[mysql]
    no-auto-rehash
    # Remove the next comment character if you are not familiar with SQL
    #safe-updates[isamchk]
    key_buffer = 20M
    sort_buffer_size = 20M
    read_buffer = 2M
    write_buffer = 2M[myisamchk]
    key_buffer = 20M
    sort_buffer_size = 20M
    read_buffer = 2M
    write_buffer = 2M[mysqlhotcopy]
    interactive-timeout这些参数,在不写的时候默认值是多少呢,不一致的话,转移的时候会不会出什么问题呢
      

  12.   

    以上参数改变无所谓要考虑的是以下innodb参数,因为innodb的数据文件由ibdata?的数据文件和log文件组成,如果描述这些文件的参数一改变,另一台电脑就不认得。
    innodb_data_file_path=ibdata1:10M:autoextend  里面的filesize
    innodb_log_file_size涉及MYISAM的参数:
    lower-case-table-names  表名大小写问题,特别是windows拷贝到linux时,要特别注意。
      

  13.   

    innodb_data_file_path这个在两边的mysql里好像都没有指定原来的my.ini里指定了这些
    innodb_buffer_pool_size=8M
    innodb_log_file_size=10M
    innodb_log_buffer_size=1M
    innodb_additional_mem_pool_size=2M要换的上面没有指定应该是可以的吧,因为两边都只有ibdata1文件,我试过把这个文件替换进去,然后把innodb的数据库放过去,重启以后是能读到数据的,是不是这样基本就没有问题