tips:
1、搞清楚主从复制和mysql集群的概念
2、主从复制从mysql_5.5 增加了新功能。(一下配置mysql 5.7.5)
3、方便管理主从复制的一些小工具
mysql-utilities、percona-toolkit
配置主从复制的基本步骤说明:
一、master
1、启用二进制日志
2、选择唯一 server-id
3、创建具有复制权限的用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'180.180.%.%' IDENTIFIED BY 'replpass';
这是授权给指定网段的用户,也可以指定特定的用户使用
二、slave
1、启用中继日志
2、选择唯一 server-id
3、连接至主服务器,并开始复制数据
CHANGE MASTER TO MASTER_HOST='180.180.3.10', MASTER_USER='repluser', MASTER_PASSWORD='replpass', MASTER_AUTO_POSITION=1;
注:这条语句不适合5.5以前的主从复制
三、其他事项
GTID主从复制参考文档:
http://www.it165.net/database/html/201405/6602.html
更清楚的文档(老版本的)
http://cwtea.blog.51cto.com/4500217/1243060
出现一下问题的问题参看文档:
Slave failed to initialize relay log info structure from the repository
http://blog.itpub.net/7607759/viewspace-719707/
mysql>reset slave;
四、主从复制常用的一些命令
master:
#授权用户
CHANGE MASTER TO
PURGE BINARY LOGS
PURGE {MASTER | BINARY} LOGS TO 'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'
用于删除在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。
参考文档:http://laowafang.blog.51cto.com/251518/790929
#重置主服务
SHOW BINARY LOGS
#主从同步检查
SHOW MASTER STATUS\G
slave:
#重置从服务
RESET SLAVE
# 显示连入主机的从机
SHOW SLAVE HOSTS
# 用于提供有关从属服务器线程的关键参数的信息
SHOW SLAVE STATUS
#开启io/sql 线程
START SLAVE
#分别开启io/sql 线程 (查看从服务的状态主要特别注意这个状态)其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。
START SLAVE IO_Thread
START SLAVE SQL_Thread
#关闭从服务
STOP SLAVE
ps:从服务器需要关闭写操作,在my.cnf中添加read-only=on 用show global variables like 'read%'在命令行查看
但是注意一点这个功能对具有super权限的用户不起作用。
五、从服务器过滤复制相关的指令
从服务器:
replicate_do_db
rpplicate_ignore_db
replicate_do_table
replicate_ignore_table
支持通配符: % _
replicate_wild_do_table=magedudb.tb%
replicate_wild_ignore_table
六、半同步复制
1、分别在主从节点上安装相关的插件
master> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
slave> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
2、启用半同步复制
在master上的配置文件中,添加
rpl_semi_sync_master_enabled=ON
在至少一个slave节点的配置文件中添加
rpl_semi_sync_slave_enabled=ON
而后重新启动mysql服务即可生效。
--------------------------------------------
mysql 主从复制配置文档说明
[mysqld]
#唯一标识ID
server-id=2
#二进制日志
log-bin=slave-bin
#二进制日志格式
binlog_format=row
#更新是否记入日志
log-slave-updates=true
#启用GTID模式,否则就是普通的复制架构
gtid-mode=on
#强制GTID的一直性
enforce-gtid-consistency=true
#主服务信息记录库=表/文件
master-info-repository=TABLE
#中继日志信息记录库
relay-log-info-repository=TABLE
#同步主库信息
sync-master-info=1
#从服务器的sql线程数,要和复制库书目相同
slave-parallel-workers=4
#32位校验码
binlog-checksum=CRC32
#主服校验
master-verify-checksum=1
#从服校验
slave-sql-verify-checksum=1
#二进制日志详细记录事件
binlog-rows-query-log_events=1
#提供复制报告端口
report-port=3306
#提供复制报告主机
report-host=180.180.3.11