主服务器
主服务器配置(Master,192.168.11.125)
# vim /etc/my.cnf
...
log-bin=mysql-bin
server-id=125
innodb_flush_log_at_trx_commit=1
sync_binlog=1
binlog-do-db=mytest
...
重启mysql并查看状态
# systemctl restart mysqld.service
# systemctl status mysqld.service
查看是否开启二进制日志
mysql> show global variables like '%log_bin%';
--过程中的报错---
ERROR 1146 (42S02): Table 'performance_schema.
在mysql中执行
mysql> mysql_upgrade -uroot -p --force
然后重启mysql 重新设置密码和允许远程连接等
log_bin等于ON表示开启日志
查看主节点二进制日志列表
mysql> show master logs;
查看主节点的serverid
mysql> show global variables like '%server%';
为从服务器设置账号
赋予192.168.11.126也就是Slave机器有File权限,还要给它REPLICATION SLAVE的权限才可以。
创建用户kevinms 密码123456
mysql> flush privileges;
mysql> grant FILE on *.* to 'kevinms'@'192.168.11.126' identified by '123456';
mysql> grant replication slave on *.* to 'kevinms'@'192.168.11.126' identified by '123456';
mysql> flush privileges;
查看主库信息
mysql> show master status;
+------------------+----------+--------------+
| File | Position | Binlog_Do_DB |
+------------------+----------+--------------+
| mysql-bin.000005 | 1081 | mytest |
+------------------+----------+--------------+
这是从服务器配置时需要用到的参数;
如果该命令没数据,说明上面配置有误;
File是同步会使用到的binlog文件;
Position是同步的时候也要用到的参数;
到此主服务器设置完成
从服务器
从服务器配置(Slave, 192.168.11.126)
# vim /etc/my.cnf
...
log-bin=mysql-bin
server-id=126
replicate-do-db=mytest
log-slave-updates=1
slave-skip-errors=all
slave-net-timeout=60
...
重启mysql
# systemctl restart mysqld.service
# systemctl status mysqld.service
查看中继日志是否开启
mysql> show global variables like '%log%';
设置从库访问主库
mysql> stop slave; //现暂停同步
mysql> change master to master_host='192.168.11.125',master_user='kevinms',master_password='123456',master_log_file='mysql-bin.000005', master_log_pos=1081;
参数说明
master_host=‘106.12.2.195’, 主库ip地址
master_user=‘niuxitong’, 设置的账号
master_password=‘niu123456’, 密码
master_log_file=‘mysql-bin.000001’, 上面查询到的File字段值
master_log_pos=895; 上面查询到的Position字段值
mysql> start slave; //开启同步
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes