快乐学习
前程无忧、中华英才非你莫属!

Day41-MySQL升级方案

前言

因为随着mysql版本更新越来越快,打破MySQL本身的瓶颈,只能更新版本!这并不是一件轻松的事,尤其是需要升级的这个mysql5.1/5.5数据库还是一个线上运行且负载较重的业务数据库的时候。该数据库的数据目录中各种业务表加起来近之几十TB大,甚至有媲美互联网公司的PB级别的数据,甚至更大,整体集群升级更不是闹着玩的!在源服务器做就地升级操作,紧张程度也是不可避免的!

所以一定要在单个节点的从库上进行模拟测试,确保万无一失!

并且保证有最新的从库,如果主库升级失败可以很快的切换到从库而不影响业务的处理!

案例:5.5.28   —》成功升级5.6.36

官方建议5.5升级到5.6最稳妥的办法是:  mysqldump。但是面临TB级别数据,就非常耗时了!如果有升级时间,mysqldump就是最佳的逻辑策略!

彻底删除干净mysql5.5 全新安装5.6 然后逻辑进行导入5.6 这样就不会造成任何不兼容等问题!但是比较消耗时间!

所以我为大家总结一款需要快速升级MySQL数据库升级方案:

直接yum进行升级!

执行就地升级:

1、确保数据文件在发布之间的文件格式不同的情况下完全准备好。

mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"

2、正确姿势关闭MySQL

service mysqld stop;

3、 添加MySQL的yum安装库

# wget http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
# rpm -ivh mysql-community-release-el6-5.noarch.rpm
# yum list | grep mysql

这样很多更新的MySQL安装包就都有了。

如有必要,运行下面的命令确保yum安装库是最新的:

# yum update mysql-community-release

4、用yum查看MySQL安装相关信息

# yum list installed | grep ^mysql
mysql-community-release.noarch

其中,^mysql是指以mysql开头的安装包。

用下面的命令查看安装了的和可用的安装包:

# yum info mysql-server

这里不知道为啥可用的安装包没有显示MySQL 5.6的。

5、检查可用的安装包:

# yum check-update mysql-server

6、升级MySQL及其组件

# yum update mysql-server

7、启动MySQL服务

# service mysqld start

8、 升级MySQL数据库及表

[root@master local]# mysql_upgrade -uroot -pzhangtongle123
Warning: Using a password on the command line interface can be insecure.
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/data/mysql/mysql.sock'
Warning: Using a password on the command line interface can be insecure.
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/data/mysql/mysql.sock'
Warning: Using a password on the command line interface can be insecure.
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.proxies_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
Running 'mysql_fix_privilege_tables'...
Warning: Using a password on the command line interface can be insecure.
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/data/mysql/mysql.sock'
Warning: Using a password on the command line interface can be insecure.
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/data/mysql/mysql.sock'
Warning: Using a password on the command line interface can be insecure.
maxscale_schema.replication_heartbeat              OK
mydb3.checksums                                    OK
mydb3.employee                                     OK
mydb3.my_hash_0                                    OK
mydb3.my_hash_1                                    OK
mydb3.my_list_0                                    OK
mydb3.my_list_1                                    OK
mydb3.my_range_0                                   OK
mydb3.my_range_1                                   OK
OK

经过简单测试:重启之后,进行mysql的创建用户,配置权限,执行curd,创建视图,索引等操作,无任何异常,就可以大面积开始集群升级了!

总结:因为这个我的数据库没有大量与5.6不兼容的数据,所以升级很顺利。

          操作步骤就是关停mysql服务,一个yum命令搞定!

          这种yum的风险应该很大,很容易破坏数据结构和目录,以及mysql_upgrade 执行失败的结果!

          因为我们是5.5和5.6版本挨着很近,并且没有大量不兼容数据所以升级很顺利!

          如果版本离着很远,有大量不兼容性数据,应该慎重考虑升级策略,并进行大量的备机升级测试和验证,万无一失之后在进行集群性的全面升级~

          小小的失误,会导致不可挽回的悲剧,切记切记!

          

    

         

        

打赏

未经允许不得转载:同乐学堂 » Day41-MySQL升级方案

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

特别的技术,给特别的你!

联系QQ:1071235258QQ群:226134712
error: Sorry,暂时内容不可复制!