当前位置:首页 > 数据库 > MySQL > 正文内容

MySQL迁移升级解决方案

任务背景

由于现有业务架构已不能满足当前业务需求,在保证数据完整的前提下,现需要将原有数据库迁移到另外一台单独的服务器上,在保证原有服务正常的情况下,将原有LAMP环境中mysql数据库版本5.6.31升级为5.6.35.

任务要求

在业务维护时间(02:00-4:00)段对数据库进行全量备份

将MySQL数据库从原有服务器迁移到新服务器上并且升级版本为5.6.35

任务拆解

新服务器安装Centos7.5,并且安装MySQL-5.6.35版本数据库

停止监控、停止前端应用、停止MySQL数据库

备份数据库(省略)

迁移数据库——>同步数据库文件到新的环境中(rsync/scp)

测试验证

任务解决方案

环境说明


操作系统版本

数据库版本

应用说明

IP地址

主机名

老环境

Centos-6.9

MySQL-5.6.31

LAMP环境

10.1.1.19

lamp.itcast.cn

新环境

Centos-7.5

MySQL-5.6.35

MySQL数据库

10.1.1.37

db01.itcast.cn


具体步骤

1. 老环境停止相应服务

1) 停止监控

2) 停止应用服务apache和数据库
[root@lamp ~]# service httpd stop
[root@lamp ~]# service mysql stop
Shutting down MySQL.. SUCCESS!

2. 新环境部署安装MySQL

① 官网下载mysql软件

# du -sh mysql-5.6.35-Linux-glibc2.5-x86_64.tar.gz
301M mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

② 安装需求

安装目录(basedir):/usr/local/mysql
数据库目录(datadir):/usr/local/mysql/data
端口:3306
socket文件:/tmp/mysql.sock
错误日志文件:/usr/local/mysql/data/mysql.err

③ glibc方式安装步骤
1) 解压软件包

# tar -xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
# cd /usr/local/
# ln -s /soft/installer/mysql-5.6.35-linux-glibc2.5-x86_64  mysql
注意:进入到/usr/local目录里软连接

2) 创建用户并修改目录权限

1. 查看用户是否存在
[root@db01 mysql]# id mysql
id: mysql: no such user
[root@db01 mysql]# useradd -r -s /sbin/nologin mysql
[root@db01 mysql]# id mysql
uid=997(mysql) gid=995(mysql) 组=995(mysql)

2. 更改mysql的安装目录的权限
[root@db01 mysql]# chown -R mysql.mysql /usr/local/mysql/
[root@db01 mysql]# ll -d /usr/local/mysql/
drwxr-xr-x 13 mysql mysql 191 10月  9 10:26 /usr/local/mysql/

3) 修改配置文件

修改/etc/my.cnf文件
[root@db01 mysql]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3307
socket=/usr/local/mysql/mysql.sock
log-error=/usr/local/mysql/data/mysql3307.err

4) 拷贝启动脚本

[root@db01 mysql]# pwd
/usr/local/mysql
[root@db01 mysql]# cp support-files/mysql.server /etc/init.d/mysql

5) 初始化说明

正常安装新数据库直接使用,是需要初始化数据库然后再启动使用

当前需求是将原来MySQL数据库文件迁移到新的数据库的数据目录里,故不需要初始化

3. 迁移数据库到新环境

说明:新数据库服务器上操作

① 同步老库数据文件到新库数据目录里

[root@db01 mysql]# rsync -av 10.1.1.1:/usr/local/mysql/data/ /usr/local/mysql/data

② 启动新数据库

直接启动新的数据库,并且检查日志文件(查看是否有选项不兼容)
[root@db01 mysql]# service mysql start

③ 升级数据库(重点,升级数据库文件)

