您的位置:首页 > 数据库 > MySQL

Mysql 5.6主从同步配置与解决方案

2017-01-12 19:42 363 查看

Mysql 5.6主从同步配置与解决方案

基本环境配置

首先,要保证防火墙对3306端口的开启,(开启方式,请参考:[http://blog.csdn.net/xlgen157387/article/details/49964557]),如果只是为了学习数据库的主从配置,可以使用
service
iptables stop
 命令直接关闭防火墙。然后可以在两台机子之间进行 ping操作,确保两台机器之间能够相同。

Master的配置

server-id = 107
log-bin=F:\mysql-5.6.24-winx64\logs\logs-bin
server-id=2
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
binlog-do-db=zhihu3
123456123456这里的server-id用于标识唯一的数据库,这里设置为2,在设置从库的时候就需要设置为其他值。binlog-ignore-db:表示同步的时候ignore的数据库 binlog-do-db:指定需要同步的数据库完整配置截图如下:1、然后重启mysql2、进入mysql3、 赋予从库权限帐号,允许用户在主库上读取日志,赋予192.168.1.2也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。在Master数据库命令行中输入:
>GRANT FILE ON *.* TO 'root'@'192.168.1.2' IDENTIFIED BY 'mysql password';

>GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.2' IDENTIFIED BY 'mysql password';
>FLUSH PRIVILEGES
12341234这里使用的仍是 root 用户作为同步的时候使用到的用户,可以自己设定。4、重启mysql,登录mysql,显示主库信息,
mysql> show master status;
11
12345678912345678这里的 File 、Positionfc50是在配置Salve的时候要使用到的,Binlog_Do_DB表示要同步的数据库,Binlog_Ignore_DB 表示Ignore的数据库,这些都是在配置的时候进行指定的。另外:如果执行这个步骤始终为
Empty set(0.00 sec)
,那说明前面的my.ini或者my.cnf没配置对。

Slave的配置

1、从库的配置,首先也是修改配置文件:my.ini如下:
log-bin=D:\mysql\mysql-5.6.24-winx64.1432007928\mysql-5.6.24-winx64\logs\logs-binserver-id=3binlog-ignore-db=information_schemabinlog-ignore-db=clusterbinlog-ignore-db=mysqlreplicate-do-db=zhihu3replicate-ignore-db=mysqllog-slave-updatesslave-skip-errors=allslave-net-timeout=60relay-log-index = slave-relay-bin.indexrelay-log = slave-relay-bin
12345678910123456789102、这里可以看到,在MySQL5.6之后的版本中没有指定:
master-host=192.168.1.1 #Master的主机IPmaster-user=rootmaster-password=mysql password #Master的MySQL密码
1231233、这也是在网上很多搜索的配置过程,他们也都指定了数据库的版本,但是并没有说出来新版本的配置这种方式是不适用的。4、如果,你在MySQL5.6和之后的版本中配置从库的时候,设置到了上边的内容,即指定了master-host、master-user等信息的话,重启MySQL的时候就回报错,错误信息如下:
[root@VM_128_194_centos bin]# service mysqld restartShutting down MySQL... SUCCESS!Starting MySQL... ERROR! The server quit without updating PID file (/data/mysqldb/VM_128_194_centos.pid).[root@VM_128_194_centos bin]# 
12341234此时,查看数据库的报错信息(数据库的目录, /data/mysqldb/VM_128_194_centos.err ),可以看到:
2016-05-06 13:12:04 13345 [Note] InnoDB: Waiting for purge to start2016-05-06 13:12:04 13345 [Note] InnoDB: 5.6.27 started; log sequence number 28502112016-05-06 13:12:04 13345 [ERROR] /data/home/server/mysql-5.6.27/bin/mysqld: unknown variable 'master-host=192.168.1.1'2016-05-06 13:12:04 13345 [ERROR] Aborting
1234512345可以看出
master-host
 被检测数是一个未知的变量,因此会出现错误。5、在5.6以及后续版本的配置如下:修改完my.ini文件之后,重启一下MySQL(service mysqld restart)进入Slave mysql控制台,执行:
mysql> stop slave;  #关闭Slave
mysql>change master to master_host='10.10.4.204',master_user='admin',master_password='123456', master_log_file='logs-bin.000002',master_log_pos=120;
mysql> start slave;  #开启Slave
1234512345在这里指定Master的信息,master_log_file是在配置Master的时候的File选项, master_log_pos是在配置Master的Position 选项,这里要进行对应。然后可以通过
mysql> show slave status;
 查看配置的信息:
mysql> show slave status \G;
Slave_IO_Running: YesSlave_SQL_Running: Yesmysql>
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263可以看到,已经配置成功。

真正的测试

在主库中新增数据库表,user,观察从库变化如下:创建数据库的时候:新增数据的时候:删除Master数据库表的时候: 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: