MySQL的升级迁移
欢迎来到 来到大浪涛天的博客 !
一、MySQL 从5.6到5.7的升级迁移
1. 搭建5.6的测试环境
1-1. 创建必须的目录
mkdir /data/mysql/data -p
mkdir /application/ -p
mkdir /data/binlog -p
上传软件至 /application 下并解压
1-2. 建用户,改权限
useradd mysql
chown -R mysql. /data /application/
1-3. 修改环境变量
vim /etc/profile
export PATH=/application/mysql/bin:$PATH
source /etc/profile
1-4. 数据初始化
yum remove mariadb-libs
yum install -y libaio-devel
m -rf /data/mysql/data/*
/application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
1-5. 准备配置文件和启动脚本
cat > /etc/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/mysql/data
server_id=99
user=mysql
log_bin=/data/binlog/mysql-bin
binlog_format=row
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
EOF
1-6. 拷贝启动脚本
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
1-7. 启动数据库
/etc/init.d/mysqld start
mysqladmin -uroot -p password 123
2. 5.6数据库的数据备份,并在5.7恢复数据
2-1. 备份并推送数据
mysqldump -uroot -p123 -A --master-data=2 --single-transaction -R -E --triggers >/tmp/full.sql
scp /tmp/full.sql 10.0.0.51:/data/3308
2-2. 准备5.7数据库
systemctl start mysqld3308
mysql -S /data/3308/mysql.sock
source /data/3308/full.sql
mysql_upgrade -uroot -p123 -S /data/3308/mysql.sock
2-3. 停业务,截取剩余的二进制日志
show master status
根据备份确认起点的位置,备份的结束点就是二进制日志恢复的起点,比如:
SET @@GLOBAL.GTID_PURGED='9f5d3fcf-e215-11ea-9d2c-001c42063d8f:1-14';
再根据二进制日志确认数据更新的结束点。
show binlog events in ''
mysqlbinlog --skip-gtids --include-gtids='9f5d3fcf-e215-11ea-9d2c-001c42063d8f:14-18' mysql-bin.000001 >/tmp/binlog.sql
scp /tmp/binlog.sql 10.0.0.51:/data/3308
2-4. 恢复剩余的二进制日志并业务上线
set sql_log_bin=0
source /data/3308/binlog.sql
set sql_log_bin=1