部署MySQL
在开始MySQL数据库迁移之前,首先需要在目标服务器上部署MySQL,以下是详细的部署步骤:
1、卸载MariaDB:如果目标服务器上已经安装了MariaDB,需要先将其卸载,因为MySQL和MariaDB的文件可能会冲突。
检查是否安装了MariaDB:rpm qa | grep mariadb
卸载MariaDB:rpm e nodeps <文件名>
检查是否卸载干净:rpm qa | grep mariadb
2、检查依赖包:确保已安装libaio和numactl,这两个是MySQL的依赖包。
查看是否安装了libaio:rpm qa | grep libaio
如果未安装,执行:yum y install libaio
查看是否安装了numactl:rpm qa | grep numactl
如果未安装,执行:yum y install numactl
3、下载并解压MySQL安装包:从MySQL官网或其他可信来源下载MySQL的tar.gz安装包,然后将其上传到目标服务器。
进入安装包目录:cd /usr/local/
解压安装包:tar zxvf mysql8.0.28el7x86_64.tar.gz
重命名文件夹:mv mysql8.0.28el7x86_64/ mysql
4、创建数据存储目录:在MySQL安装目录下创建一个用于存储数据文件的目录。
mkdir /usr/local/mysql/data
5、设置用户组和权限:为MySQL创建用户组和用户,并设置相应的权限。
创建用户组:groupadd mysql
创建用户:useradd r g mysql mysql
更改属主和数组:chown R mysql:mysql /usr/local/mysql/
更改权限:chmod R 755 /usr/local/mysql/
6、初始化MySQL:运行初始化脚本以设置系统表和其他基础配置。
进入MySQL的bin目录:cd /usr/local/mysql/bin/
初始化MySQL:./mysqld initialize user=mysql datadir=/usr/local/mysql/data basedir=/usr/local/mysql lower_case_table_names=1
记录初始化过程中生成的临时密码。
7、配置参数文件:编辑my.cnf文件,根据实际需求设置相关参数。
```ini
[mysqld]
bindaddress=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
logerror=/usr/local/mysql/data/mysql.err
pidfile=/usr/local/mysql/data/mysql.pid
lower_case_table_names=1
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
character_set_server=utf8mb4
symboliclinks=0
explicit_defaults_for_timestamp=true
[client]
port=3306
socket=/usr/local/mysql/data/mysql.sock
host=localhost
[mysqld_safe]
```
修改权限:chmod 644 /etc/my.cnf
8、启动MySQL服务:使用以下命令启动MySQL服务。
```bash
/usr/local/mysql/supportfiles/mysql.server start
```
如果启动时报错,可以尝试从老数据库中的datadir复制mysql.pid文件到新数据库的datadir。
FAQs
1、Q: 为什么在初始化MySQL时需要指定用户?
A: 在初始化MySQL时,指定用户是为了确保MySQL进程以特定用户的身份运行,这样可以限制该进程的权限,提高系统的安全性,默认情况下,MySQL会以初始化它的用户身份运行。
2、Q: 如果在启动MySQL服务时遇到“The server quit without updating PID file”错误怎么办?
A: 这个错误通常表示MySQL无法正确写入PID文件,解决方法包括检查/etc/my.cnf文件中的pidfile路径是否正确,确保datadir目录存在且MySQL有权写入该目录,以及尝试从旧数据库的datadir中复制mysql.pid文件到新数据库的datadir。