Linux MySql数据库数据目前迁移

背景:yum安装mysql的时候,数据库的data目录默认是在/var/lib下,由于默认mysql装的分区盘空间很小,需要修改对应存储数据文件路径,出于数据安全性的考虑把它挪到 /home/mysql下

◆◆◆步 骤◆◆◆

1)查看mysql数据存放目录

2)备份Mysql数据表,停止Mysql服务

3)创建新的数据库存放目录

4)移动/复制数据库目录文件到新的存放目录

5)修改mysql数据库目录权限

6)修改Mysql、PHP配置文件

7)修改php配置文件(/etc/php.ini)中的socket路径,重启php

8)重启Mysql服务

◆◆◆步 骤 详 解◆◆◆

下面对上面的步骤进行介绍。

1. 查看mysql数据存放目录

mysql -uroot -p123456 #进入数据库

mysql>show variables like '%dir%’; #查看sql存储路径

(查看datadir 那一行所指的路径)

2. 备份mysql数据,停止mysql服务

移动/复制之前,先备份一下数据表数据,如果迁移失败,还能恢复原有数据表结构及数据。命令:

mysqldump -uroot -p123456 -h127.0.0.1 -P3306 --all-databases > allbackupfile.sql

使用mysqladmin来关闭之前启动的mysql服务器:

mysqladim -uroot -p123456 shutdowm -S /home/mysql/mysql.sock

3. 创建新的数据库存放目录

在root权限下,创建新的数据目录文件:

mkdir /home/mysql

这里是从/var/lib/mysql-->/home/mysql,因为home下磁盘空间比较大,足够满足空间上的需要。

4. 移动/复制数据库目录文件到新的存放目录

将/var/lib下的mysql目录mv(移动)或cp(拷贝)/home/mysql到目录。如果mv命令能保留文件的所有属性和权限,cp命令,需要重新设置Mysql的权限。

mv /var/lib/mysql/* /home/mysql

cp -P /var/lib/mysql/* /home/mysql

5. 修改mysql数据库目录权限

修改用户、用户组权限:

chown mysql:mysql -R /home/mysql/

chmod ug+rwx *

6. 修改Mysql配置文件

a)/etc/my.cnf

将datadir和socket的路径改为/home/mysql目录下。

b)/etc/init.d/mysqld【修改datadir的目录】

之前的代码

get_mysql_option mysqld datadir"/var/lib/mysql"

修改为:

get_mysql_option mysqld datadir"/home/mysql"

c)/usr/bin/mysqld_safe【修改datadir的目录】

DATADIR=/var/lib/mysql

修改为

DATADIR=/home/mysql

safe_mysql_unix_port=$} 修改为safe_mysql_unix_port=$}

7.修改php配置文件(/etc/php.ini)中的socket路径,重启php

千万不要忘记了php.ini里也要指明socket的路径,否则php会无法连接到数据库的。php.ini里默认socket路径是空的,默认是指向/var/lib/mysql,所以也要改为/home/mysql。修改之后重启PHP服务。

[mysql]

mysql.default_socket = /data/mysql/mysql.sock

[mysqli]

mysql.default_socket = /data/mysql/mysql.sock

8. 重启Mysql

◆◆◆ 遇 到 问 题总 结◆◆◆

1、

问题:链接数据库必须使用-h127.0.0.1

原因:Mysql服务端,客户端都要进行配置

解决:/etc/my.cnf下添加以下代码,即可实现用,mysql -uroot -p123456连接。

[mysql]

socket=/home/mysql/mysql.sock

2、

问题:启动mysql报错Can't find file: './mysql/plugin.frm’

重启mysql以后突然报错,详情如下:

171122 19:08:18 [ERROR] mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)

171122 19:08:18 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

171122 19:08:18 [Note] Server socket created on IP: '0.0.0.0'.

171122 19:08:18 [ERROR] mysqld: Can't find file: './mysql/host.frm' (errno: 13)

171122 19:08:18 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)

原因:权限问题

解决:进入plugin.frm所在目录,发现所有文件的权限不知何故都变成root了,执行下面命令,修改权限为mysql【chown mysql.mysql *】。

重启mysql成功。

3、

问题:mysql.sock找不到

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

原因及解决

一种是mysql.sock存在,但是配置路径不对

正常情况下mysql.sock位于mysql/tmp当中,配置文件是mysql/etc/my.cnf

另一种是mysql.sock压根不存在。

如果压根不存在,就运行mysql/bin/mysql_install_db

和mysql/bin/mysqld_safe。

重建授权表,/usr/bin,执行mysql_install_db脚本,对mysql中的data目录进行初始化并创建一些系统表格。

修改密码

mysql> use mysql;

mysql> update user set password=password("123456") where user="root";

mysql> flush privileges;

重启服务

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180905G11TG000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券