马哥学习笔记二十六——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