mysql主从复制(版本不一致)
mysql主从复制要求版本最好一致,至少前两个版本号相同,因为官方推荐这样,最主要还是怕版本不一致带来的不兼容问题;最近刚好在学习mysql主从复制,我已经有了两台服务器,但是mysql版本并不一致,但是既然版本不一致有可能导致不兼容,那么我就让低版本作为主master,高版本作为从slave。一台服务器为虚拟机centos7,IP地址为192.168.84.23,安装的mysql版本为5.5.5
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的话就成功了,赶紧去测试吧(在主服务器建库、建表、插入数据,然后去从服务器查看吧)
更多推荐
所有评论(0)