主从
MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的。
MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
主从过程大致有3个步骤:
1)主将更改操作记录到binlog里
2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里中继日志
3)从根据relaylog里面的sql语句按顺序执行
主从节点的server——id不能相同 !!!!
使用场景
1、数据的备份。
单纯的读。当主服务器损坏,从服务器可以顶替
2、主从同时被使用
当主的服务器压力过大,从节点也被用来读数据。
配置
主节点
# 修改配置文件 /etc/my.cnf 确定有log_bin 和server_id
[root@server ~]# vim /etc/my.cnf
log_bin=lz
server_id =38
#可更改你自己的名字,server——id为你ip地址的最后一个位
[root@server ~]# service mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
# 可以看到多出log_bin名为开头的两个文件,lz.000001、lz.index
mysqladmin -uroot password '000000'
创建mysql用户和密码
grant replication slave on *.* to 'repl'@192.168.100.39 identified by '000000';
#ip地址为你自己从节点的ip地址
# 刷新权限
mysql> flush privileges;
# 查看server节点状态
mysql> show master status ;
+------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------+----------+--------------+------------------+-------------------+
| lz.000001 | 410 | | | |
+------------+----------+--------------+------------------+-------------------+
从节点
# 从节点修改配置文件,确保有server_id 这个字段,
# 字段id不要一样,一般以ip最后一位结尾
[root@client ~]# vim /etc/my.cnf
server_id = 39
mysql> stop slave;
# 创建连接, 主节点信息,bin_log文件名及大小
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;
#修改为你主节点的ip地址,master_password='000000',master_log_file='lz.000001',master_log_pos=410;
更改为你自己的数据库密码和上面主节点所查看的File和Position
mysql> start slave;
mysql> show slave status\G;
测试
# 主节点创建一个库,测试操作在这个库进行
mysql> create database lz;
Query OK, 1 row affected (0.00 sec)
# 从节点查看同步信息
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| lz |
+--------------------+
5 rows in set (0.00 sec)
# 000001文件大小为主节点操作命令组成
# 可以通过bin_log文件恢复数据