项目05(Mysql升级02就地升级(In-Place Upgrade))

背景

《承接上文,项目05(Mysql升级01)》,上文中涉及的就地升级(In-Place Upgrade),虽不是推荐方式,但也有其使用场景,我们一起来讨论一下。

写在前面

需要(考虑)检查和测试的层面很多,不限于以下内容。

逻辑升级Logical Upgrade
mysqldump:数据少,大版本之间

就地升级(In-Place Upgrade)
数据多,小版本之间

思路是先升级从库,切换,然后从,接替业务,主再升级

在实际的升级过程中很少会用到上面这两种方法,特别是第二种;
通常都是通过部署一个新从库来完成升级的(主库老版本,从库目标版本),这样的话只需要在切换的时候停下机就行了。(推荐这种方式,设计方案是也可以考虑使用数据同步工具,阿里开源的Canal为例,可参考之前博客的上云项目中otter的信息)

实际很少用,不妨碍我们学习哈,万一用上了呢

环境

之前的Mysql5.0.95主从,从库升级到了5.1.73(逻辑升级)

下面是主库升级到5.1.73的过程(就地升级)

就地升级 In-Place

建议使用时,实时观察错误日志,tailf /usr/local/mysql5.1.73/data/mysql5.1.73-error.log

以下内容可参考之间文章理解意思,或者留言。这里只做简单注释
1.新环境变量
PATH=$PATH:/usr/local/mysql5.1.73/bin

2.复制就数据目录到新版本目录中:(注意前者是一些文件,后者是目录。也就是把date目录复制过来了)
(备份旧数据目录,防止升级失败。有备无患嘛)
cp -rp mysql5.0.95/data/ mysql5.1.73/

3.以下文件中的路径要更新为新的路径和名称:
修改/etc/my.cnf的basedir到新目录,关闭gtid(如果有,>5.6版本)
/etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld5.1.73

4.
需要使用/etc/init.d/mysql5.1.73 start
 (注意,下面这个启动命令不行(存在sockt找不到问题))
/usr/local/mysql5.1.73/bin/mysqld --user=mysql --datadir=/usr/local/mysql5.1.73/data --defaults-file=/etc/my.cnf &
5.
另起一个终端:
ps -ef|grep mysql 
6.升级
/usr/local/mysql5.1.73/bin/mysql_upgrade -uroot -p
报错内容:(就地升级的弊端)
error    : Table upgrade required. Please do "REPAIR TABLE `help_category`" or dump/reload to fix it!
mysql.help_keyword
error    : Table upgrade required. Please do "REPAIR TABLE `help_keyword`" or dump/reload to fix it!
mysql.help_relation                                OK
mysql.help_topic
error    : Table upgrade required. Please do "REPAIR TABLE `help_topic`" or dump/reload to fix it!
mysql.host                                         OK
mysql.proc
error    : Table upgrade required. Please do "REPAIR TABLE `proc`" or dump/reload to fix it!
mysql.procs_priv
error    : Table upgrade required. Please do "REPAIR TABLE `procs_priv`" or dump/reload to fix it!
7.进入数据库修复:
(root@localhost:mysql  02:33)>REPAIR TABLE `help_category`;
+---------------------+--------+----------+----------+
| Table               | Op     | Msg_type | Msg_text |
+---------------------+--------+----------+----------+
| mysql.help_category | repair | status   | OK       |
+---------------------+--------+----------+----------+
1 row in set (0.00 sec)

(root@localhost:mysql  02:33)>REPAIR TABLE `help_keyword`
    -> ;
+--------------------+--------+----------+----------+
| Table              | Op     | Msg_type | Msg_text |
+--------------------+--------+----------+----------+
| mysql.help_keyword | repair | status   | OK       |
+--------------------+--------+----------+----------+
1 row in set (0.01 sec)

(root@localhost:mysql  02:33)>REPAIR TABLE `help_topic`;
+------------------+--------+----------+----------+
| Table            | Op     | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| mysql.help_topic | repair | status   | OK       |
+------------------+--------+----------+----------+
1 row in set (0.00 sec)

(root@localhost:mysql  02:33)>REPAIR TABLE `proc`;
+------------+--------+----------+----------+
| Table      | Op     | Msg_type | Msg_text |
+------------+--------+----------+----------+
| mysql.proc | repair | status   | OK       |
+------------+--------+----------+----------+
1 row in set (0.01 sec)

(root@localhost:mysql  02:33)>REPAIR TABLE `procs_priv`;
+------------------+--------+----------+----------+
| Table            | Op     | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| mysql.procs_priv | repair | status   | OK       |
+------------------+--------+----------+----------+

8.建议进行重启,以便应用更改。
/etc/init.d/mysql5.1.73 stop
/etc/init.d/mysql5.1.73 start
这是再次执行升级命令的日志输出(读者可以不执行,为的是看下上面的5张表修复了吗)
执行mysql_upgrade之后的日志信息:/usr/local/mysql5.1.73/bin/mysql_upgrade -uroot -p --force
210205 14:41:37 [Warning] Statement may not be safe to log in statement format. Statement: ALTER TABLE general_log
   MODIFY event_time TIMESTAMP NOT NULL,
   MODIFY user_host MEDIUMTEXT NOT NULL,
   MODIFY thread_id INTEGER NOT NULL,
   MODIFY server_id INTEGER UNSIGNED NOT NULL,
   MODIFY command_type VARCHAR(64) NOT NULL,
   MODIFY argument MEDIUMTEXT NOT NULL
210205 14:41:37 [Warning] Statement may not be safe to log in statement format. Statement: ALTER TABLE slow_log
   MODIFY start_time TIMESTAMP NOT NULL,
   MODIFY user_host MEDIUMTEXT NOT NULL,
   MODIFY query_time TIME NOT NULL,
   MODIFY lock_time TIME NOT NULL,
   MODIFY rows_sent INTEGER NOT NULL,
   MODIFY rows_examined INTEGER NOT NULL,
   MODIFY db VARCHAR(512) NOT NULL,
   MODIFY last_insert_id INTEGER NOT NULL,
   MODIFY insert_id INTEGER NOT NULL,
   MODIFY server_id INTEGER UNSIGNED NOT NULL,
   MODIFY sql_text MEDIUMTEXT NOT NULL
210205 14:41:37 [Warning] 'user' entry 'root@mysqlupdate01' ignored in --skip-name-resolve mode

9.最后开启复制,(不需要重新搭建)
start slave;
show slave status\G

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

提醒一下,一共9步

下面,为了进一步进行升级测试(5.1到5.5)。还需要进行主从切换(66.190为主,66.191为从)

主从切换的内容下篇介绍吧

本文说明,主要技术内容来自互联网技术大佬的分享,还有一些自我的加工(仅仅起到注释说明的作用)。如有相关疑问,请留言,将确认之后,执行侵权必删

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值