使用mysql_upgrade命令检查数据文件的兼容性
[root@db01 ~]# /usr/local/mysql/bin/mysql_upgrade -S /tmp/mysql.sock -p123
注意:
1. 在实际的环境中,建议使用-s参数,不检查业务表,只检查系统文件
2. 升级是需要连接数据库的,-p密码 -S指定socket文件
[root@db01 mysql]# /usr/local/mysql/bin/mysql_upgrade -p
Enter password:
Looking for 'mysql' as: /usr/local/mysql/bin/mysql
Looking for 'mysqlcheck' as: /usr/local/mysql/bin/mysqlcheck
Error: Failed while fetching Server version! Could be due to unauthorized access.
FATAL ERROR: Upgrade failed
原因:连接数据库失败

4. 原web服务连接新数据库(LAMP=>LNMP)

① 修改php连接mysql的配置文件(如果有)

[root@lamp ~]# find / -name php.ini
/usr/local/lib/php.ini
[root@lamp ~]# vim /usr/local/lib/php.ini
[MySQL]
mysql.default_port = 3306
mysql.default_host = 10.1.1.37

[MySQLi]
mysql.default_port = 3306
mysql.default_host = 10.1.1.37

② 修改网站配置文件连接数据库

修改www.myblog.net网站所在数据库目录的配置文件

[root@lamp www]# pwd
/var/html/www
[root@lamp www]# vim wp-config.php
...
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'myblog');

/** MySQL数据库用户名 */
define('DB_USER', 'root');

/** MySQL数据库密码 */
define('DB_PASSWORD', '123');

/** MySQL主机 */
define('DB_HOST', '10.1.1.37');

/** 创建数据表时默认的文字编码 */
define('DB_CHARset', 'utf8');

③ 新数据库授权为web服务

新的mysql数据库需要给root@10.1.1.19用户授权
mysql> grant all on *.* to 'root'@'10.1.1.19' identified by '123';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

注意:把防火墙firewalld和selinux全部关闭掉,不然打死都连接不上!

④ 启动web服务

[root@lamp ~]# service apache start
[root@lamp ~]# netstat -nltp|grep httpd
tcp        0      0 :::80                       :::*                        listEN      1376/httpd

⑤ 测试验证

1.浏览器访问
2. web服务器上使用mysql工具远程访问
[root@lamp ~]# mysql -uroot -h10.1.1.37 -uroot -p123


扫描二维码推送至手机访问。

版权声明:本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:luxd@aliyun.com,感谢支持理解。


本文链接:https://luxd.cc/post/113.html

“MySQL迁移升级解决方案” 的相关文章

Mysql 用户权限管理

Mysql 用户权限管理

1. MySQL 权限介绍mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表,我当前的版本mysql 5.7.22 。mysql权限表的验证过程为:先从user表中的Host,User,Password这3个字段中判断连接的ip、用户名、...

MySQL数据库复习——索引

MySQL数据库复习——索引

一、什么是索引?索引的作用索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。官方的概念往往难以理解,简单来说索引就像我们书本的目录,能够加快我们查询速度。在加快我们查询速度的同时,索引同时也要消耗存储空间(就好比...

mysql数据库乱码解决

mysql数据库乱码解决

一、我们需要将默认的字符集更改为utf-8来解决数据库导入数据的乱码问题:我们需要先查看数据库默认的字符集是什么:show variables like 'character_set_%'查看所有的默认字符集mysql> show&nbs...

Windows MySQL安装配置

Windows MySQL安装配置

[MustVIP]1 下载和安装访问达内文档服务器下载安装包用浏览器访问http://doc.canglaoshi.org,在常用下载中找到 Windows 里面的MariaDB下载后双击运行安装安装过程中设置密码为root, 设置默认字符集UTF-8后续安装步骤是一直下一步直至完成。2 测试MyS...

MySql数据库备份与还原

MySql数据库备份与还原

备份(mysqldump)实现功能:      1、备份指定的数据库      2、删除指定天数前的备份文件,默认设定了1天脚本示例(mysql_bak.sh)# 数据库备份根目录BACKUP_DIR="/usr/local/my...