mysql5.6主从复制

Posted 殍地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql5.6主从复制相关的知识,希望对你有一定的参考价值。

首先创建一个给从服务器的用户

GRANT REPLICATION SLAVE ON *.* to ‘从服务器用户帐号‘@‘从服务器地址‘ identified by ‘从服务器用户密码’;

然后给这个从服务器用户处理数据库的权限

grant all privileges to 数据库名.* to ‘从服务器用户帐号‘@‘从服务器地址‘ identified by ‘从服务器用户密码’;

要多少个数据库就重复写多少次

接下来配置主服务器

修改 master 的my.cnf配置文件,在[mysqld]下添加如下配置:

[mysqld]

log-bin=/usr/local/mysql56/binlog/master-bin

log-bin-index=/usr/local/mysql56/binlog/master-bin.index

binlog-do-db=要同步的数据库(多个换行重写)

server-id=1

说明:

log-bin 配置的是开启二进制日志,并将日志写在配置的路径上。记录的日志将以master-bin.000001 的方式进行记录。

log-bin-index 配置的是二进制日志记录文件的目录。该文件中每一行都是二进制日志文件的路径。

server-id是该MySQL服务器的服务ID,用于区分在主从配置中的其他服务器。

配置成功后,重启mysqld服务。

注意:如果不定义log-bin的文件名,则会以hostname主机名命名,一旦主机名修改,则会因为找不见二进制文件报错。所以最好还是显示指定文件名。

 

修改 slave 的my.cnf配置文件,在[mysqld]下添加如下配置:

server-id=11

relay-log=/usr/local/mysql56/binlog/slave-relay-bin

relay-log-index=/usr/local/mysql56/binlog/slave-relay-bin.index

replicate-do-db=需要复制的数据库(多个换行重写)

server-id和master意义一样,用于区分不同的mysql服务器。

relay-log用以记录收到的中继二进制日志。relay-log-index用以保存收到的日志路径索引。如果不显示指定文件名,则以hostname值命名。

保存后可以重启mysqld服务。

 

在主数据库输入show master status,记下file和position的值,这个在从数据库连接的时候要用

在从数据库输入

stop slave;

reset slave all;

change master to master_host=’主数据库ip’, master_user=’从服务器用户帐号’, master_password=’从服务器用户密码’, master_port=主数据库端口, master_log_file=‘主数据库的file’, master_log_pos=主数据库的position;

然后 start slave;

之后show slave status \G;

在打印出来的状态下,查看以下两个参数的值:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

如果这两个参数的值都是yes,则运行正常


 

不过这个发现主数据库重启之后,就会把file更新,这样主从复制就断了,不知道怎么解决

以上是关于mysql5.6主从复制的主要内容,如果未能解决你的问题,请参考以下文章

Mysql5.6主从复制-基于binlog

MySQL5.6复制技术-MySQL主从复制线程状态转变

centos7下mysql5.6的主从复制

MySQL5.6复制技术-主从部署详细过程

mysql5.6做单向主从复制Replication

mysql5.6主从复制