黑马程序员技术交流社区
标题: 深圳校区·每日一技能 | MySQL迁移升级解决方案 [打印本页]
作者: 柠檬leung不酸 时间: 2019-7-20 12:00
标题: 深圳校区·每日一技能 | MySQL迁移升级解决方案
任务背景
由于现有业务架构已不能满足当前业务需求,在保证数据完整的前提下,现需要将原有数据库迁移到另外一台单独的服务器上,在保证原有服务正常的情况下,将原有LAMP环境中mysql数据库版本5.6.31升级为5.6.35.
任务要求
1. 在业务维护时间(02:00-4:00)段对数据库进行全量备份
2. 将MySQL数据库从原有服务器迁移到新服务器上并且升级版本为5.6.35
任务拆解
1. 新服务器安装Centos7.5,并且安装MySQL-5.6.35版本数据库
2. 停止监控、停止前端应用、停止MySQL数据库
3. 备份数据库(省略)
4. 迁移数据库——>同步数据库文件到新的环境中(rsync/scp)
5. 测试验证
任务解决方案
环境说明
| 操作系统版本 | | | | |
老环境 | 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) 停止监控
略
2) 停止应用服务apache和数据库
[root@lamp ~]# servicehttpd stop
[root@lamp ~]# servicemysql stop
Shutting down MySQL.. SUCCESS!
二、新环境部署安装MySQL
# du -shmysql-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
1) 解压软件包# tar -xfmysql-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 -Rmysql.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]# cpsupport-files/mysql.server /etc/init.d/mysql
5) 初始化说明
1. 正常安装新数据库直接使用,是需要初始化数据库然后再启动使用
2. 当前需求是将原来MySQL数据库文件迁移到新的数据库的数据目录里,故不需要初始化
三、迁移数据库到新环境
说明:新数据库服务器上操作
[root@db01 mysql]# rsync -av 10.1.1.1:/usr/local/mysql/data//usr/local/mysql/data
直接启动新的数据库,并且检查日志文件(查看是否有选项不兼容)
[root@db01 mysql]# servicemysql 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
原因:连接数据库失败
四、原web服务连接新数据库(LAMP=>LNMP)
[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]# vimwp-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');
新的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全部关闭掉,不然打死都连接不上!
[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
作者: 柠檬leung不酸 时间: 2019-7-22 14:18
加油~
作者: 柠檬leung不酸 时间: 2019-7-22 14:18
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |