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

来源:互联网 发布:jdk 7 linux x64.tar 编辑:程序博客网 时间:2024/06/01 13:33

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




原创粉丝点击