namedhao 发表于 2018-10-2 06:32:28

第十七章 MySQL主从配置

  17.1 MySQL主从介绍
  MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的
  MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
  主从过程大致有3个步骤
  1)主将更改操作记录到binlog里
  2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里
  3)从根据relaylog里面的sql语句按顺序执行
  主上有一个log dump线程,用来和从的I/O线程传递binlog
  从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地。
  用处:1.数据的备份   2.读时从从机上读减轻主的压力。
  MySQL主从原理

  17.2准备工作
  192.168.188.128 (主)和129 (从)都安装mysql,并启动起来。
  17.3 配置主
  1)主从配置--主上操作
  修改my.cnf,增加server-id=128和log_bin=aminglinux1
  logbin 定义是前缀
  修改完配置文件后,启动或者重启mysqld服务
  /etc/init.d/mysqld restart
  ls/data/mysql/会发现生成了aminglinux1前缀的文件。
把mysql库备份并恢复成aming库,作为测试数据,使用密码aminglinux
  mysqldump -uroot -paminglinuxmysql > /tmp/mysql.sql
  创建一个新的库aming
  mysql -uroot-paminglinux   -e   "create database aming"
  j将备份的库恢复到aming
  mysql -uroot-paminglinuxaming < /tmp/mysql.sql
  进入数据库 aming, 创建用作同步数据的用户/密码
  mysql -uroot-paminglinuxaming

  grant replication slave on . to 'repl'@192.168.188.129>  锁一下表,不让他更改
  flush tables with read lock;
  记住它的位置和binlog
  show master status;
  再做几个备份
  mysqldump -uroot -paminglinuxmysql2 > /tmp/my2.sql
  mysqldump -uroot -paminglinuxzrlog> /tmp/zrlog.sql
  17.4配置从
  1)主从配置--从上操作
  安装mysql
  查看my.cnf,配置server-id=129,要求和主不一样,log_bin不用配置了。
  修改完配置文件后,启动或者重启mysqld服务
  把主上的/tmp/.sql拷贝到从上,
  scp 192.168.188.128:/tmp/sql   /tmp/
  输入密码
  登陆数据库,并创建aming库,zrlog库,my2库,然后
  mysql -uroot
  create database aming;
  create database zrlog;
  create database my2;
  quit
  做一个数据库的恢复
  mysql -urootaming< /tmp/mysql.sql
  mysql -urootzrlog < /tmp/zrlog.sql
  mysql -urootmy2 < /tmp/my2.sql
  现在 128和129上的数据库内容一致了。
  2)实现主从,在从上
  mysql -uroot
  stop slave;
  change master to master_host='192.168.188.128', master_user='repl', master_password='1122334455', master_log_file='aminglinux1.000002', master_log_pos=1326644;

  启动
  start slave;
  show slave status\G

  3)在主上操作
  mysql -uroot-paminglinuxaming
  还要到主上执行
unlock tables;
  17.5测试主从同步
  几个配置参数
  主服务器上
  binlog-do-db=      //仅同步指定的库
  binlog-ignore-db= //忽略指定库
  从服务器上
  replicate_do_db=
  replicate_ignore_db=
  replicate_do_table=
  replicate_ignore_table=
  replicate_wild_do_table=   //如aming.%, 支持通配符%
  replicate_wild_ignore_table=
  测试主从
  主上查看aming库的user表的行数,
  mysql -uroot -paminglinux aming
  select count() from user;
  truncate table user;   //清空表
  select   from user;   //为0,无内容
  到从上 查看aming库的user表的行数,
  mysql -uroot aming
  select count(*) from user;
  主上继续drop table user;
  从上查看user表
  发现从上也没有了user。

页: [1]
查看完整版本: 第十七章 MySQL主从配置