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 |
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个值。所以重做之前需要先查看记住这几个参数。