马哥学习笔记二十六——MySQL主从复制

配置MySQL复制基本步骤:

  一、master

  1、启用二进制日志

  log-bin = master-bin

  log-bin-index = master-bin.index

  2、选择一个惟一server-id

  server-id = {0-2^32}

  3、创建具有复制权限的用户

  REPLICATION SLAVE

  REPLICATION CLIENT

  二、slave

  1、启用中继日志

  relay-log = relay-log

  relay-log-index =

  2、选择一个惟一的server-id

  server-id = {0-2^32}

  3、连接至主服务器,并开始复制数据;  

  mysql> CHANGER MASTER TO MASTER_HOST='',MASTER_PORT='',MASTER_LOG_FILE='',MASTER_LOG_POS='',MASTER_USER='',MASTER_PASSWORD='';

  mysql> START SLAVE;(启动线程)

  mysql> START SLAVE IO_Thread;  

  mysql> START SLAVE SQL_Thread;

复制线程:
  master: dump
  slave: IO_Thread, SQL_Thread

read-only = YES  

  在从服务器上设定,但对具有SUPER权限的用户不生效;

sync-binlog = ON  

  在主服务器上设定,用于事务安全;

设置半同步步骤:(插件在/usr/local/mysql/lib/plugin)

  在Master和Slave的mysql命令行运行如下代码:

  # On Master 

  mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; 

  mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1; 

  mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1000; 

  # On Slave 

  mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; 

  mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1; 

  mysql> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD; 

  在Master和Slave的my.cnf中编辑:

  # On Master 

  [mysqld] 

  rpl_semi_sync_master_enabled=1 

  rpl_semi_sync_master_timeout=1000 # 1 second 

  # On Slave 

  [mysqld] 

  rpl_semi_sync_slave_enabled=1 

  # 也可通过设置全局变量的方式来设置,如下:

  set global rpl_semi_sync_master_enabled=1

  # 取消加载插件

  mysql> UNINSTALL PLUGIN rpl_semi_sync_master;

  查看从服务器上的semi_sync是否开启:

  mysql> SHOW GLOBAL STATUS LIKE 'rpl_semi%';

  查看主服务器上的semi_sync是否开启,注意clients 变为1 ,证明主从半同步复制连接成功:

  mysql> SHOW GLOBAL STATUS LIKE 'rpl_semi%';

percona: percona-tools(主从复制管理工具)
  mattkit-tools

数据库复制过滤

  在主服务器上实现:

  binlog-do-db=mydb

  binlog-ignore-db=mysql

  从服务器:

  replicate_do_db

  rpplicate_ignore_db

  replicate_do_table

  replicate_ignore_table

  replicate_wild_do_table(可以通过通配符匹配)

  replicate_wild_ignore_table