欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-26 10:12:01
mysql主从复制要求版本最好一致,至少前两个版本号相同,因为官方推荐这样,最主要还是怕版本不一致带来的不兼容问题;最近刚好在学习mysql主从复制,我已经有了两台服务器,但是my...

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的话就成功了,赶紧去测试吧(在主服务器建库、建表、插入数据,然后去从服务器查看吧)