mysql 从库变更实例目录及端口

mysql有时候需要做一些目录,主机名,ip,以及端口的调整,那是不是直接进行数据目录变更或者参数变更呢?

本文将讲解关于端口变更(包含目录变更)后如何正常启动数据库继续服务。


背景:

主库使用的是3306端口,从库使用的是3307端口,为什么保证端口一致,决定将从库的端口调整为3306,并且将数据目录也做一次变更(这里为什么要做数据目录变更,跟我的安装习惯有很大关系,我习惯将数据目录和端口命名保持一致)
【尊重原创,本文地址:http://blog.csdn.net/wlzjsj/article/details/52289899】

一、变更目录和参数

注意先停掉数据库
mysqladmin shutdown -S /xxxxxx/mysql.sock

1.1. 备份

备份整个数据目录,记得复制的时候加参数 -p
root@s0136-gz:/data/mysql_root# cd data/
root@s0136-gz:/data/mysql_root# cp -rpf 3007 3307_bk
root@s0136-gz:/data/mysql_root# mv 3307 3306
root@s0136-gz:/data/mysql_root/tmpdir# cp -rpf 3307 3307_bk
root@s0136-gz:/data/mysql_root/tmpdir# mv 3307 3306

数据目录已经备份,并且也将数据目录生成了一份完整的到3306了,这里大家不要忘记检查下各个目录的权限和分组是否属于mysql

1.2 修改配置文件

我这里是从库,修改的配置文件会比主库或者单实例稍多一点,从库修改一共三个文件需要修改

1.2.1 修改my.cnf

sed -i 's/3307/3306/g' ./my.cnf
修改完成后最好还是进去检查下是否都修改成功了

1.2.2 修改 mysql-bin.index

sed -i 's/3307/3306/g' ./mysql-bin.index
同样修改完成后最好还是进去检查下是否都修改成功了

1.2.3 修改relay-bin.index

sed -i 's/3307/3306/g' ./relay-bin.index
同样修改完成后最好还是进去检查下是否都修改成功了

【尊重原创,本文地址:http://blog.csdn.net/wlzjsj/article/details/52289899】

二 启动数据库,配置主从

2.1 启动数据库
启动数据库的方式与你本机的启动命令一致即可,我的是使用的mysqld_safe启动的,启动正常,进入mysql后查看主从:
mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: xx.xx.xx.xx
                  Master_User: repuser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000024
          Read_Master_Log_Pos: 422777344
               Relay_Log_File: relay-bin.000026
                Relay_Log_Pos: 422777507
        Relay_Master_Log_File: mysql-bin.000024
             Slave_IO_Running: No
            Slave_SQL_Running: No
              Replicate_Do_DB: 
                      ......
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 422777344
              Relay_Log_Space: 0
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No

发现主从同步已经停掉了,直接start slave是否可行,我们试试:
mysql> start slave;
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

报错了,应该是master.info文件识别不了新的目录,查看也没有办法更改,但是我们数据库已经启动了,说明数据库服务是没有问题的,那我们只要重新设置下主从同步即可:
mysql>reset slave;
mysql>change master to master_host='xx.xx.xx.xx',master_port=3306,master_user='repuser',master_password='yourpass',master_log_file='mysql-bin.000024',master_log_pos=422777344;

【尊重原创,本文地址:http://blog.csdn.net/wlzjsj/article/details/52289899】

注意重新指定的时候,要注意指定的masterbinlog和binlog的pos位置,这里使用Relay_Master_Log_File 和 Exec_Master_Log_Pos这2个值。所以重做之前需要先查看记住这几个参数。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值