主从复制的作用是做冗余备份,而且主从做读写分离的话 往往从库会有好几台 分担了压力 并且可以直接做负载均衡。
环境:
- 两台服务器做配置测试:虚拟机中的 ubuntu (192.168.128.101) 和宿主机 win 10 (192.168.128.100)
- 分别安装有 MySQL,最好版本一样(我的不一样)
- 机子都 ping 得通
主服务器配置(CentOS)
配置 mysql
在 my.ini 中添加配置
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=1 #[必须]服务器唯一ID,默认是1,一般取IP最后一段
检查 MySQL 是否允许远程连接
bind-address = 0.0.0.0 #这样表示允许所有网段连接
进入 MySQL 终端
#mysql -uroot -p
新建 MySQL 用户(从服务器需要用到此账号)backup
mysql> GRANT REPLICATION backup ON *.* to 'backup'@'192.168.128.%' identified by 'backup';
刷新一下权限表
mysql> flush privileges;
重启 MySQL
systemctl restart mysql
进入 MySQL 终端查看 master 状态
mysql> show master status;
记录 File 和 Position 的值,从服务器配置用到。这个时候不要去动主数据库,会影响 position 的值。
从服务器配置(win 10)
在 my.ini 中添加配置
[mysqld]
log-bin=mysql-bin #[可选]启用二进制日志
server-id=2
重启 MySQL
登录 MySQL 终端后执行
mysql> change master to master_host='192.168.128.101',
master_user='backup',
master_password='backup',
master_log_file='mysql-bin.000002',
master_log_pos=612;
启动 slave 从库
mysql> start slave;
查看 slave 从库
mysql> show slave status\G;
Slave_IO_Running 和 Slave_SQL_Running 必须都为 Yes 才算成功。
测试
往主库插入数据,观察从库数据是否跟主库同步。