• mysql升级小结和mysql_upgrade的用途


    http://blog.itpub.net/15480802/viewspace-1412259/

    mysql升级

    升级方式

    分为In-place和out-of-place,前者直接覆盖当前版本,后者在新路径安装然后加载数据库;

    升级不可跳级,即5.1要想升级成5.6,必须先升级到5.5;

    注:oracle的out-of-place upgrade采用新binary直接加载原数据文件,而mysql需要导出--导入数据;

    2 大致步骤

    1 备份

    2 升级

    3 mysql_upgrade检查不兼容的表,更新grant表;

    5.5升级5.6

    1 备份  mysqldump –all-databases –routines - events

    2 升级前,检查表和索引是否兼容http://dev.mysql.com/doc/refman/5.6/en/checking-table-incompatibilities.html

    3 升级后调用mysql_upgrade,

    注:对于大数据库,in-place upgrade可能要花费很长时间进行数据转换,对此可以创建一个dummy实例:包含mysql数据库和其他数据库的结构(不含数据),升级dummy并查看可能遇到的问题;

    5.6很多参数的默认值都做了调整,详细可参考http://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html

    3 mysql_upgrade

    本质上为一个封装了mysqlcheck命令的脚本,流程如下:

    1 mysqlcheck --no-defaults --databases --fix-db-names --fix-table-names mysql
    2 mysqlcheck --no-defaults --check-upgrade --databases --auto-repair mysql
    3 mysql < fix_priv_tables
    4 mysqlcheck --no-defaults --all-databases --skip-database=mysql --fix-db-names --fix-table-names
    5 mysqlcheck --no-defaults --check-upgrade --all-databases --skip-database=mysql --auto-repair

    执行完毕后在数据目录生成mysql_upgrade_info文件,记录检查过的表,下次再调用时可以跳过;

    执行步骤

    1检查所有数据表同当前binary的兼容性,若不兼容则尝试修复,修复失败则必须手工执行;

    手工修复:mysqldump重新加载或者null alternation(alter table t engine=innodb);

    如果仅仅是修改表的collation,则可调用ALTER TABLE t1 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_mysql500_ci;

    2升级mysql系统表;

    调用mysql_upgrade后,需要重启mysql才能让系统表更新生效;

    如果单机运行了多个mysql实例,则指定连接参数

    shell>mysql_upgrade --protocol=tcp -P 3306 [other_options]
    shell>mysql_upgrade --protocol=tcp -P 3307 [other_options]

    输出结果

    Table upgrade required.

    Please do "REPAIR TABLE `tbl_name`" or dump/reload to fix it!

    4 Tip

    1 可备份old mysqld,如果new mysqld运行出错可迅速切换;

    2对于GA(general availability)版本间的升级,同一架构下的系统可以在两个版本间copy  mysql format file和数据文件;

    3 不要使用old my.cnf,mysqld –print-defaults检查;

    4重新安装perl DBD::mysql,以及PHP和Python相应的驱动包;

    升级replication

    同oracle一样,mysql支持low master – high slave复制模式(部分sql可能会出现错误),顺序颠倒过来则可能遭遇一系列错误(比如binlog不兼容/),因此升级master前须先升级slave;

    对于需要重建表或索引的操作(collation变化需要重建index),最安全的办法是各自在master/slave单独执行期间(禁用replication);

    1 关闭slave并升级,以—skip-slave-start选项启动,执行重建

    2 master禁用binlog,执行重建

    3 恢复原来设置,slave正常连接master

    注:GTID=on会导致更新mysql系统表(myisam)失败,http://dev.mysql.com/doc/refman/5.6/en/mysql-upgrade.html

  • 相关阅读:
    Loadrunner 9.5_webservice(SOAP)性能测试
    oracle分层查询中的start with和connect by(树结构查询)
    解析Nginx负载均衡
    Nginx+tomcat配置集群负载均衡
    基于Nginx反向代理及负载均衡
    什么是反向代理,如何区别反向与正向代理
    软件测试策略
    软件测试策略的制定过程
    php 模拟get和post提交方法[解决ajax跨域问题]
    解决ajax跨域问题的多种方法
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5678054.html
Copyright © 2020-2023  润新知