主从

MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的。
MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
主从过程大致有3个步骤:
1)主将更改操作记录到binlog里
2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里中继日志
3)从根据relaylog里面的sql语句按顺序执行
主从节点的server——id不能相同 !!!!

使用场景

1、数据的备份。
单纯的读。当主服务器损坏,从服务器可以顶替
2、主从同时被使用
当主的服务器压力过大,从节点也被用来读数据。

配置

准备俩台虚拟机并安装好MySQL

主节点

  1. # 修改配置文件 /etc/my.cnf 确定有log_bin 和server_id
  2. [root@server ~]# vim /etc/my.cnf
  3. log_bin=lz
  4. server_id =38
  5. #可更改你自己的名字,server——id为你ip地址的最后一个位
  6. [root@server ~]# service mysqld restart
  7. Shutting down MySQL.. SUCCESS!
  8. Starting MySQL. SUCCESS!
  9. # 可以看到多出log_bin名为开头的两个文件,lz.000001、lz.index
  10. mysqladmin -uroot password '000000'
  11. 创建mysql用户和密码
  12. grant replication slave on *.* to 'repl'@192.168.100.39 identified by '000000';
  13. #ip地址为你自己从节点的ip地址
  14. # 刷新权限
  15. mysql> flush privileges;
  16. # 查看server节点状态
  17. mysql> show master status ;
  18. +------------+----------+--------------+------------------+-------------------+
  19. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  20. +------------+----------+--------------+------------------+-------------------+
  21. | lz.000001 | 410 | | | |
  22. +------------+----------+--------------+------------------+-------------------+

从节点

  1. # 从节点修改配置文件,确保有server_id 这个字段,
  2. # 字段id不要一样,一般以ip最后一位结尾
  3. [root@client ~]# vim /etc/my.cnf
  4. server_id = 39
  5. mysql> stop slave;
  6. # 创建连接, 主节点信息,bin_log文件名及大小
  7. mysql> change master to master_host='192.168.100.38',master_user='repl',master_password='000000',master_log_file='lz.000001',master_log_pos=410;
  8. #修改为你主节点的ip地址,master_password='000000',master_log_file='lz.000001',master_log_pos=410;
  9. 更改为你自己的数据库密码和上面主节点所查看的FilePosition
  10. mysql> start slave;
  11. mysql> show slave status\G;

测试

  1. # 主节点创建一个库,测试操作在这个库进行
  2. mysql> create database lz;
  3. Query OK, 1 row affected (0.00 sec)
  4. # 从节点查看同步信息
  5. mysql> show databases;
  6. +--------------------+
  7. | Database |
  8. +--------------------+
  9. | information_schema |
  10. | mysql |
  11. | performance_schema |
  12. | test |
  13. | lz |
  14. +--------------------+
  15. 5 rows in set (0.00 sec)
  16. # 000001文件大小为主节点操作命令组成
  17. # 可以通过bin_log文件恢复数据