当前位置: 移动技术网 > IT编程>数据库>Mysql > mysql主从复制(版本不一致)

mysql主从复制(版本不一致)

2019年04月19日  | 移动技术网IT编程  | 我要评论

mysql主从复制要求版本最好一致,至少前两个版本号相同,因为官方推荐这样,最主要还是怕版本不一致带来的不兼容问题;最近刚好在学习mysql主从复制,我已经有了两台服务器,但是mysql版本并不一致,但是既然版本不一致有可能导致不兼容,那么我就让低版本作为主master,高版本作为从slave。一台服务器为centos7,ip地址为192.168.84.23,安装的mysql版本为5.5.56;另一台服务器为win7(即本机),ip地址为192.168.84.15,安装的mysql版本为5.6.26.

1.修改主服务器上的mysql配置文件my.cnf, #vi /etc/my.cnf

(1)主要设置这三个参数:

# replication master server (default)

# binary logging is required for replication

log-bin=mysql-bin

# binary logging format - mixed recommended

binlog_format=mixed

# required unique id between 1 and 2^32 - 1

# defaults to 1 if master-host is not set

# but will not function as a master if omitted

server-id =23(这里23即ip地址最后位,一般这样设置,只要独一无二即可)

这里有一个问题就是有的人进入my.cnf文件找不到“# replication master server (default) # binary logging is required for replication”这样的描述,原因是你当时安装mysql的时候,在mysql文件下的support-files文件夹下拷贝配置文件到/etc/my.cnf时,你也许选择了拷贝mysql-small.cnf这个文件,当然文件夹下还有mysql-medium.cnf、mysql-large.cnf、mysql-huge.cnf等等;如果你找不到那样的描述符,就换一个把mysql-medium.cnf拷贝到/etc/下,并重命名为my.cnf,就可以看到那些描述了

设置完那三项参数后,保存退出,重启mysql服务。

(2)接下来从服务器也要设置那些参数,这里也有一个问题,由于从服务器是win7,我用的mysql是解压版,根目录下有一个配置文件my-default.ini,我们必须重新复制一份,并重命名为my.ini,如果不新建一份用原来默认的话,操作时就会报下面的错:

error 1794 (hy000): slave is not configuredor failed to initialize properly. you must at least set --server-id to enableeither a master or a slave. additional error messages can be found in the mysqlerror log.

新建好后,就可以修改下面参数:

# remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

log_bin=mysql-bin

binlog_format=mixed

# these are commonly set, remove the # and set as required.

basedir = d:\mysql\mysql-5.6.26-winx64

datadir = d:\mysql\mysql-5.6.26-winx64\data

# port = .....

server_id = 15

改完后保存退出,重启mysql服务,cmd命令行#net stop mysql关闭服务,然后#net start mysql启动服务;一定要管理员权限运行cmd哦

2.在主库创建从库用户

进入主服务器的mysql界面,命令: # mysql -u root -p 123456 //我这里mysql账号是root,密码是123456

在mysql操作界面下,输入下面几行命令:

mysql> insert into mysql.user(host,user,password) values('localhost','slaveuser',password('123456'));

mysql>flush privileges;

mysql>grant replication slave on *.* to 'slaveuser'@'192.168.84.15' identified by '123456' with grant option;

3.查看主服务器bin日志的信息(执行完之后记录下这两值,然后在配置完从服务器之前不要对主服务器进行任何操作,因为每次操作时这两值会发生改变).

mysql>show master status; 会显示mysql-bin.000004 和 107 ,你的可能跟我的不一样,并且每次都会变化,要记住这两个值

4进入从服务器mysql

命令: # mysql -u root -p 123456

关闭slave(如果你不知道以前有没有配置过主从,都先关闭)

命令:stop slave;

然后输入如下语句:

mysql>change master to master_host="172.20.84.23",master_user="slaveuser",master_password="123456",

master_log_file="mysql-bin.000004",master_log_pos=107;

执行成功后,启动slave #start slave;

5.输入#show slave status\g;(注意这里最后加了\g输出一目了然,不加的话字段太多,排版都乱了)

查看是否配置成功,如果slave_io_running和slave_sql_running都为yes的话就成功了,赶紧去测试吧(在主服务器建库、建表、插入数据,然后去从服务器查看吧)

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网