首先创建一个给从服务器的用户
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更新,这样主从复制就断了,不知道怎么解决