项目05(Mysql升级01Mysql5.0.95升级到Mysql5.1.73)

背景

需要使用新版本特性或是提高数据库性能,再或是新的代码可以支持新的数据库版本

写在前面

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

1.数据库升级需要考虑代码是否支持(需要开发同事配合和解决问题) 2.DBA方面要考虑升级方案和新旧版本的兼容性问题(参数和更新特性,推荐参照官方文档逐一检查是否可以升级)

因为篇幅问题,前期检查内容,另篇单独介绍。本文只涉及具体的操作(先请读者参考测试)

Mysql5.0.95升级到Mysql5.1.73

根据官方文档的建议,先升级到最新版本,再升级到下一版本。例如,在升级到MySQL 5.6之前,先升级到最新的MySQL 5.5版本。

环境

Mysql5.0.95主(66.190)从(66.191),使用逻辑升级Logical Upgrade(备份旧版本数据,还原到新版本的方式)

然后先升级从库,切换之后,再升级主库

另一种方式为就地升级(In-Place Upgrade),用新版database启动旧数据目录,修改软连(也可以用于回退) 因为是低版本升级,官方还是推荐逻辑升级。(8.0之后升级更简单了哟)

1. 准备主从

主:
0.准备安装包 tar -xvf 

1.用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

2.配置文件
vim /etc/my.cnf[5.0只能这样写(解决show master status;无显示的问题),比如my.cnfbak会被读取,my5.0.95.cnf不会]

3.环境变量
PATH=$PATH:/usr/local/mysql5.0.95/bin

4.初始化(注意5.7之前初始化命令是mysql_install_db 5.7--initialize)/usr/local/mysql5.0.95目录下
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql5.0.95/data --defaults-file=/etc/my.cnf

初始化之后(设置密码和删除测试库及是否禁用远程root登录)
./bin/mysqladmin -u root password '123456'
./bin/mysql_secure_installation

(可选测试):
测试:
cd mysql-test ; perl mysql-test-run.pl

5.启动命令(可选,也可以使用mysqld_safe)
cp support-files/mysql.server /etc/init.d/mysqld5.0.95
并更改内容:
vim /etc/init.d/mysqld5.0.95
basedir=/usr/local/mysql5.0.95
datadir=/usr/local/mysql5.0.95/data

6.启动
/etc/init.d/mysqld5.0.95 start

从:同上安装好数据库
主:
1.
show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |       98 |              |                  | 
+------------------+----------+--------------+-------------------
2.建立复制用户
CREATE USER 'repl'@'192.168.66.%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.66.%';
FLUSH PRIVILEGES;

从:
3.
change master to master_host='192.168.66.190',master_user='repl',master_port=3306,master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=98;
4.开启复制
start slave;
5.验证复制
show slave status\G
注意,my.cnf中配置了过滤mysql库,所以用户不会复制到从库。(5.0.95在从上手动创建(用户切换),不会影响复制)

2.逻辑升级(从库)

1.从库先升级前检查:
mysqlcheck --defaults-file=/etc/my.cnf --socket=/tmp/mysql5.0.95.sock -u root -p --all-databases --check-upgrade

2.备份数据
mysqldump --socket=/tmp/mysql5.0.95.sock -u root -p --add-drop-table --routines  --master-data=2 --single-transaction --default-character-set=utf8 --all-databases --force > data-for-upgrade.sql

3.关闭旧的MySQL服务器
mysqladmin -u root -p shutdown
stop slave;
(或是)
/etc/init.d/mysqld5.0.95 stop

4.准备新版本Mysql5.1.73(以下解释略,)
PATH=$PATH:/usr/local/mysql5.1.73/bin  (也可以修改软连)

./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql5.1.73/data --defaults-file=/etc/my.cnf

cp support-files/mysql.server /etc/init.d/mysqld5.1.73
vim /etc/init.d/mysqld5.1.73
basedir=/usr/local/mysql5.1.73
datadir=/usr/local/mysql5.1.73/data

/etc/init.d/mysqld5.1.73 start

./bin/mysqladmin -u root password '123456'
./bin/mysql_secure_installation

5.还原数据:
mysql -u root -p --force < data-for-upgrade.sql

升级:
mysql_upgrade -u root -p

重启:以确保对系统表所做的所有更改均生效
mysqladmin -u root -p shutdown
/etc/init.d/mysqld5.1.73 start

重建主从:
change master to master_host='192.168.66.190',master_user='repl',master_port=3306,master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=487;

3.主从切换之后,升级主库

操作步骤同上

参考文档

https://dev.mysql.com/doc/refman/5.6/en/upgrade-binary-package.html
link

注意事项

注意
gtid_mode=ON如果转储文件包含系统表, 则不建议在服务器()上启用GTID时加载转储文件。 mysqldump为使用非事务性MyISAM存储引擎的系统表发出DML指令,并且在启用GTID时不允许这种组合。还应注意,将已启用GTID的服务器上的转储文件加载到已启用GTID的另一台服务器中,会生成不同的事务标识符。

mysql_upgrade检查所有数据库中的所有表是否与当前版本的MySQL不兼容。mysql_upgrade还会升级 mysql系统数据库,以便您可以利用新的特权或功能。

注意
mysql_upgrade不会升级时区表或帮助表的内容。有关升级说明,请参见 第5.1.13节“ MySQL服务器时区支持”和 第5.1.14节“服务器端帮助支持”。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值