zoukankan      html  css  js  c++  java
  • mysql数据目录迁移及注意点

    场景

    由于当前mysql所在目录盘存储不够,需要将数据目录迁移到其他大存储路径下,此数据服务为其他库的从库(备份库),不负责读写功能。

    方案设计

    因为该库只是备份库,不承担业务读写服务,所以方案如下仅供参考
    1:停掉该数据库的服务 systemctl stop mysqld@3306
    2-1: 本机数据目录迁移只需要使用mv命令将数据文件目录挪到其他可用目录下 mv mysqldata3306 /data/ (将当前路径下的mysqldata3306数据目录及目录下的文件挪到data目录下,该命令挪文件会将目录所属权限一并挪走)
    2-2:远程数据目录迁移需要保证远端机器已经安装mysql数据库,最好保证两边安装版本一致,使用scp -r /home/administrator/mysqldata3306 root@192.168.1.100:/data/ (将mysqldata3306数据目录及目录下的文件挪到远端机器data目录下)
    数据拷完之后记得在远端修改文件目录所属权限 chown -R mysql:mysql mysqldata3306
    3:数据文件拷贝完成需要修改my.cnf配置文件 ,将之前的配置文件数据目录替换成现在数据文件所在的文件目录即可,远程拷贝同理。
    4:如果该库是单库没有主从节点则到这一步即可以启动数据库服务,但是当前的场景是该数据库为一个从库(备份库),启动后会恢复之前的主从通信,sql线程会去读中继日志relaylog,而在移动数据文件之前mysql-relay-bin.index会记录在挪文件之前的
    日志存储路径,所以需要将这个mysql-relay-bin.index文件里边的数据路径一并替换成当前的数据文件所在路径,重启服务即可(systemctl start mysqld@3306),否则主从报错。

    问题延伸

    如果上述节点存在开启binlog日志写入,则在启动mysql服务前还需要修改mysql-bin.index文件里边的路径为当前文件目录路径,否则启动服务异常,报错mysqld@3306.service: control process exited, code=exited status=1

    重点回顾

    1:必须注意移动mysql数据文件之后的数据文件目录权限 chown -R mysql:mysql mysqldata3306
    2: 必须修改mysql.cnf配置文件的路径配置,改成当前数据文件所在目录
    3:有开启binlog日志写入参数必须修改mysql-bin.index文件里边的路径为当前文件目录路径
    4:有主从服务必须修改mysql-relay-bin.index文件里边的数据路径为当前文件目录路径

  • 相关阅读:
    【NOIP2012模拟10.6】填充棋盘
    【NOIP2012模拟10.6】购买
    ASP.NET网站权限设计实现(二)——角色权限绑定
    ASP.NET网站权限设计实现(一)——使用PowerDesigner进行数据库设计
    获取post发送过来的xml包
    js正则表达式30分钟入门教程
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    js 取整
    [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》
    c# 多线程排队队列实现的源码
  • 原文地址:https://www.cnblogs.com/whiteY/p/14103073.html
Copyright © 2011-2022 走看看