记录一次因MySQL漏洞问题导致的生产数据库紧急迁移方案!
最开始部署的MySQL版本为5.7.21,因有部分漏洞因此需要紧急升级到MySQL 5.7.38版本。升级期间我们做了大概如下几个步骤:
sudo mysqldump -uroot -p --all-databases >
allbackup20220704.sql
cp -r /data/mysql /data/mysql_01
rpm -qa | grep mysql | xargs rpm -e --nodeps
上传本次升级的rpm安装包,依次在上传目录下执行如下步骤
rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.38-1.el7.x86_64.rpm
原有的MySQL配置文件因对MySQL进行卸载后,其配置文件命名规则已经发生改变成为了my.cnf.rpmsave。因此我们需要将/etc/my.cnf 备份。执行下述命令:
mv /etc/my.cnf /etc/my.cnf.bak
mv /etc/my.cnf.rpmsave /etc/my.cnf
此处需要修改升级后的MySQL数据存放目录,切勿与第一次的目录一致。
systemctl restart mysqld
根据my.cnf里面配置的MySQL的日志路径,查找MySQL密码,并对其进行修改密码。
cat /data/mysql/mysqld.log | grep localhost
修改密码
set global validate_password_policy = 0;
SET PASSWORD = PASSWORD('root');
grant all privileges on *.* to root@'%' identified by 'root';
若机器安装过多次MySQL,密码则为最后一条数据显示的密码。
若从节点能够正常启动后,则接下来对主节点执行同样的上述操作。
sudo mysqldump -uroot -p --all-databases >
allbackup20220704.sql
cp -r /data/mysql /data/mysql_01
rpm -qa | grep mysql | xargs rpm -e --nodeps
上传本次升级的rpm安装包,依次在上传目录下执行如下步骤
rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.38-1.el7.x86_64.rpm
原有的MySQL配置文件因对MySQL进行卸载后,其配置文件命名规则已经发生改变成为了my.cnf.rpmsave。因此我们需要将/etc/my.cnf 备份。执行下述命令:
mv /etc/my.cnf /etc/my.cnf.bak
mv /etc/my.cnf.rpmsave /etc/my.cnf
此处需要修改升级后的MySQL数据存放目录,切勿与第一次的目录一致。
systemctl restart mysqld
根据my.cnf里面配置的MySQL的日志路径,查找MySQL密码,并对其进行修改密码。
cat /data/mysql/mysqld.log | grep localhost
修改密码
set global validate_password_policy = 0;
SET PASSWORD = PASSWORD('root');
grant all privileges on *.* to root@'%' identified by 'root';
进入主节点的MySQL命令行
mysql -uroot -p密码
show master status\G
#获取到主节点的bin文件及位点信息

进入从节点执行如下命令
stop slave;
CHANGE MASTER TO
MASTER_HOST='主节点IP' ,
MASTER_PORT=MySQL端口,
MASTER_USER='同步账户' ,
MASTER_PASSWORD='同步密码' ,
MASTER_LOG_FILE='主节点bin文件',
MASTER_LOG_POS=主节点位点;
start slave;
#查看主从是否正常
show slave status\G;

1、主节点导入源数据,
mysql -uroot -p密码
source /data/*.sql
2、从节点查看主从状态是否正常
show slave status\G;

若显示正常,则此次升级就完美告一段落。