一、主从作用
1、实时灾备,用于故障切换。让主库极其接近从库,主库宕机,启动从库开展业务
2、实现读写分离,在从库设置只读参数
3、备份,避免影响业务
二、原理
1、从库启动一个线程(叫做IO线程),连接主库
2、主库接受连接,主库为从库启动一个线程(dump线程),读取binlog,传输到从库
3、IO线程将接受到的binlog日志写入从库的relaylog日志中(mysql-relay-bin.xxxxx)
4、从库启动一个sql apply线程读取relay log(读取完之后,自动删除),应用binlog中的sql语句
注意:
1、主库的dump线程是因为从库的IO线程连接才产生。
2、要分离看io thread和sql thread
备份从库的时候,可以关闭sql thread,io thread正常运行
三、主从架构搭建
1、主库上建立一个账号,并在从库测试使用,为账号授权
create user backup@'172.16.11.11' identified by '123456'; grant replication slave,replication client on *.* to backup@'172.16.11.11'; mysql -ubackup -p123456 -h172.16.22.22 -P3306
2、在配置文件中,开启主库的binlog、设置server_id=1、重启mysql
3、使用xtrabackup对主库做备份,会有binlog恢复的起点
yum localinstall libev4-4.15-7.1.x86_64.rpm libev-devel-4.15-21.1.x86_64.rpm percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm perl -DBD-MySQL-4.013-3.el6.x86_64.rpm perl-DBI-1.609-4.el6.x86_64.rpm -y
innobackupex --user=root --password=123456 --no-timestamp /backup innobackupex --apply-log /backup
cat xtrabackup_binlog_info mysqlbinlog.000008 154
4、在从库安装和主库完全一致的mysql软件,不需要初始化从库,如果已经初始化,手工删除
5、修改从库的配置文件
server_id=2
log_bin=mysqlbinlog
binlog_format=ROW或者MIXED
read_only=1 //从库只读
binlog_rows_query_log_events=on
6、使用scp -r将主库的备份传递到