searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

使用rbd卷作数据盘的mysql安装与配置

2023-05-18 03:16:41
47
0

1、下载mysql

下载地址:https://dev.mysql.com/downloads/mysql/

选择对应的版本,mysql目前用的最多的是5.6,5.7和8.0版本,本文选的是mysql 5.7

下面图中选择RPM Bundle,点击download

备注:

1、rpm package:是某个特定的包,比如server,client,shared lib等    ---- 可以单独安装

2、rpm bundle:是该版本所有包的集合                                           ---- 一般是把服务器端要用的都安装上,其他的不带,尤其是开发包

3、Compressed TAR Archive,是源码,必须用源码方式安装。       ---- 这个是源码,需要自己编译的,也有编译好,但不是安装包的

点击Download后跳转到此页,不用登录或注册,直接下载即可

 

2、上传包到服务器并解压

将下载的包rz命令上传到服务器

解压:tar -xvf mysql-5.7.41-1.el7.x86_64.rpm-bundle.tar

 

3、安装

各rpm包是有依赖关系的,所以需要按照一定顺序进行安装,安装期间如果提示缺少哪些依赖也要先安装相应的包:

[root@localhost ~]# rpm -ivh mysql-community-common-5.7.41-1.el7.x86_64.rpm

[root@localhost ~]# rpm -ivh mysql-community-libs-5.7.41-1.el7.x86_64.rpm

[root@localhost ~]# rpm -ivh mysql-community-client-5.7.41-1.el7.x86_64.rpm

[root@localhost ~]# rpm -ivh mysql-community-server-5.7.41-1.el7.x86_64.rpm

 

4、启动mysql

启动:systemctl start mysqld.service

查看状态:systemctl status mysqld.service

停止:systemctl stop mysqld.service

重启:systemctl restart mysqld.service

 

5、设置

mysql第一次启动后会创建超级管理员账号root@localhost,初始密码存储在日志文件中:

sudo grep 'temporary password' /var/log/mysqld.log

5.1修改密码

[root@localhost ~]# mysql -uroot -p

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '$password'

但是提示是密码太简单了,解决方法如下:

  • 使用复杂密码,MySQL默认的密码策略是要包含数字、字母及特殊字符;
  • 如果只是测试用,不想用那么复杂的密码,可以修改默认策略,即validate_password_policy(以及validate_password_length等相关参数),使其支持简单密码的设定,具体方法可以自行百度;
  • 修改配置文件/etc/my.cnf,添加validate_password=OFF,保存并重启MySQL

考虑安全问题,一定不要修改成简单密码!

5.2允许root访问

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$password' WITH GRANT OPTION;

5.3修改编码为utf-8

查看字符

mysql> SHOW VARIABLES LIKE 'character%';

退出mysql命令输入exit回车

编辑/etc/my.cnf,[mysqld]节点增加以下代码:

[mysqld] 
character_set_server=utf8 
init-connect='SET NAMES utf8'

重启mysqld服务systemctl restart mysqld.service

再次查看字符集已经修改成utf-8

5.4设置开机启动

[root@localhost ~]# systemctl enable mysqld
[root@localhost ~]# systemctl daemon-reload

6、设置数据存储路径(datadir)

登录mysql后,查看存储路径

mysql> show global variables like '%datadir%';

默认是/var/lib/mysql

我们要将rbd卷作为mysql数据存储路径,需要先新建rbd卷,xfs格式化,新建目录/root/data,挂载到新目录。

也可以使用rbd克隆卷作为mysql数据存储路径,如下图中先新建rbd卷,再创建克隆卷,同样xfs格式化后挂载到新目录。

完成以上操作后,按以下步骤执行:

1、拷贝原数据库内容到新建目录,修改目录权限和用户组

