主从复制的作用是做冗余备份,而且主从做读写分离的话 往往从库会有好几台 分担了压力 并且可以直接做负载均衡。

环境:

  • 两台服务器做配置测试:虚拟机中的 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 才算成功。

测试

往主库插入数据,观察从库数据是否跟主库同步。