原理-->
在数据库层面,复制语句或者行,因为在数据库层面,故只有主服务器生成,并放到二进制日志里面,才能复制给从服务器.
目的-->
数据分布,进行读写分离,通过一主多从,实现主负责写,从负责写.
基 本步骤(主从)-->(若主节点已经运行一段时间,则首先要保证从节点内容和主节点一致,参考mysql之备份恢复)
主服务器:
创建具有复制权限的用户帐号-->
mysql>grant replication
slave,replication client on *.* to repluser@‘172.16.%.%‘
identified by ‘123456‘;
mysql>flush privileges;
mysql>flush privileges;
设置server-id-->防止循环复制
#vim /etc/my.cnf
server-id=100
server-id=100
启用二进制日志-->修改日志为绝对路径,以及日志格式
#vim /etc/my.cnf
log-bin=/mydata/data/mysql-bin
binlog_format=mixed
binlog_format=mixed
#sync-binlog=1
#innodb-flush-logs-at-trx-commit=1
从服务器:
启用中继日志-->(可选:关闭二进制日志,注释掉bin-log)
#vim /etc/my.cnf
#relay log
relay-log=/mydata/data/relay-bin
#Read only
read-only=1
#relay log
relay-log=/mydata/data/relay-bin
#Read only
read-only=1
#禁止从服务器自动启动
skip-slave-start=1
设置server-id-->
#vim /etc/my.cnf
server-id=200
server-id=200
启动复制线程-->设置连接属性,并启动(show slave
status;
查看从节点状态)
mysql>change master to
MASTER_HOST=‘192.168.1.1‘,MASTER_USER=‘repluser‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘mysql-bin.000009‘,MASTER_LOG_POS=107;
mysql>start slave;
mysql>start slave;
半同步模式(降低同步延迟问题)-->半同步模式需要插件支持,默认插件位置在/usr/local/mysql/lib/plugin
主服务器
mysql -uroot
#安装模块
mysql>install plugin rpl_semi_sync_master scname ‘semisync_master.so‘;
mysql>>set global rpl_semi_sync_master_enable=1;
#等待从节点响应,若在timeout期间没有响应,则主节点降级为异步
mysql>>set global rpl_semi_sync_master_timeout=1000;
#安装模块
mysql>install plugin rpl_semi_sync_master scname ‘semisync_master.so‘;
mysql>>set global rpl_semi_sync_master_enable=1;
#等待从节点响应,若在timeout期间没有响应,则主节点降级为异步
mysql>>set global rpl_semi_sync_master_timeout=1000;
从服务器
mysql>install plugin
rpl_semi_sync_slave scname ‘semisync_slave.so‘;
mysql>set global rpl_semi_sync_slave_enable=1;
mysql>set global rpl_semi_sync_slave_timeout=1000;
mysql>stop slave;
mysql>start slave;
mysql>set global rpl_semi_sync_slave_enable=1;
mysql>set global rpl_semi_sync_slave_timeout=1000;
mysql>stop slave;
mysql>start slave;
查看模块:mysql>show global status like
‘%semi%‘;