linux mysql数据库如何做迁移,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 -p    #进入数据库

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

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

a32f63b4799f8d60d7855a0b53f265ce.png

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

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

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

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

mysqladim -uroot -p 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=${mysql_unix_port:-${MYSQL_UNIX_PORT:-/var/lib/mysql/mysql.sock}} 修改为safe_mysql_unix_port=${mysql_unix_port:-${MYSQL_UNIX_PORT:-/home/mysql/mysql.sock}}

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

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

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

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

8. 重启Mysql

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

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

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

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

socket=/home/mysql/mysql.sock

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

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

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

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

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

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

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成功。

问题: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("") where user="root";

mysql> flush privileges;

重启服务

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Linux下进行MySQL数据库迁移,可以按照以下步骤进行: 1.备份原数据库:使用mysqldump命令备份原数据库,将备份文件保存到本地或其他服务器上。 2.安装新数据库:在目标服务器上安装MySQL数据库,并创建新的数据库。 3.将备份文件导入新数据库:使用mysql命令将备份文件导入新数据库中。 4.修改配置文件:修改新数据库的配置文件,包括数据库名称、用户名、密码等信息。 5.测试新数据库:使用mysql命令连接新数据库,并测试是否能够正常访问和操作。 6.删除原数据库:如果需要,可以在迁移完成后删除原数据库。 需要注意的是,在进行数据库迁移时,要确保原数据库和新数据库的版本兼容性,并且在迁移过程中要保证数据的完整性和安全性。 ### 回答2: 在Linux系统下进行MySQL数据库迁移,需要考虑以下几个方面: 1. 数据库备份 在MySQL迁移前,首先需要备份原有的数据库。可以使用mysqldump命令将数据库导出为.sql文件,该文件包含了所有的数据和表结构。备份命令示例: ```bash mysqldump -u root -p old_database > old_database.sql ``` 其中,`-u`参数是MySQL登录用户,`-p`参数是MySQL登录密码,`old_database`是需要备份的数据库名,`> old_database.sql`是将备份文件输出到指定文件中。 2. 安装新的MySQL 如果迁移到新的服务器上,需要安装新的MySQL,并确保MySQL的版本和原服务器上的MySQL版本相同或更高。 3. 将备份文件导入到新的MySQL中 使用mysql命令将备份文件导入到新的MySQL中,命令示例: ```bash mysql -u root -p new_database < old_database.sql ``` 其中,`new_database`是新数据库的名字。 4. 修改配置文件 新的MySQL可能会与原数据库不同,需要对新的MySQL进行相应的配置,包括端口、IP地址等。 5. 测试数据迁移完成后,需要进行测试以确保数据完整性和应用程序的正常运行。可以对应用程序进行测试,或者使用MySQL命令检查数据是否正确导入到新的MySQL中。 总之,在进行MySQL数据库迁移前,需要进行充分的备份并测试数据库的完整性和应用程序的正常运行。同时,需要针对新的MySQL进行相应的配置。 ### 回答3: 在Linux下进行MySQL数据库迁移分为两个方面:备份和恢复。备份和恢复分别是指将原有的MySQL数据库备份到新的机器上以及将备份数据恢复到新机器中。 备份方面,我们可以使用mysqldump指令来完成备份,该指令可以将MySQL数据库备份成SQL脚本,通过该脚本可以将数据恢复到新机器上。具体操作步骤如下: 1.使用mysqldump指令备份MySQL数据库mysqldump -u root -p database_name > database_name_backup.sql 其中,root为MySQL的用户名,database_name为要备份的数据库名称,>表示将备份结果定向到一个sql文件中。 2.复制备份文件到新机器上: 将备份文件拷贝到新机器上,可以使用scp指令或者FTP等传输工具。 3.在新机器上创建原数据库: 创建空的MySQL数据库mysql -u root -p -e 'create database database_name' 其中,database_name为要创建的数据库名称。 4.将备份数据恢复到新机器: mysql -u root -p database_name < database_name_backup.sql 其中,<表示将备份文件贴入恢复指令中,从而将备份文件中的数据库信息恢复到新的MySQL数据库中。 需要注意的是,在进行MySQL数据库迁移的时候,需要保证MySQL的版本一致,并且在备份和恢复过程中,需要保证备份文件完整,不能出现文件损坏的情况。另外,在进行数据迁移的过程中,需要保证迁移前已经备份好了数据,以防数据出现丢失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值