一、环境
1 操作系统 :CentOS 6.5
2 数据库版本:MySQL 5.6.27
3 主机A:192.168.1.1(Master)4 从机B:192.168.1.2(Slave)5 从机B:192.168.1.3 (Slave)
二、基本环境配置
MYSQL是通过3306端口访问的,所以要保证防火墙对3306端口的开启。
三、Master的配置
1、配置my.cnf
在Linux环境下MySQL的配置文件的位置是在 /etc/my.cnf ,在该文件下指定Master的配置如下:
[root@mycentos ~]# vim /etc/my.cnf
server-id = 1# 一般用IP的最后一段,这个标识是唯一的log-bin = mysql-bin
binlog-ignore-db =test # 排除不同步的库
binlog-ignore-db =mysql
binlog-ignore-db =performance_schema
binlog-ignore-db =information_schema
binlog-do-db =vertical_analysis # 选择要同步的库
binlog_format=mixed
expire_logs_days= 7relay-log = relay-loglog_slave_updates
skip-slave-start
说明:
binlog-ignore-db:表示同步的时候ignore的数据库
binlog-do-db:指定需要同步的数据库
2、重启mysql
[root@mycentos ~]# service mysqld restart
3、进入mysql
[root@mycentos ~]# mysql -u root -p
4、 赋予从库权限帐号
允许用户在主库上读取日志,赋予192.168.1.2/3也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。
在Master数据库命令行中输入:
mysql> GRANT FILE ON *.* TO 'slaver'@'%' IDENTIFIED BY '123456';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slaver'@'%' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES
这里slaver 用户作为同步的时候使用到的用户,可以自己设定。
5、检测授权结果
mysql> select * from user where host='%' and user='slaver'\G;
# 如果Repl_slave_priv项为Y,表示授权成功。
6、查看主数据库master状态
mysql>show master status;+------------------+----------+-----------------------+---------------------------------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+-----------------------+---------------------------------------------------+-------------------+
| mysql-bin.000004 | 28125 | vertical_analysis | performance_schema ,information_schema,test,mysql | |
+------------------+----------+-----------------------+---------------------------------------------------+-------------------+
1 row in set (0.00 sec)
这里的 File 、Position 是在配置Salve的时候要使用到的,Binlog_Do_DB表示要同步的数据库,Binlog_Ignore_DB 表示Ignore的数据库,这些都是在配置的时候进行指定的。
四、Slave的配置
1、配置my.cnf
[root@mycentos ~]# vim /etc/my.cnf
server-id = 2# 一般用IP的最后一段,这个标识是唯一的log-bin = mysql-bin
binlog_format=mixed
expire_logs_days= 7relay-log = relay-log# 注意:不同的slave这里也是唯一的
binlog-ignore-db =information_schema
binlog-ignore-db =performance_schema
binlog-ignore-db =mysql
binlog-ignore-db =testreplicate-do-db =vertical_analysisreplicate-ignore-db =mysql
log_slave_updates
skip-slave-start
slave-skip-errors = allslave-net-timeout = 60
2、配置Slave同步信息
mysql>stop slave;
mysql> change master tomaster_host='192.168.1.1',
master_port=3306,
master_user='slaver',
master_password='123456',
master_log_file='mysql-bin.000004',
master_log_pos=28125;
mysql> start slave;
3、检测从数据库复制功能状态
mysql>show slave status\G;
# 其中下面两项都必须为yes。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
五、验证
在主库上建一张表,看下从库是否同步过来。
附:
错误1:Slave failed to initialize relay log info structure from the repository
解决方法:使用reset slave all清空所有的复制信息,然后重置master.info、start slave后复制正常。