• Mysql5.1升级Mysql5.5操作步骤及注意事项
  • mysql5.1 升级 mysql5.5

    一、 mysql5.5最显著的新特性

    1. MySQL5.5默认存储引擎改为InnoDB plugin1.1.X),而不是传统的Myisam引擎。

    Mysql5.1里Innodb文件格式是built-in,而在Mysql5.1里,其文件格式要调整为Barracuda。

    innodb_file_format = Barracuda

    2. 充分利用CPU多核的处理能力。

    主要表现在:可以调整

    innodb_read_io_threads = 8
    innodb_write_io_threads = 8

    读、写请求的后台线程数。

    而在mysql5.1innodb_file_io_threads这个参数是4,在LINUX系统下是不能调整的。

    3. 提高刷新脏页数量和合并插入数量,改善磁盘IO处理能力。

    mysql5.1里,由于代码写死,最多只会刷新100个脏页到磁盘,合并20个插入缓冲,即使磁盘有能力处理更多的请求,也只会处理这么多。而在mysql5.5里,innodb_io_capacity参数可以动态调整刷新脏页的数量。

    4. 加快了InnoDB的数据恢复时间。

    mysql5.1里,主机OS崩溃、硬件故障,InnoDB自己的恢复时间会很长(这依赖于Buffer Pool、脏页面比例、TPS等因素)。而在mysql5.5里,InnoDB plugin 1.1.x恢复时采用红-黑树技术,加快了InnoDB的数据恢复时间,这也就意味着以后redo log可以顶着4G用了(Percona可以超过4G),这样可以在很大程度上降低IO需求、从而极大地提高InnoDB的写性能。

    http://tech.it168.com/a2010/0804/1086/000001086399.shtml

    5. 复制功能(Replication)加强。

    GOOGLE写的代码,在MYSQL5.5里,增加了进去,半同步复制功能。保证master上的binlog发送到SLAVE里,减少了数据丢失的风险。

    一个参数rpl_semi_sync_master_timeout=1000(动态可调),表示主库在某次事务中,如果等待时间超过1000毫秒,那么则降级为异步复制模式,不再等待备库。如果主库再次探测到,备库恢复了,则会自动再次回到半同步复制模式。

    6. 更多的新特性,可参考官方的Whats_New_in_MySQL55_zh.pdf

    二、 mysql5.5升级步骤

    1. my.cnf参数的更改:

    #skip-locking 5.5里已经不识别了,改成
    skip-external-locking


    #log-long-format 5.5里已经不识别了,改成
    log-short-format


    #log_slow_queries 5.5里已经不识别了,改成
    slow-query-log


    #default-character-set = utf8 5.5里已经不识别了,改成
    character-set-server = utf8

    #注释掉default_table_type = MyISAM 5.5里已经不识别了。

    #注释掉myisam_max_extra_sort_file_size 5.5里已经不识别了。

    #innodb_file_io_threads已经不识别了,改成
    innodb_read_io_threads = 8
    innodb_write_io_threads = 8


    # 提高刷新脏页数量和合并插入数量,改善磁盘IO处理能力。

    innodb_io_capacity = 2000


    # 把以前的built-in文件格式改为Barracuda

    innodb_file_format = Barracuda

    # 脏页的调整,从以前的25改为90

    innodb_max_dirty_pages_pct = 90

    # 事务日志redo log的调整,从以前的256M改为1024M

    innodb_log_file_size = 1024

    # 采用独立表空间

    innodb_file_per_table = 1

    #注释掉同步的信息,否则启动报错。

    #master-host = 192.168.110.20

    #master-user = repl

    #master-password = repl

    #master-connect-retry=30

    # 增加半同步配置
    rpl_semi_sync_master_enabled = 1
    rpl_semi_sync_master_timeout = 1000
    rpl_semi_sync_slave_enabled = 1

    performance_schema

    performance_schema_events_waits_history_size=100

    performance_schema_events_waits_history_long_size=30000

    2. 升级步骤

    参考官网文档:

    http://dev.mysql.com/doc/refman/5.5/en/upgrading-from-previous-series.html

    mysql> show variables like '%fast%';

    +----------------------+-------+

    | Variable_name | Value |

    +----------------------+-------+

    | innodb_fast_shutdown | 1 |

    +----------------------+-------+

    1 row in set (0.00 sec)

    mysql> set global innodb_fast_shutdown=0;

    Query OK, 0 rows affected (0.00 sec)

    第一步:

    /etc/init.d/mysql stop

    第二步:

    cd /usr/local/

    unlink mysql

    ln -s /home/mysql/mysql-advanced-5.5.20 /usr/local/mysql

    # 重新建立软链接。

    第三步:

    /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --skip-grant-tables &

    第四步:执行更新程序

    [root@vm02 mysql]# /usr/local/mysql/bin/mysql_upgrade

    Looking for 'mysql' as: bin/mysql

    Looking for 'mysqlcheck' as: bin/mysqlcheck

    Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/tmp/mysql.sock'

    Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/tmp/mysql.sock'

    mysql.columns_priv OK

    mysql.db OK

    mysql.event OK

    mysql.func OK

    mysql.general_log OK

    mysql.help_category OK

    mysql.help_keyword OK

    mysql.help_relation OK

    mysql.help_topic OK

    mysql.host OK

    mysql.ndb_binlog_index OK

    mysql.plugin OK

    mysql.proc OK

    mysql.procs_priv OK

    mysql.servers OK

    mysql.slow_log OK

    mysql.tables_priv OK

    mysql.time_zone OK

    mysql.time_zone_leap_second OK

    mysql.time_zone_name OK

    mysql.time_zone_transition OK

    mysql.time_zone_transition_type OK

    mysql.user OK

    test.heartbeat OK

    test.log20111127 OK

    test.log20111128 OK

    test.log20111129 OK

    test.log20111130 OK

    test.log20111201 OK

    test.log20111202 OK

    test.log20111203 OK

    test.log20111204 OK

    test.log20111205 OK

    test.log20111206 OK

    test.log20111207 OK

    test.t1 OK

    test.t2 OK

    Running 'mysql_fix_privilege_tables'...

    OK

    第五步:

    /usr/local/mysql/bin/mysqladmin shutdown

    第六步:

    /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

    mysql> select version();

    +-------------------------------------------+

    | version() |

    +-------------------------------------------+

    | 5.5.20-enterprise-commercial-advanced-log |

    +-------------------------------------------+

    1 row in set (0.00 sec)

    mysql> select @@innodb_version;

    +------------------+

    | @@innodb_version |

    +------------------+

    | 1.1.8 |

    +------------------+

    1 row in set (0.00 sec)

    第七步:

    # 加载半同步复制模块

    mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';

    mysql> SET GLOBAL rpl_semi_sync_master_enabled=ON;

    mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

    mysql> SET GLOBAL rpl_semi_sync_slave_enabled =ON;

    第一次执行完后,就无需再执行了。

    至此,升级过程完毕。

    3. 遇到的问题

    RHEL5.3MYSQL5.5时出现系统崩溃

    系统是RHEL5.3,64,XFS分区,物理内存16G,BUFFER_POOL设置为11GDELL 2950

    MYSQL5.5.20 二进制版本

    在初始化时,系统崩了,之前在JF上甚至INNODB_BUFFER_POOL_SITE改为了4G,依然崩溃。

    (群组均16G内存,BUFFER_POOL均是给了11G

    查看/var/log/message,没有记载任何日志。

    XFS文件系统在读写时,出现报错。

    RHEL5.3系统内核不自带XFS文件系统,是通过往内核打补丁使之支持,后把系统升级为RHEL5.5,系统正常了,没有出现死机情况。

    注:RHEL5.5版本开始,内核支持XFS文件系统。



    上一篇后台面板导入Mysql数据库时不成功的原因

    下一篇暂时没有了,抱歉!

    2016 迅捷格言:事在人为 莫道万般皆无奈;境由心造 后退一步万事宽! 有事您说话,小捷很乐意帮助您!