MySQL复制——主从复制
复制作用:
- 实现真正的热备
- 降低主节点的压力
- 实现高可用
- 用来实现测试环境和生产环境一致(sql审计)
复制的过程
mysql主从复制、mysql主从同步、AB复制
主节点:master
从节点:slave
复制过程是单向的,只能从主到从主节点和从节点server_id必须不能相同,建议:端口号+ip地址的最后一位,2^32-1
需要启用二进制日志、中继日志
建议用一个权限较低的用户实现复制:grant replication slave on . to ‘repluser’@’%’ identified by ‘123’;
主从复制用到三个进程
主节点:
dump thread:当主机节点产生新数据,会立刻激活从节点的 io thread
从节点:
io thread:向主节点请求新产生的数据的二进制日志
sql thread:将中继日志中的内容读取出来
注意:
1. 关闭从节点的二进制日志
2. 从节点万万不可启动写功能
主从复制的架构
1.一主一从
2.一主多从
3.多主一从
4.多主多从
分析器
mysql-proxy:
amoeba:
注意:
1.用双主模型不能降低对于主节点的写压力降低主节点的写压力分库和分表
2.主节点已经跑了一段时间(主节点存在了很多数据)
在从节点做备份,然后在主节点还原备份,然后开始做同步
简单mysql主从复制
主节点的配置:
1. 确认server-id唯一
2. 确认启用了二进制日志
3. 创建有复制权限的用户
4. 配置时间同步
从节点的配置:
1. 确认server-id唯一
2. 启用中继日志
3. 关闭从节点的二进制日志
4. 连接主节点
5. 启动复制线程
6. 配置时间同步
配置主节点:
-
修改配置文件my.cnf
server-id = 1003306
log-bin = /data/mysql/mysql3306/logs/mysql-bin
binlog_format = mixed
gtid-mode = on
enforce-gtid-consistency=1 -
重启mysql
# mysqladmin -uroot -p123 shutdown
# mysqld & -
创建有复制权限的用户
mysql> create user 'repuser'@'%' identified by 'A@123.com'; Query OK, 0 rows affected (0.00 sec) mysql> grant replication slave on *.* to 'repuser'@'%'; Query OK, 0 rows affected (0.00 sec)
配置从节点:
-
修改时间和主服务器同步
-
修改配置文件
server-id = 2003306 log-bin = /data/mysql/mysql3306/logs/mysql-bin binlog_format = mixed relay-log = /data/mysql/mysql3306/logs/relay-bin gtid-mode = on enforce-gtid-consistency=1
-
重启mysql
# mysqladmin -uroot -p123 shutdown
# mysqld & -
连接主服务器
> CHANGE MASTER TO MASTER_HOST=‘10.220.5.243’, MASTER_USER=‘repluser’, MASTER_PASSWORD=‘123’; -
查看从端的状态信息
> SHOW SLAVE STATUS;
Slave_IO_Running: No
Slave_SQL_Running: No -
启动线程
start slave
-
再次查看状态信息
SHOW SLAVE STATUS;
Slave_IO_Running: yes
Slave_SQL_Running: yes此时:主端的所有操作,从端会自动执行