cp -a -R /var/lib/mysql/* /root/data/
chown mysql:mysql /root/data
chmod 750 /root/data

2、停mysqld服务,修改配置文件

先停止mysqld服务
systemctl stop mysqld
systemctl status mysqld

vi /etc/my.cnf

3、禁用SELINUX

编辑/etc/selinux/config 文件,将其中的SELINUX禁用,SELINUX=disabled,重新启动系统

4、做软链接

ln -s /root/data/mysql.sock /var/lib/mysql/mysql.sock

5、启动mysql

systemctl start mysqld.service

启动报错查看问题2

6、重启成功后登录mysql查看datadir

已经更新成为/root/data

此时mysql的数据存储路径已改为rbd卷挂载的路径,底层数据存储到ceph集群

7、遇到的问题

7.1安装mysql-community-common-5.7.41-1.el7.x86_64.rpm 时报错 conflicts with file from package mariadb-libs-1:5.5.60-1.el7_5.x86_64

解决:

1)检查mariadb

[root@localhost ~]# rpm -qa|grep mariadb

2)删除mariadb

[root@localhost ~]# rpm -e --nodeps mariadb-libs
[root@localhost ~]# rpm -qa|grep mariadb
[root@localhost ~]# 

7.2安装mysql-community-server缺少依赖包

解决:

yum install -y perl

yum install -y net-tools

7.3启动mysqld服务报错, Errcode:13 

使用journalctl -xe查看日志发现报错:

Jan 29 14:55:40 localhost.localdomain mysqld[4806]: mysqld: Can't change dir to '/root/data/' (Errcode: 13 - Permission denied)
Jan 29 14:55:40 localhost.localdomain mysqld[4806]: 2023-01-29T06:55:40.015862Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please us
Jan 29 14:55:40 localhost.localdomain mysqld[4806]: 2023-01-29T06:55:40.016084Z 0 [Warning] Can't create test file /root/data/localhost.lower-test
Jan 29 14:55:40 localhost.localdomain mysqld[4806]: 2023-01-29T06:55:40.016133Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.41) starting as process 4808 ...
Jan 29 14:55:40 localhost.localdomain mysqld[4806]: 2023-01-29T06:55:40.019198Z 0 [Warning] Can't create test file /root/data/localhost.lower-test
Jan 29 14:55:40 localhost.localdomain mysqld[4806]: 2023-01-29T06:55:40.019209Z 0 [Warning] Can't create test file /root/data/localhost.lower-test

权限错误(Errcode: 13)解决方法:

1  查看导出目录的权限 是否有mysql用户写的权限

2 如果有多级目录,要确保到处目录的上级目录有可执行权限,如果是/root目录 700要修改705 否则写不进

3  查看 seLinux 有没有关闭 ,如果没有关闭可以执行 setenforce 0,然后vi /etc/selinux/config 确保 SELINUX=disabled

解决:

chmod 705 /root

然后重启mysql服务成功!

7.4mysqld.log日志默认时间比系统时间少8h?

修改/etc/my.cnf

#加上下面这一行,保证日志跟系统时间保持一致
log_timestamps=SYSTEM

0条评论
0 / 1000
杨****源
2文章数
0粉丝数
杨****源
2 文章 | 0 粉丝
杨****源
2文章数
0粉丝数
杨****源
2 文章 | 0 粉丝
原创

使用rbd卷作数据盘的mysql安装与配置

2023-05-18 03:16:41
47
0

1、下载mysql

下载地址:https://dev.mysql.com/downloads/mysql/

选择对应的版本,mysql目前用的最多的是5.6,5.7和8.0版本,本文选的是mysql 5.7

下面图中选择RPM Bundle,点击download

备注:

1、rpm package:是某个特定的包,比如server,client,shared lib等    ---- 可以单独安装

2、rpm bundle:是该版本所有包的集合                                           ---- 一般是把服务器端要用的都安装上,其他的不带,尤其是开发包

3、Compressed TAR Archive,是源码,必须用源码方式安装。       ---- 这个是源码,需要自己编译的,也有编译好,但不是安装包的

点击Download后跳转到此页,不用登录或注册,直接下载即可

 

2、上传包到服务器并解压

将下载的包rz命令上传到服务器

解压:tar -xvf mysql-5.7.41-1.el7.x86_64.rpm-bundle.tar

 

3、安装

各rpm包是有依赖关系的,所以需要按照一定顺序进行安装,安装期间如果提示缺少哪些依赖也要先安装相应的包:

[root@localhost ~]# rpm -ivh mysql-community-common-5.7.41-1.el7.x86_64.rpm

[root@localhost ~]# rpm -ivh mysql-community-libs-5.7.41-1.el7.x86_64.rpm

[root@localhost ~]# rpm -ivh mysql-community-client-5.7.41-1.el7.x86_64.rpm

[root@localhost ~]# rpm -ivh mysql-community-server-5.7.41-1.el7.x86_64.rpm

 

4、启动mysql

启动:systemctl start mysqld.service

查看状态:systemctl status mysqld.service

停止:systemctl stop mysqld.service

重启:systemctl restart mysqld.service

 

5、设置

mysql第一次启动后会创建超级管理员账号root@localhost,初始密码存储在日志文件中:

sudo grep 'temporary password' /var/log/mysqld.log

5.1修改密码

[root@localhost ~]# mysql -uroot -p

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '$password'

但是提示是密码太简单了,解决方法如下:

  • 使用复杂密码,MySQL默认的密码策略是要包含数字、字母及特殊字符;
  • 如果只是测试用,不想用那么复杂的密码,可以修改默认策略,即validate_password_policy(以及validate_password_length等相关参数),使其支持简单密码的设定,具体方法可以自行百度;
  • 修改配置文件/etc/my.cnf,添加validate_password=OFF,保存并重启MySQL

考虑安全问题,一定不要修改成简单密码!

5.2允许root访问

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$password' WITH GRANT OPTION;

5.3修改编码为utf-8

查看字符

mysql> SHOW VARIABLES LIKE 'character%';

退出mysql命令输入exit回车

编辑/etc/my.cnf,[mysqld]节点增加以下代码:

[mysqld] 
character_set_server=utf8 
init-connect='SET NAMES utf8'

重启mysqld服务systemctl restart mysqld.service

再次查看字符集已经修改成utf-8

5.4设置开机启动

[root@localhost ~]# systemctl enable mysqld
[root@localhost ~]# systemctl daemon-reload

6、设置数据存储路径(datadir)

登录mysql后,查看存储路径

mysql> show global variables like '%datadir%';

默认是/var/lib/mysql

我们要将rbd卷作为mysql数据存储路径,需要先新建rbd卷,xfs格式化,新建目录/root/data,挂载到新目录。

也可以使用rbd克隆卷作为mysql数据存储路径,如下图中先新建rbd卷,再创建克隆卷,同样xfs格式化后挂载到新目录。

完成以上操作后,按以下步骤执行:

1、拷贝原数据库内容到新建目录,修改目录权限和用户组

cp -a -R /var/lib/mysql/* /root/data/
chown mysql:mysql /root/data
chmod 750 /root/data

2、停mysqld服务,修改配置文件

先停止mysqld服务
systemctl stop mysqld
systemctl status mysqld

vi /etc/my.cnf

3、禁用SELINUX

编辑/etc/selinux/config 文件,将其中的SELINUX禁用,SELINUX=disabled,重新启动系统

4、做软链接

ln -s /root/data/mysql.sock /var/lib/mysql/mysql.sock

5、启动mysql

systemctl start mysqld.service

启动报错查看问题2

6、重启成功后登录mysql查看datadir

已经更新成为/root/data

此时mysql的数据存储路径已改为rbd卷挂载的路径,底层数据存储到ceph集群

7、遇到的问题

7.1安装mysql-community-common-5.7.41-1.el7.x86_64.rpm 时报错 conflicts with file from package mariadb-libs-1:5.5.60-1.el7_5.x86_64

解决:

1)检查mariadb

[root@localhost ~]# rpm -qa|grep mariadb

2)删除mariadb

[root@localhost ~]# rpm -e --nodeps mariadb-libs
[root@localhost ~]# rpm -qa|grep mariadb
[root@localhost ~]# 

7.2安装mysql-community-server缺少依赖包

解决:

yum install -y perl

yum install -y net-tools

7.3启动mysqld服务报错, Errcode:13 

使用journalctl -xe查看日志发现报错:

Jan 29 14:55:40 localhost.localdomain mysqld[4806]: mysqld: Can't change dir to '/root/data/' (Errcode: 13 - Permission denied)
Jan 29 14:55:40 localhost.localdomain mysqld[4806]: 2023-01-29T06:55:40.015862Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please us
Jan 29 14:55:40 localhost.localdomain mysqld[4806]: 2023-01-29T06:55:40.016084Z 0 [Warning] Can't create test file /root/data/localhost.lower-test
Jan 29 14:55:40 localhost.localdomain mysqld[4806]: 2023-01-29T06:55:40.016133Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.41) starting as process 4808 ...
Jan 29 14:55:40 localhost.localdomain mysqld[4806]: 2023-01-29T06:55:40.019198Z 0 [Warning] Can't create test file /root/data/localhost.lower-test
Jan 29 14:55:40 localhost.localdomain mysqld[4806]: 2023-01-29T06:55:40.019209Z 0 [Warning] Can't create test file /root/data/localhost.lower-test

权限错误(Errcode: 13)解决方法:

1  查看导出目录的权限 是否有mysql用户写的权限

2 如果有多级目录,要确保到处目录的上级目录有可执行权限,如果是/root目录 700要修改705 否则写不进

3  查看 seLinux 有没有关闭 ,如果没有关闭可以执行 setenforce 0,然后vi /etc/selinux/config 确保 SELINUX=disabled

解决:

chmod 705 /root

然后重启mysql服务成功!

7.4mysqld.log日志默认时间比系统时间少8h?

修改/etc/my.cnf

#加上下面这一行,保证日志跟系统时间保持一致
log_timestamps=SYSTEM

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0