特别提示:本方法适用于mysql5.6版本,5.6以前的版本配置方法不同,我没有做测试
由于一主多从和一主一从的配置方法一样,所以本文仅测试一主一从,可自主扩展到多从
环境:
server1 master centos7 mysql5.6
server2 slave centos7 mysql5.6
......
serverN slave centos7 mysql5.6
配置:
server1 master角色
由于我是yum安装的mysql,所以
#vim /etc/my.cnf 添加如下行
server-id=1 log-bin=/var/log/mysql/logbin/mysql-bin binlog-do-db=radius
server-id:用于标识,和slave角色的server-id区分开就行,没有大小之分
log-bin:指定binlog的目录和文件,注意:这个文件和路径一定要存在,如果你用mysql用户启动的话,也要修改该文件的属主为mysql
binlog-do-db:指定你要同步的数据库,如果你想忽略某些数据库的话,可以使用binlog-ignore-db参数
配置完成后,重启mysql
#service mysqld restart
重启后,登录mysql控制台,新建一个账户,该账户主要是用于从库登录上来同步数据用的
mysql>grant all privileges on *.* to 'user'@'%' identified by 'your_password';
mysql>flush privileges;
查看主库状态
mysql>show master status; //如果出现如下字符说明配置正确
mysql> show master status; +------------------+----------+--------------+----------------------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+----------------------------------+-------------------+ | mysql-bin.000004 | 28125 | ufind_db | information_schema,cluster,mysql | | +------------------+----------+--------------+----------------------------------+-------------------+ 1 row in set (0.00 sec)
注意上面显示的File和Position字段,待会从库同步的时候需要用到
server2 slave配置
#vim /etc/my.cnf 添加如下行
server-id=2 binlog-do-db=radius
注意:配置这两行就可以了,其他文章说有要配置binlog的,其实没必要配置,从库只是从主库去拿binlog,然后恢复到从库本地来,所以不用配置binlog
如果你的从库下面级联了第二级的从库的话,就必须要配置binlog了,否则下级的从库无法同步数据
重启数据库
#service mysqld restart
既然要从主库拿binlog,那在哪配置账户密码呢?重点来了
重启完数据库实例后,登录mysql控制台,执行如下语句
mysql>change master to master_host='server1_ip',master_user='root',master_password='your_pass',master_log_file='mysql-bin.000004',master_log_pos=28125;
Query OK, 0 rows affected, 2 warnings (0.03 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
在上面的sql语句中指定主库的账号密码,其中
master_log_file='mysql-bin.000004',输入上一步中主库里面查出来的File字段
master_log_pos 输入输入上一步中主库里面查出来的Position字段
然后执行start slave命令就可以开始同步了,
这时候主库里面插入一条数据,从库就可以自动同步过来了
参考资料:https://blog.csdn.net/xlgen157387/article/details/51331244/