主从搭建原理

1、在主库建立一个账号,使得从库可以连接

  判断标准:在从库使用mysql -ubackup -p*** -h 主库 ip 地址 -P3306,能够正常连接主库

    grant replication slave on *.* to 'backup'@'%' identified by '***';

2、对于主库的最基本要求

  1、开启binlog

  2、设置server_id=1

  3binlog_formatrow或者mixed模式

    binlog_rows_query_log_events=on

    log-bin=server

    重启mysqlshow variables like '%...%'; 确认修改生效

3、在主库做一个备份,最好使用xtrabackup,因为我们需要知道binlog恢复的起点

4、在从库安装一个和主库完全一致的mysql软件,不需要初始化从库,如果已经初始化,手工删除。

5、修改从库的配置文件

  必须修改server_id=2和主库不一样

  read_only=1(非all*.*权限的用户,包含至高权限root@localhost

  binlog_format=row

  binlog_rows_query_log_events=on

  log-bin=slave

6、使用scp -r将主库的备份传递到从库

7、在从库上执行xtrabackup进行恢复,恢复完成以后,chown -R修改权限

  [root@localhost mysql]# cat xtrabackup_info

    binlog_pos = filename 'mysqlserver.000004', position '995'

8chown+startup,启动从服务器

9、建立主从关系

  mysql> Change master to master_host='192.168.10.10',master_port=3306,master_user='backup',master_passwo rd='123456',master_log_file='mysqlserver.000004',master_log_pos=995 master_connect_retry=10;

    change master 的意思是:

      1、主库在哪,使用哪个用户来连接

      2、从哪个位置开始要binlog

10、在从库上开启从库:

  mysql> Start slave后,从库会建立IO线程去连接主库,主库会启动binlog dump线程,负责读 binlog,把日志推送到从库的relay log里去。

  Binlog dump线程是一个IO繁忙的线程,比较繁忙,是mysqldbinlog这个程序改过来的。

    看是否iosql线程都启动

    从库执行Show processlist,会启动两个线程

  IO线程接收主库的binlog,并写到relay log 里去,

  sql线程,读取relay log,应用relay log

  下面这两种状态说明从库非常闲:

    Statewaiting for master to sent event(等待主库发送事件)

    Stateslave has read all relay log;waiting for the slave I/O thread to update it

    (从库已经读取所有的relay中继日志,正在等待从库IO线程拉取最新的日志来更新中继日志)

12在主库上执行show processlist

  查看dump线程是否启动

13从库show slave status\G

  查看iosql线程是否有错误:

    Last_IO_Errno: 0

    Last_IO_Error:

    Last_SQL_Errno: 0

    Last_SQL_Error:

14、主库上执行dmlddl,确认从库是否会有数据同步过来

posted @ 2019-06-04 19:14  Tech_Shrimp  阅读(270)  评论(0编辑  收藏  举报