wdcp升级mysql5.6至mysql8.0.19的升级脚本

原创| 开发动态| 一个月前| 阅读 125 次 | 0赞同 0反对

概述:mysql8.0已经上线了4个年头了,但是在生产环境中为了稳定安定评定的运营,DBA们暂时不对环境中的Mysql5.6或者5.7下手,今天板砖参考wdcp论坛中的基友的帖子来试验了一番Mysql5.6升级Mysql8.0.19。

以下脚本请复制另存为sh文件并上传服务器www文件夹,然后ssh登录服务器,运行命令 sh xxx.sh

升级的时候请注意以下变量,如IN_DIR 、备份文件夹,不过板砖建议你单独运行以下备份数据文件夹的命令:

service mysqld stop
mkdir -p /www/wdlinux/mysql_bk
cp -pR /www/wdlinux/mysql/data/* /www/wdlinux/mysql_bk
mv /www/wdlinux/etc/my.cnf /www/wdlinux/etc/my_old.cnf
上述备份文件的命令在上一篇Mysql5.5升级Mysql5.6已经用过了,安全,建议先行备份,在执行下面的文件

#!/bin/bash
# mysql 8.0 update scripts
# Author: wdlinux
# Url: http://www.wdlinux.cn
# Modify: windsage

IN_DIR="/www/wdlinux"

if [ ! $1 ];then

        MYS_VER="8.0.19"
else
        MYS_VER=$1
fi

echo "升级有风险 操作需谨慎"
echo "欢迎学习交流互助提高"
echo "qq:242013800"
echo
read -p "DO YOU REALLY WANT TO UPDATE? (Y/N): " yn
if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
        echo "MYSQL IS NOW UPDATING!"
else
        exit
fi
echo
echo "-------------------------------------------------------------"
echo


if [ ! -f mysql-boost-${MYS_VER}.tar.gz ];then
# 因mysql5.7需要boost,所以这个直接是包含boost的源码包
        wget -c https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-${MYS_VER}.tar.gz
fi
yum install -y cmake bison libmcrypt-devel libjpeg-devel libpng-devel freetype-devel curl-devel openssl-devel libxml2-devel zip unzip
if [ ! -d $IN_DIR/mysql-${MYS_VER} ];then
mkdir -p $IN_DIR/mysql-${MYS_VER}
# 数据库文件夹默认要求是data
mkdir -p $IN_DIR/mysql-${MYS_VER}/data
fi

if [ ! -d mysql-${MYS_VER} ];then
tar zxvf mysql-${MYS_VER}.tar.gz
fi
cd mysql-${MYS_VER}
echo "START CONFIGURING MYSQL"
sleep 3
mkdir -p build
cd  build/
make clean
cmake. \
-DCMAKE_INSTALL_PREFIX=$IN_DIR/mysql-$MYS_VER \
-DSYSCONFDIR=$IN_DIR/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_SSL=bundled \
-DWITH_DEBUG=OFF \
-DWITH_EXTRA_CHARSETS=complex \
-DENABLED_PROFILING=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_BOOST=../boost/boost_1_68_0/
[ $? != 0 ] && echo "NO! CONFIGURE ERROR!  :(" && exit
echo "START MAKE"
sleep 3
make
[ $? != 0 ] && echo "NO! MAKE ERROR!  :(" && exit
echo "START MAKE INSTALL"
sleep 3
make install
[ $? != 0 ] && echo "NO! MAKE INSTALL ERROR!  :(" && exit

service mysqld stop
# 建立备份文件夹,这个可以自定义设置,建议一开始就先备份,不要问我为什么,这样可视化安全更放心
if [ ! -d /www/wdlinux/mysql_bk ];then
mkdir -p /www/wdlinux/mysql_bk
cp -pR /www/wdlinux/mysql/data/* /www/wdlinux/mysql_bk
fi
rm -f /www/wdlinux/mysql
ln -sf $IN_DIR/mysql-$MYS_VER /www/wdlinux/mysql
sh scripts/mysql_install_db.sh --user=mysql --basedir=/www/wdlinux/mysql --datadir=/www/wdlinux/mysql/data
chown -R mysql.mysql /www/wdlinux/mysql
chown -R mysql.mysql /www/wdlinux/mysql/data
mv /www/wdlinux/mysql/data/mysql /www/wdlinux/mysql/data/mysqlo
cp support-files/mysql.server /www/wdlinux/init.d/mysqld
chmod 755 /www/wdlinux/init.d/mysqld
service mysqld restart
ln -sf $IN_DIR/mysql/lib/libmysqlclient.so.20. /usr/lib/libmysqlclient.so.20
cd ..
rm -rf mysql-${Ver}/
# rm -rf mysql-${Ver}.tar.gz
sleep 2
service mysqld restart
sleep 2
mysqld --initialize --user=mysql --console
# 或者把备份的数据库复制回来,注意不要覆盖performance_schema
# cp -pR /mnt/mysql_bk/* /www/wdlinux/mysql/data/  
echo
echo "-------------------------------------------------------------"
echo "数据库需要初始化,自动生成的密码会存入mysql的日志,默认在/var/log/mysql/error.log"
echo
echo "此时查看mysql日志,应该一切正常了,但新手朋友注意了,此时你的httpd无法启动了,需要编译安装php。"
echo


DMAKE 点击这里下载本文PDF

本频道需要登陆后才能评论,请登录


暂无评论...